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

Patrick DELAUNAY patrick.delaunay at foss.st.com
Fri Jun 17 11:00:36 CEST 2022


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 <patrick.delaunay at foss.st.com>
> ---
>
>   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 at 40012000/hdmi-transmitter at 39");
>   	if (!ofnode_valid(node)) {
>   		log_debug("no hdmi-transmitter at 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), &dev);
> +		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



More information about the U-Boot mailing list