Re: [PATCH 11/16] board: stm32pm1: add stm32mp13 board support

2022-06-17 Thread Patrick DELAUNAY

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

2022-05-20 Thread Patrick DELAUNAY

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

2022-05-20 Thread Patrice CHOTARD
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

2022-05-06 Thread Patrick Delaunay
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