[PATCH v2 04/28] ram: rockchip: Compute ddr capacity based on grf split

Kever Yang kever.yang at rock-chips.com
Wed Sep 28 14:16:33 CEST 2022


On 2022/8/18 22:52, Jagan Teki wrote:
> DDR chip capacity is computed based on GRF split in some
> Rockchip SoC's like PX30 and RV1126.
>
> Add split argument in ddr print info so-that the respective
> ddr driver will pass the grf split.
>
> Signed-off-by: YouMin Chen <cym at rock-chips.com>
> Signed-off-by: Jagan Teki <jagan at edgeble.ai>
Reviewed-by: Kever Yang <kever.yang at rock-chips.com>

Thanks,
- Kever
> ---
> Changes for v2:
> - none
>
>   arch/arm/include/asm/arch-rockchip/sdram_common.h | 2 +-
>   drivers/ram/rockchip/sdram_common.c               | 6 ++++--
>   drivers/ram/rockchip/sdram_px30.c                 | 2 +-
>   drivers/ram/rockchip/sdram_rk3328.c               | 2 +-
>   drivers/ram/rockchip/sdram_rk3399.c               | 2 +-
>   5 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/include/asm/arch-rockchip/sdram_common.h b/arch/arm/include/asm/arch-rockchip/sdram_common.h
> index 5efa6e9445..a14b37cbc5 100644
> --- a/arch/arm/include/asm/arch-rockchip/sdram_common.h
> +++ b/arch/arm/include/asm/arch-rockchip/sdram_common.h
> @@ -116,7 +116,7 @@ struct sdram_base_params {
>   
>   void sdram_print_dram_type(unsigned char dramtype);
>   void sdram_print_ddr_info(struct sdram_cap_info *cap_info,
> -			  struct sdram_base_params *base);
> +			  struct sdram_base_params *base, u32 split);
>   void sdram_print_stride(unsigned int stride);
>   
>   void sdram_org_config(struct sdram_cap_info *cap_info,
> diff --git a/drivers/ram/rockchip/sdram_common.c b/drivers/ram/rockchip/sdram_common.c
> index b3e7421d08..1c3236746a 100644
> --- a/drivers/ram/rockchip/sdram_common.c
> +++ b/drivers/ram/rockchip/sdram_common.c
> @@ -36,7 +36,7 @@ void sdram_print_dram_type(unsigned char dramtype)
>   }
>   
>   void sdram_print_ddr_info(struct sdram_cap_info *cap_info,
> -			  struct sdram_base_params *base)
> +			  struct sdram_base_params *base, u32 split)
>   {
>   	u64 cap;
>   	u32 bg;
> @@ -83,6 +83,8 @@ void sdram_print_ddr_info(struct sdram_cap_info *cap_info,
>   	cap = sdram_get_cs_cap(cap_info, 3, base->dramtype);
>   	if (cap_info->row_3_4)
>   		cap = cap * 3 / 4;
> +	else if (split)
> +		cap = cap / 2 + (split << 24) / 2;
>   
>   	printascii(" Size=");
>   	printdec(cap >> 20);
> @@ -123,7 +125,7 @@ inline void sdram_print_dram_type(unsigned char dramtype)
>   }
>   
>   inline void sdram_print_ddr_info(struct sdram_cap_info *cap_info,
> -				 struct sdram_base_params *base)
> +				 struct sdram_base_params *base, u32 split)
>   {
>   }
>   
> diff --git a/drivers/ram/rockchip/sdram_px30.c b/drivers/ram/rockchip/sdram_px30.c
> index 357fe2432a..a003893538 100644
> --- a/drivers/ram/rockchip/sdram_px30.c
> +++ b/drivers/ram/rockchip/sdram_px30.c
> @@ -711,7 +711,7 @@ int sdram_init(void)
>   	if (ret)
>   		goto error;
>   
> -	sdram_print_ddr_info(&sdram_params->ch.cap_info, &sdram_params->base);
> +	sdram_print_ddr_info(&sdram_params->ch.cap_info, &sdram_params->base, 0);
>   
>   	printascii("out\n");
>   	return ret;
> diff --git a/drivers/ram/rockchip/sdram_rk3328.c b/drivers/ram/rockchip/sdram_rk3328.c
> index 9c6798f816..efe0049ead 100644
> --- a/drivers/ram/rockchip/sdram_rk3328.c
> +++ b/drivers/ram/rockchip/sdram_rk3328.c
> @@ -506,7 +506,7 @@ static int sdram_init_detect(struct dram_info *dram,
>   		writel(sys_reg3, &dram->grf->os_reg[3]);
>   	}
>   
> -	sdram_print_ddr_info(&sdram_params->ch.cap_info, &sdram_params->base);
> +	sdram_print_ddr_info(&sdram_params->ch.cap_info, &sdram_params->base, 0);
>   
>   	return 0;
>   }
> diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c
> index 0a88ee9f93..86f5c06583 100644
> --- a/drivers/ram/rockchip/sdram_rk3399.c
> +++ b/drivers/ram/rockchip/sdram_rk3399.c
> @@ -2983,7 +2983,7 @@ static int sdram_init(struct dram_info *dram,
>   			continue;
>   		}
>   
> -		sdram_print_ddr_info(cap_info, &params->base);
> +		sdram_print_ddr_info(cap_info, &params->base, 0);
>   		set_memory_map(chan, channel, params);
>   		cap_info->ddrconfig =
>   			calculate_ddrconfig(params, channel);


More information about the U-Boot mailing list