xilinx: Add support for generic board detection
authorMichal Simek <michal.simek@xilinx.com>
Fri, 23 Jul 2021 07:59:59 +0000 (09:59 +0200)
committerMichal Simek <michal.simek@xilinx.com>
Thu, 26 Aug 2021 06:14:43 +0000 (08:14 +0200)
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>
board/xilinx/common/board.c

index 2aecb14..9287427 100644 (file)
@@ -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