Re: [PATCH v5 02/11] dm: Add support for handling old u-boot, dm- tags

2023-02-14 Thread Simon Glass
On 2/13/23 16:56, Simon Glass wrote:
> Add a CONFIG option to deal with this automatically, printing a warning
> when U-Boot starts up. This can be useful if the device tree comes from
> another project.
>
> We will maintain this through the 2023.07 release, providing 6 months
> for people to notice.
>
> Signed-off-by: Simon Glass 
> Version 4:

This line above shouldn't be there.

M

Applied to u-boot-dm/next, thanks!


Re: [PATCH v5 02/11] dm: Add support for handling old u-boot, dm- tags

2023-02-13 Thread Michal Simek




On 2/13/23 16:56, Simon Glass wrote:

Add a CONFIG option to deal with this automatically, printing a warning
when U-Boot starts up. This can be useful if the device tree comes from
another project.

We will maintain this through the 2023.07 release, providing 6 months
for people to notice.

Signed-off-by: Simon Glass 
Version 4:


This line above shouldn't be there.

M


[PATCH v5 02/11] dm: Add support for handling old u-boot,dm- tags

2023-02-13 Thread Simon Glass
Add a CONFIG option to deal with this automatically, printing a warning
when U-Boot starts up. This can be useful if the device tree comes from
another project.

We will maintain this through the 2023.07 release, providing 6 months
for people to notice.

Signed-off-by: Simon Glass 
Version 4:
Acked-by: Michal Simek 
---

Changes in v5:
- Move this patch earlier in the series and make it additive

Changes in v4:
- Add a way to support handling old u-boot,dm- tags

 common/board_r.c  |  7 +++
 drivers/core/ofnode.c | 12 
 dts/Kconfig   | 10 ++
 include/asm-generic/global_data.h |  4 
 scripts/Makefile.lib  | 23 +--
 5 files changed, 50 insertions(+), 6 deletions(-)

diff --git a/common/board_r.c b/common/board_r.c
index e45003353f7..6b4180b3ecd 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -569,6 +569,13 @@ static int dm_announce(void)
printf("Warning: Unexpected devicetree source (not from 
a prior stage)");
printf("Warning: U-Boot may not function properly\n");
}
+   if (IS_ENABLED(CONFIG_OF_TAG_MIGRATE) &&
+   (gd->flags & GD_FLG_OF_TAG_MIGRATE))
+   /*
+* U-Boot will silently fail to work after 2023.07 if
+* there are old tags present
+*/
+   printf("Warning: Device tree includes old 'u-boot,dm-' 
tags: please fix by 2023.07!\n");
}
 
return 0;
diff --git a/drivers/core/ofnode.c b/drivers/core/ofnode.c
index d08578e9c4f..5fdac2b6638 100644
--- a/drivers/core/ofnode.c
+++ b/drivers/core/ofnode.c
@@ -1330,6 +1330,18 @@ bool ofnode_pre_reloc(ofnode node)
ofnode_read_bool(node, "u-boot,dm-tpl"))
return true;
 
+   if (IS_ENABLED(CONFIG_OF_TAG_MIGRATE)) {
+   /* detect and handle old tags */
+   if (ofnode_read_bool(node, "u-boot,dm-pre-reloc") ||
+   ofnode_read_bool(node, "u-boot,dm-pre-proper") ||
+   ofnode_read_bool(node, "u-boot,dm-spl") ||
+   ofnode_read_bool(node, "u-boot,dm-tpl") ||
+   ofnode_read_bool(node, "u-boot,dm-vpl")) {
+   gd->flags |= GD_FLG_OF_TAG_MIGRATE;
+   return true;
+   }
+   }
+
return false;
 #endif
 }
diff --git a/dts/Kconfig b/dts/Kconfig
index 44cc6bf1f6f..deb865d4c28 100644
--- a/dts/Kconfig
+++ b/dts/Kconfig
@@ -342,6 +342,16 @@ config SPL_MULTI_DTB_FIT_USER_DEF_ADDR
   at compilation time. This is the address of this area. It must be
   aligned on 2-byte boundary.
 
+config OF_TAG_MIGRATE
+   bool "Ease migration from old device trees with u-boot,dm- tags"
+   default y
+   help
+ U-Boot moved over to use new tags to mark device tree nodes which need
+ to be processed in SPL, before relocation, etc. Enable this option to
+ detect old tags and handle them.
+
+ Note: This option will be removed after the 2023.07 release.
+
 config OF_SPL_REMOVE_PROPS
string "List of device tree properties to drop for SPL"
depends on SPL_OF_CONTROL
diff --git a/include/asm-generic/global_data.h 
b/include/asm-generic/global_data.h
index da17ac8cbc8..987fb66c17a 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -650,6 +650,10 @@ enum gd_flags {
 * @GD_FLG_FDT_CHANGED: Device tree change has been detected by tests
 */
GD_FLG_FDT_CHANGED = 0x10,
+   /**
+* @GD_FLG_OF_TAG_MIGRATE: Device tree has old u-boot,dm- tags
+*/
+   GD_FLG_OF_TAG_MIGRATE = 0x20,
 };
 
 #endif /* __ASSEMBLY__ */
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index ac45a884785..7b27224b5d4 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -585,24 +585,35 @@ cmd_mkimage = $(objtree)/tools/mkimage 
$(MKIMAGEFLAGS_$(@F)) -d $< $@ \
 # ---
 # Pass the original device tree file through fdtgrep twice. The first pass
 # removes any unwanted nodes (i.e. those which don't have the
-# 'u-boot,dm-pre-reloc' property and thus are not needed by SPL. The second
+# 'bootph-all' property and thus are not needed by SPL. The second
 # pass removes various unused properties from the remaining nodes.
 # The output is typically a much smaller device tree file.
+
+ifdef CONFIG_OF_TAG_MIGRATE
+# Support the old tags for a migration period
+migrate_tpl := -b u-boot,dm-pre-reloc -b u-boot,dm-tpl
+migrate_vpl := -b u-boot,dm-pre-reloc -b u-boot,dm-vpl
+migrate_spl := -b u-boot,dm-pre-reloc -b u-boot,dm-spl
+migrate_all := -P u-boot,dm-pre-reloc \
+   -P u-boot,dm-spl -P u-boot,dm-tpl -P u-boot,dm-vpl
+endif
+
 ifeq ($(CONFIG_VPL_BUILD),y)
-fdtgrep_props := -b