summaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorMichal Simek <michal.simek@xilinx.com>2021-07-23 10:59:59 +0300
committerMichal Simek <michal.simek@xilinx.com>2021-08-26 09:14:43 +0300
commit88232532728c91d69a1f5efb219f6cd7fc030461 (patch)
treee81e206ad5cfa74f99f7522405ac269516bf6f54 /board
parentb262863bf8881542b7fad73563b3d6827df3f4b7 (diff)
downloadu-boot-88232532728c91d69a1f5efb219f6cd7fc030461.tar.xz
xilinx: Add support for generic board detection
Add support for changing DT at run time. It is done via board_detection() which returns platform_id and platform_version which can be used via board_name_decode() to compose board_local_name string which corresponds with DT which is should be used. Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Diffstat (limited to 'board')
-rw-r--r--board/xilinx/common/board.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/board/xilinx/common/board.c b/board/xilinx/common/board.c
index 2aecb14d8e..9287427289 100644
--- a/board/xilinx/common/board.c
+++ b/board/xilinx/common/board.c
@@ -463,3 +463,34 @@ int print_cpuinfo(void)
return 0;
}
#endif
+
+#if CONFIG_IS_ENABLED(DTB_RESELECT)
+char * __maybe_unused __weak board_name_decode(void)
+{
+ return NULL;
+}
+
+bool __maybe_unused __weak board_detection(void)
+{
+ return false;
+}
+
+int embedded_dtb_select(void)
+{
+ if (board_detection()) {
+ char *board_local_name;
+
+ board_local_name = board_name_decode();
+ if (board_local_name) {
+ board_name = board_local_name;
+ debug("Detected name: %s\n", board_name);
+
+ /* Time to change DTB on fly */
+ /* Both ways should work here */
+ /* fdtdec_resetup(&rescan); */
+ fdtdec_setup();
+ }
+ }
+ return 0;
+}
+#endif