Re: [PATCH 11/16] board: stm32pm1: add stm32mp13 board support
Hi, Accepted with minor modification. On 5/6/22 16:06, Patrick Delaunay wrote: Add stm32mp15x prefix to all STM32MP15x board specific function, this patch is a preliminary step for STM32MP13x support. This patch also add the RCC probe to avoid circular access with usbphyc probe as clk provider. Signed-off-by: Patrick Delaunay --- board/st/stm32mp1/stm32mp1.c | 27 ++- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index fff1880e5b..4ba7201ffb 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -547,8 +547,7 @@ static void sysconf_init(void) clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL); } -/* Fix to make I2C1 usable on DK2 for touchscreen usage in kernel */ -static int dk2_i2c1_fix(void) +static int board_stm32mp15x_dk2_init(void) { ofnode node; struct gpio_desc hdmi, audio; @@ -557,6 +556,7 @@ static int dk2_i2c1_fix(void) if (!IS_ENABLED(CONFIG_DM_REGULATOR)) return -ENODEV; + /* Fix to make I2C1 usable on DK2 for touchscreen usage in kernel */ node = ofnode_path("/soc/i2c@40012000/hdmi-transmitter@39"); if (!ofnode_valid(node)) { log_debug("no hdmi-transmitter@39 ?\n"); @@ -604,7 +604,7 @@ error: return ret; } -static bool board_is_dk2(void) +static bool board_is_stm32mp15x_dk2(void) { if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && of_machine_is_compatible("st,stm32mp157c-dk2")) @@ -613,7 +613,7 @@ static bool board_is_dk2(void) return false; } -static bool board_is_ev1(void) +static bool board_is_stm32mp15x_ev1(void) { if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && (of_machine_is_compatible("st,stm32mp157a-ev1") || @@ -637,7 +637,7 @@ U_BOOT_DRIVER(goodix) = { .of_match = goodix_ids, }; -static void board_ev1_init(void) +static void board_stm32mp15x_ev1_init(void) { struct udevice *dev; @@ -648,13 +648,22 @@ static void board_ev1_init(void) /* board dependent setup after realloc */ int board_init(void) { + struct udevice *dev; + int ret; + + /* probe RCC to avoid circular access with usbphyc probe as clk provider */ + if (IS_ENABLED(CONFIG_CLK_STM32MP13)) { + ret = uclass_get_device_by_driver(UCLASS_CLK, DM_DRIVER_GET(stm32mp1_clock), ); + log_debug("Clock init failed: %d\n", ret); + } + => this force RCC probed removed to avoid issue when RCC node is not present in device tree can be replaced by DM_FLAG_PROBE_AFTER_BIND managed in RCC driver. board_key_check(); - if (board_is_ev1()) - board_ev1_init(); + if (board_is_stm32mp15x_ev1()) + board_stm32mp15x_ev1_init(); - if (board_is_dk2()) - dk2_i2c1_fix(); + if (board_is_stm32mp15x_dk2()) + board_stm32mp15x_dk2_init(); if (IS_ENABLED(CONFIG_DM_REGULATOR)) regulators_enable_boot_on(_DEBUG); Applied to u-boot-stm/next, thanks! Regards Patrick
Re: [PATCH 11/16] board: stm32pm1: add stm32mp13 board support
Hi Patrice On 5/20/22 09:02, Patrice CHOTARD wrote: Hi Patrick One typo and one remark below On 5/6/22 16:06, Patrick Delaunay wrote: Add stm32mp15x prefix to all STM32MP15x board specific function, this patch is a preliminary step for STM32MP13x support. This patch also add the RCC probe to avoid circular access with s/add/adds OK usbphyc probe as clk provider. Signed-off-by: Patrick Delaunay --- board/st/stm32mp1/stm32mp1.c | 27 ++- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index fff1880e5b..4ba7201ffb 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -547,8 +547,7 @@ static void sysconf_init(void) clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL); } [...] -static void board_ev1_init(void) +static void board_stm32mp15x_ev1_init(void) { struct udevice *dev; @@ -648,13 +648,22 @@ static void board_ev1_init(void) /* board dependent setup after realloc */ int board_init(void) { + struct udevice *dev; + int ret; + + /* probe RCC to avoid circular access with usbphyc probe as clk provider */ + if (IS_ENABLED(CONFIG_CLK_STM32MP13)) { + ret = uclass_get_device_by_driver(UCLASS_CLK, DM_DRIVER_GET(stm32mp1_clock), ); + log_debug("Clock init failed: %d\n", ret); I am wondering if usage of DM_FLAG_PROBE_AFTER_BIND in flag would avoid this above piece of code ? Yes, I think you are right => need to be tested when RCC clock driver and USBPHY clock will be upstreamed and then we will remove these lines + } + board_key_check(); - if (board_is_ev1()) - board_ev1_init(); + if (board_is_stm32mp15x_ev1()) + board_stm32mp15x_ev1_init(); - if (board_is_dk2()) - dk2_i2c1_fix(); + if (board_is_stm32mp15x_dk2()) + board_stm32mp15x_dk2_init(); if (IS_ENABLED(CONFIG_DM_REGULATOR)) regulators_enable_boot_on(_DEBUG); Regards Patrick
Re: [PATCH 11/16] board: stm32pm1: add stm32mp13 board support
Hi Patrick One typo and one remark below On 5/6/22 16:06, Patrick Delaunay wrote: > Add stm32mp15x prefix to all STM32MP15x board specific function, > this patch is a preliminary step for STM32MP13x support. > > This patch also add the RCC probe to avoid circular access with s/add/adds > usbphyc probe as clk provider. > > Signed-off-by: Patrick Delaunay > --- > > board/st/stm32mp1/stm32mp1.c | 27 ++- > 1 file changed, 18 insertions(+), 9 deletions(-) > > diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c > index fff1880e5b..4ba7201ffb 100644 > --- a/board/st/stm32mp1/stm32mp1.c > +++ b/board/st/stm32mp1/stm32mp1.c > @@ -547,8 +547,7 @@ static void sysconf_init(void) > clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL); > } > > -/* Fix to make I2C1 usable on DK2 for touchscreen usage in kernel */ > -static int dk2_i2c1_fix(void) > +static int board_stm32mp15x_dk2_init(void) > { > ofnode node; > struct gpio_desc hdmi, audio; > @@ -557,6 +556,7 @@ static int dk2_i2c1_fix(void) > if (!IS_ENABLED(CONFIG_DM_REGULATOR)) > return -ENODEV; > > + /* Fix to make I2C1 usable on DK2 for touchscreen usage in kernel */ > node = ofnode_path("/soc/i2c@40012000/hdmi-transmitter@39"); > if (!ofnode_valid(node)) { > log_debug("no hdmi-transmitter@39 ?\n"); > @@ -604,7 +604,7 @@ error: > return ret; > } > > -static bool board_is_dk2(void) > +static bool board_is_stm32mp15x_dk2(void) > { > if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && > of_machine_is_compatible("st,stm32mp157c-dk2")) > @@ -613,7 +613,7 @@ static bool board_is_dk2(void) > return false; > } > > -static bool board_is_ev1(void) > +static bool board_is_stm32mp15x_ev1(void) > { > if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && > (of_machine_is_compatible("st,stm32mp157a-ev1") || > @@ -637,7 +637,7 @@ U_BOOT_DRIVER(goodix) = { > .of_match = goodix_ids, > }; > > -static void board_ev1_init(void) > +static void board_stm32mp15x_ev1_init(void) > { > struct udevice *dev; > > @@ -648,13 +648,22 @@ static void board_ev1_init(void) > /* board dependent setup after realloc */ > int board_init(void) > { > + struct udevice *dev; > + int ret; > + > + /* probe RCC to avoid circular access with usbphyc probe as clk > provider */ > + if (IS_ENABLED(CONFIG_CLK_STM32MP13)) { > + ret = uclass_get_device_by_driver(UCLASS_CLK, > DM_DRIVER_GET(stm32mp1_clock), ); > + log_debug("Clock init failed: %d\n", ret); I am wondering if usage of DM_FLAG_PROBE_AFTER_BIND in flag would avoid this above piece of code ? > + } > + > board_key_check(); > > - if (board_is_ev1()) > - board_ev1_init(); > + if (board_is_stm32mp15x_ev1()) > + board_stm32mp15x_ev1_init(); > > - if (board_is_dk2()) > - dk2_i2c1_fix(); > + if (board_is_stm32mp15x_dk2()) > + board_stm32mp15x_dk2_init(); > > if (IS_ENABLED(CONFIG_DM_REGULATOR)) > regulators_enable_boot_on(_DEBUG);
[PATCH 11/16] board: stm32pm1: add stm32mp13 board support
Add stm32mp15x prefix to all STM32MP15x board specific function, this patch is a preliminary step for STM32MP13x support. This patch also add the RCC probe to avoid circular access with usbphyc probe as clk provider. Signed-off-by: Patrick Delaunay --- board/st/stm32mp1/stm32mp1.c | 27 ++- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/board/st/stm32mp1/stm32mp1.c b/board/st/stm32mp1/stm32mp1.c index fff1880e5b..4ba7201ffb 100644 --- a/board/st/stm32mp1/stm32mp1.c +++ b/board/st/stm32mp1/stm32mp1.c @@ -547,8 +547,7 @@ static void sysconf_init(void) clrbits_le32(syscfg + SYSCFG_CMPCR, SYSCFG_CMPCR_SW_CTRL); } -/* Fix to make I2C1 usable on DK2 for touchscreen usage in kernel */ -static int dk2_i2c1_fix(void) +static int board_stm32mp15x_dk2_init(void) { ofnode node; struct gpio_desc hdmi, audio; @@ -557,6 +556,7 @@ static int dk2_i2c1_fix(void) if (!IS_ENABLED(CONFIG_DM_REGULATOR)) return -ENODEV; + /* Fix to make I2C1 usable on DK2 for touchscreen usage in kernel */ node = ofnode_path("/soc/i2c@40012000/hdmi-transmitter@39"); if (!ofnode_valid(node)) { log_debug("no hdmi-transmitter@39 ?\n"); @@ -604,7 +604,7 @@ error: return ret; } -static bool board_is_dk2(void) +static bool board_is_stm32mp15x_dk2(void) { if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && of_machine_is_compatible("st,stm32mp157c-dk2")) @@ -613,7 +613,7 @@ static bool board_is_dk2(void) return false; } -static bool board_is_ev1(void) +static bool board_is_stm32mp15x_ev1(void) { if (CONFIG_IS_ENABLED(TARGET_ST_STM32MP15x) && (of_machine_is_compatible("st,stm32mp157a-ev1") || @@ -637,7 +637,7 @@ U_BOOT_DRIVER(goodix) = { .of_match = goodix_ids, }; -static void board_ev1_init(void) +static void board_stm32mp15x_ev1_init(void) { struct udevice *dev; @@ -648,13 +648,22 @@ static void board_ev1_init(void) /* board dependent setup after realloc */ int board_init(void) { + struct udevice *dev; + int ret; + + /* probe RCC to avoid circular access with usbphyc probe as clk provider */ + if (IS_ENABLED(CONFIG_CLK_STM32MP13)) { + ret = uclass_get_device_by_driver(UCLASS_CLK, DM_DRIVER_GET(stm32mp1_clock), ); + log_debug("Clock init failed: %d\n", ret); + } + board_key_check(); - if (board_is_ev1()) - board_ev1_init(); + if (board_is_stm32mp15x_ev1()) + board_stm32mp15x_ev1_init(); - if (board_is_dk2()) - dk2_i2c1_fix(); + if (board_is_stm32mp15x_dk2()) + board_stm32mp15x_dk2_init(); if (IS_ENABLED(CONFIG_DM_REGULATOR)) regulators_enable_boot_on(_DEBUG); -- 2.25.1