[PATCH v1 1/2] board: dhelectronics: stm32mp1: convert to livetree

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 marex@denx.de Signed-off-by: Patrick Delaunay patrick.delaunay@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);

Activate the live DT with CONFIG_OF_LIVE to reduce the DT parsing time.
Tested-by: Marek Vasut marex@denx.de Signed-off-by: Patrick Delaunay patrick.delaunay@foss.st.com ---
Changes in v1: - previously sent as RFC, Tested by Marek http://patchwork.ozlabs.org/project/uboot/list/?series=301157
configs/stm32mp15_dhcom_basic_defconfig | 1 + configs/stm32mp15_dhcor_basic_defconfig | 1 + 2 files changed, 2 insertions(+)
diff --git a/configs/stm32mp15_dhcom_basic_defconfig b/configs/stm32mp15_dhcom_basic_defconfig index ca3873c7e6..f91bc173d5 100644 --- a/configs/stm32mp15_dhcom_basic_defconfig +++ b/configs/stm32mp15_dhcom_basic_defconfig @@ -72,6 +72,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=nor0:256k(fsbl1),256k(fsbl2),1408k(uboot),64k( # CONFIG_SPL_DOS_PARTITION is not set # CONFIG_ISO_PARTITION is not set # CONFIG_SPL_PARTITION_UUIDS is not set +CONFIG_OF_LIVE=y CONFIG_OF_LIST="stm32mp15xx-dhcom-pdk2 stm32mp15xx-dhcom-drc02 stm32mp15xx-dhcom-picoitx" CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-names interrupts-extended interrupt-controller \#interrupt-cells interrupt-parent dmas dma-names assigned-clocks assigned-clock-rates assigned-clock-parents hwlocks" CONFIG_ENV_IS_IN_SPI_FLASH=y diff --git a/configs/stm32mp15_dhcor_basic_defconfig b/configs/stm32mp15_dhcor_basic_defconfig index 4e70566e3f..b19033bdaa 100644 --- a/configs/stm32mp15_dhcor_basic_defconfig +++ b/configs/stm32mp15_dhcor_basic_defconfig @@ -70,6 +70,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=nor0:256k(fsbl1),256k(fsbl2),1408k(uboot),64k( # CONFIG_SPL_DOS_PARTITION is not set # CONFIG_ISO_PARTITION is not set # CONFIG_SPL_PARTITION_UUIDS is not set +CONFIG_OF_LIVE=y CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-names interrupts-extended interrupt-controller \#interrupt-cells interrupt-parent dmas dma-names assigned-clocks assigned-clock-rates assigned-clock-parents hwlocks" CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_SYS_REDUNDAND_ENVIRONMENT=y

Hi PAtrick
On 6/6/22 16:04, Patrick Delaunay wrote:
Activate the live DT with CONFIG_OF_LIVE to reduce the DT parsing time.
Tested-by: Marek Vasut marex@denx.de Signed-off-by: Patrick Delaunay patrick.delaunay@foss.st.com
Changes in v1:
- previously sent as RFC, Tested by Marek http://patchwork.ozlabs.org/project/uboot/list/?series=301157
configs/stm32mp15_dhcom_basic_defconfig | 1 + configs/stm32mp15_dhcor_basic_defconfig | 1 + 2 files changed, 2 insertions(+)
diff --git a/configs/stm32mp15_dhcom_basic_defconfig b/configs/stm32mp15_dhcom_basic_defconfig index ca3873c7e6..f91bc173d5 100644 --- a/configs/stm32mp15_dhcom_basic_defconfig +++ b/configs/stm32mp15_dhcom_basic_defconfig @@ -72,6 +72,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=nor0:256k(fsbl1),256k(fsbl2),1408k(uboot),64k( # CONFIG_SPL_DOS_PARTITION is not set # CONFIG_ISO_PARTITION is not set # CONFIG_SPL_PARTITION_UUIDS is not set +CONFIG_OF_LIVE=y CONFIG_OF_LIST="stm32mp15xx-dhcom-pdk2 stm32mp15xx-dhcom-drc02 stm32mp15xx-dhcom-picoitx" CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-names interrupts-extended interrupt-controller \#interrupt-cells interrupt-parent dmas dma-names assigned-clocks assigned-clock-rates assigned-clock-parents hwlocks" CONFIG_ENV_IS_IN_SPI_FLASH=y diff --git a/configs/stm32mp15_dhcor_basic_defconfig b/configs/stm32mp15_dhcor_basic_defconfig index 4e70566e3f..b19033bdaa 100644 --- a/configs/stm32mp15_dhcor_basic_defconfig +++ b/configs/stm32mp15_dhcor_basic_defconfig @@ -70,6 +70,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=nor0:256k(fsbl1),256k(fsbl2),1408k(uboot),64k( # CONFIG_SPL_DOS_PARTITION is not set # CONFIG_ISO_PARTITION is not set # CONFIG_SPL_PARTITION_UUIDS is not set +CONFIG_OF_LIVE=y CONFIG_OF_SPL_REMOVE_PROPS="interrupts interrupt-names interrupts-extended interrupt-controller \#interrupt-cells interrupt-parent dmas dma-names assigned-clocks assigned-clock-rates assigned-clock-parents hwlocks" CONFIG_ENV_IS_IN_SPI_FLASH=y CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
Reviewed-by: Patrice Chotard patrice.chotard@foss.st.com
Thanks Patrice

Hi,
On 6/6/22 16:04, Patrick Delaunay wrote:
Activate the live DT with CONFIG_OF_LIVE to reduce the DT parsing time.
Tested-by: Marek Vasut marex@denx.de Signed-off-by: Patrick Delaunay patrick.delaunay@foss.st.com
Changes in v1:
previously sent as RFC, Tested by Marek http://patchwork.ozlabs.org/project/uboot/list/?series=301157
configs/stm32mp15_dhcom_basic_defconfig | 1 + configs/stm32mp15_dhcor_basic_defconfig | 1 + 2 files changed, 2 insertions(+)
Applied to u-boot-stm/next, thanks!
Regards Patrick

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 marex@denx.de Signed-off-by: Patrick Delaunay patrick.delaunay@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",
if (fdt_compat && fdt_compat_len) printf(" (%s)", fdt_compat); puts("\n");&fdt_compat_len);
@@ -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",
if (fdt_compat && fdt_compat_len) { if (strncmp(fdt_compat, "st,", 3) != 0) env_set("board_name", fdt_compat);&fdt_compat_len);
Reviewed-by: Patrice Chotard patrice.chotard@foss.st.com
Thanks Patrice

Hi,
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 marex@denx.de Signed-off-by: Patrick Delaunay patrick.delaunay@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(-)
Applied to u-boot-stm/next, thanks!
Regards Patrick
participants (3)
-
Patrice CHOTARD
-
Patrick DELAUNAY
-
Patrick Delaunay