Hi Patrick On 6/6/22 16:04, Patrick Delaunay wrote: > Replace call to fdt_*() functions and access to gd->fdt_blob > with call to ofnode_*() functions to support a live tree. > > Tested-by: Marek Vasut <ma...@denx.de> > Signed-off-by: Patrick Delaunay <patrick.delau...@foss.st.com> > --- > > Changes in v1: > - previously sent as RFC, Tested by Marek > http://patchwork.ozlabs.org/project/uboot/list/?series=301157 > > board/dhelectronics/dh_stm32mp1/board.c | 38 +++++++++++-------------- > 1 file changed, 16 insertions(+), 22 deletions(-) > > diff --git a/board/dhelectronics/dh_stm32mp1/board.c > b/board/dhelectronics/dh_stm32mp1/board.c > index d407f0bf59..7a4c08cb7f 100644 > --- a/board/dhelectronics/dh_stm32mp1/board.c > +++ b/board/dhelectronics/dh_stm32mp1/board.c > @@ -9,7 +9,6 @@ > #include <net.h> > #include <asm/arch/stm32.h> > #include <asm/arch/sys_proto.h> > -#include <asm/global_data.h> > #include <asm/gpio.h> > #include <asm/io.h> > #include <bootm.h> > @@ -78,11 +77,6 @@ > #define SYSCFG_PMCSETR_ETH_SEL_RGMII BIT(21) > #define SYSCFG_PMCSETR_ETH_SEL_RMII BIT(23) > > -/* > - * Get a global data pointer > - */ > -DECLARE_GLOBAL_DATA_PTR; > - > #define KS_CCR 0x08 > #define KS_CCR_EEPROM BIT(9) > #define KS_BE0 BIT(12) > @@ -96,14 +90,15 @@ int setup_mac_address(void) > bool skip_eth0 = false; > bool skip_eth1 = false; > struct udevice *dev; > - int off, ret; > + int ret; > + ofnode node; > > ret = eth_env_get_enetaddr("ethaddr", enetaddr); > if (ret) /* ethaddr is already set */ > skip_eth0 = true; > > - off = fdt_path_offset(gd->fdt_blob, "ethernet1"); > - if (off < 0) { > + node = ofnode_path("ethernet1"); > + if (!ofnode_valid(node)) { > /* ethernet1 is not present in the system */ > skip_eth1 = true; > goto out_set_ethaddr; > @@ -116,7 +111,7 @@ int setup_mac_address(void) > goto out_set_ethaddr; > } > > - ret = fdt_node_check_compatible(gd->fdt_blob, off, "micrel,ks8851-mll"); > + ret = ofnode_device_is_compatible(node, "micrel,ks8851-mll"); > if (ret) > goto out_set_ethaddr; > > @@ -127,7 +122,7 @@ int setup_mac_address(void) > * MAC address. > */ > u32 reg, cider, ccr; > - reg = fdt_get_base_address(gd->fdt_blob, off); > + reg = ofnode_get_addr(node); > if (!reg) > goto out_set_ethaddr; > > @@ -149,13 +144,13 @@ out_set_ethaddr: > if (skip_eth0 && skip_eth1) > return 0; > > - off = fdt_path_offset(gd->fdt_blob, "eeprom0"); > - if (off < 0) { > + node = ofnode_path("eeprom0"); > + if (!ofnode_valid(node)) { > printf("%s: No eeprom0 path offset\n", __func__); > - return off; > + return -ENOENT; > } > > - ret = uclass_get_device_by_of_offset(UCLASS_I2C_EEPROM, off, &dev); > + ret = uclass_get_device_by_ofnode(UCLASS_I2C_EEPROM, node, &dev); > if (ret) { > printf("Cannot find EEPROM!\n"); > return ret; > @@ -191,8 +186,8 @@ int checkboard(void) > mode = "basic"; > > printf("Board: stm32mp1 in %s mode", mode); > - fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible", > - &fdt_compat_len); > + fdt_compat = ofnode_get_property(ofnode_root(), "compatible", > + &fdt_compat_len); > if (fdt_compat && fdt_compat_len) > printf(" (%s)", fdt_compat); > puts("\n"); > @@ -289,7 +284,7 @@ int board_fit_config_name_match(const char *name) > const char *compat; > char test[128]; > > - compat = fdt_getprop(gd->fdt_blob, 0, "compatible", NULL); > + compat = ofnode_get_property(ofnode_root(), "compatible", NULL); > > snprintf(test, sizeof(test), "%s_somrev%d_boardrev%d", > compat, somcode, brdcode); > @@ -604,14 +599,13 @@ static void board_init_fmc2(void) > #define STPMIC_NVM_BUCKS_VOUT_SHR_BUCK_OFFSET(n) ((((n) - 1) & 3) * 2) > static int board_get_regulator_buck3_nvm_uv_av96(int *uv) > { > - const void *fdt = gd->fdt_blob; > struct udevice *dev; > u8 bucks_vout = 0; > const char *prop; > int len, ret; > > /* Check whether this is Avenger96 board. */ > - prop = fdt_getprop(fdt, 0, "compatible", &len); > + prop = ofnode_get_property(ofnode_root(), "compatible", &len); > if (!prop || !len) > return -ENODEV; > > @@ -701,8 +695,8 @@ int board_late_init(void) > const void *fdt_compat; > int fdt_compat_len; > > - fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible", > - &fdt_compat_len); > + fdt_compat = ofnode_get_property(ofnode_root(), "compatible", > + &fdt_compat_len); > if (fdt_compat && fdt_compat_len) { > if (strncmp(fdt_compat, "st,", 3) != 0) > env_set("board_name", fdt_compat); Reviewed-by: Patrice Chotard <patrice.chot...@foss.st.com>
Thanks Patrice