[PATCH next RFC 5/5] ram: rk3399: fail DRAM init when pctl channel init fails instead of hanging

Kever Yang kever.yang at rock-chips.com
Fri Nov 8 04:19:09 CET 2024


Hi Quentin,

On 2024/11/6 01:21, Quentin Schulz wrote:
> From: Quentin Schulz <quentin.schulz at cherry.de>
>
> Instead of hanging via an infinite while loop, propagate the fail to the
> caller and let it handle the fail. For RK3399, this means that panic()
> will be called, (by default) resetting the CPU and giving another chance
> at doing a DRAM init.
>
> Signed-off-by: Quentin Schulz <quentin.schulz at cherry.de>
> ---
>   drivers/ram/rockchip/sdram_rk3399.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c
> index d953dda13cd3daa689fa362dc511c372db454064..591e1469afb25ba606d8f7e44f63e50905b4ab31 100644
> --- a/drivers/ram/rockchip/sdram_rk3399.c
> +++ b/drivers/ram/rockchip/sdram_rk3399.c
> @@ -817,8 +817,7 @@ static int pctl_start(struct dram_info *dram,
>   			if (count > 1000) {

Could you try with increase the timeout count from 1000 to 1000000?

Thanks,

- Kever

>   				printf("%s: Failed to init pctl channel 0\n",
>   				       __func__);
> -				while (1)
> -					;
> +				return -1;
>   			}
>   			udelay(1);
>   			count++;
> @@ -853,8 +852,7 @@ static int pctl_start(struct dram_info *dram,
>   			if (count > 1000) {
>   				printf("%s: Failed to init pctl channel 1\n",
>   				       __func__);
> -				while (1)
> -					;
> +				return -2;
>   			}
>   			udelay(1);
>   			count++;
>


More information about the U-Boot mailing list