[U-Boot] [U-Boot, 17/36] rockchip: sdram_common: add common dram_init_banksize

Kever Yang kever.yang at rock-chips.com
Mon Apr 2 02:40:24 UTC 2018



On 04/02/2018 05:50 AM, Philipp Tomsich wrote:
>
>
> On Tue, 27 Mar 2018, Kever Yang wrote:
>
>> dram_init_banksize() can be common used by all SoCs, move it into
>> sdram_common.c
>>
>> Signed-off-by: Kever Yang <kever.yang at rock-chips.com>
>> ---
>>
>> arch/arm/mach-rockchip/sdram_common.c | 63
>> ++++++++++++++++++++++++++++++++++-
>> 1 file changed, 62 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/arm/mach-rockchip/sdram_common.c
>> b/arch/arm/mach-rockchip/sdram_common.c
>> index 3a71f09..ff86096 100644
>> --- a/arch/arm/mach-rockchip/sdram_common.c
>> +++ b/arch/arm/mach-rockchip/sdram_common.c
>> @@ -21,13 +21,74 @@ struct ddr_param {
>>
>> #define PARAM_DRAM_INFO_OFFSET 0x2000000
>>
>> +#define TRUST_PARAMETER_OFFSET    (34 * 1024 * 1024)
>
> This isn't covered by what you commit message states as content for
> this patch.

Will add it.
>
>> +
>> +struct tos_parameter_t {
>> +    u32 version;
>> +    u32 checksum;
>> +    struct {
>> +        char name[8];
>> +        s64 phy_addr;
>> +        u32 size;
>> +        u32 flags;
>> +    } tee_mem;
>> +    struct {
>> +        char name[8];
>> +        s64 phy_addr;
>> +        u32 size;
>> +        u32 flags;
>> +    } drm_mem;
>> +    s64 reserve[8];
>> +};
>> +
>> +int dram_init_banksize(void)
>> +{
>> +    size_t top = min((unsigned long)(gd->ram_size +
>> CONFIG_SYS_SDRAM_BASE),
>> +             gd->ram_top);
>> +
>> +#ifdef CONFIG_ARM64
>> +    /* Reserve 0x200000 for ATF bl31 */
>> +    gd->bd->bi_dram[0].start = 0x200000;
>> +    gd->bd->bi_dram[0].size = top - gd->bd->bi_dram[0].start;
>
> This should only be done when preparing to start a
>     IH_OS_ARM_TRUSTED_FIRMWARE.

Yes, you are right, but ATF in ARM64 is not optional, it's mandatory, so
I don't think we need
a #if/#else here.
>
>> +#else
>> +#ifdef CONFIG_SPL_OPTEE
>
> I don't think that this CONFIG_SPL_OPTEE was what the comments in the
> OPTEE thread have arrived at... please check again.
>

Will update and use new MACRO, I leave it there because you have such a
sloooow response and then a looong time discussion.

Thanks,
- Kever
> Just as an unreleated comment/reminder: you still need to revise the
> other series as per the comments and final decision on how to
> implement it.
>
>> +    struct tos_parameter_t *tos_parameter;
>> +
>> +    tos_parameter = (struct tos_parameter_t *)(CONFIG_SYS_SDRAM_BASE +
>> +            TRUST_PARAMETER_OFFSET);
>> +
>> +    if (tos_parameter->tee_mem.flags == 1) {
>
> Please describe what this 'flags' member means and how it's encoded.
>
>> +        gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
>> +        gd->bd->bi_dram[0].size = tos_parameter->tee_mem.phy_addr
>> +                    - CONFIG_SYS_SDRAM_BASE;
>> +        gd->bd->bi_dram[1].start = tos_parameter->tee_mem.phy_addr +
>> +                    tos_parameter->tee_mem.size;
>> +        gd->bd->bi_dram[1].size = gd->bd->bi_dram[0].start
>> +                    + top - gd->bd->bi_dram[1].start;
>> +    } else {
>> +        gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
>> +        gd->bd->bi_dram[0].size = 0x8400000;
>> +        /* Reserve 32M for OPTEE with TA */
>> +        gd->bd->bi_dram[1].start = CONFIG_SYS_SDRAM_BASE
>> +                    + gd->bd->bi_dram[0].size + 0x2000000;
>> +        gd->bd->bi_dram[1].size = gd->bd->bi_dram[0].start
>> +                    + top - gd->bd->bi_dram[1].start;
>> +    }
>
> This should again only be done, when the appropriate IH_OS_* is entered.
>
>> +#else
>> +    gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
>> +    gd->bd->bi_dram[0].size = top - gd->bd->bi_dram[0].start;
>
> This should be the default (so you can remove the #if paths) once you
> make sure that the other paths are actually called for entering the
> particular IH_OS_* types.
>
>> +#endif
>> +#endif
>> +
>> +    return 0;
>> +}
>> +
>> size_t rockchip_sdram_size(phys_addr_t reg)
>> {
>>     u32 rank, col, bk, cs0_row, cs1_row, bw, row_3_4;
>>     size_t chipsize_mb = 0;
>>     size_t size_mb = 0;
>>     u32 ch;
>> -
>
> Ok, but not really needed (unless you want to do a separate 'cosmetic'
> or 'whitespace' patch.  Touching an unrelated function is usually a
> bad idea.
>
>>     u32 sys_reg = readl(reg);
>>     u32 ch_num = 1 + ((sys_reg >> SYS_REG_NUM_CH_SHIFT)
>>                & SYS_REG_NUM_CH_MASK);
>>
>




More information about the U-Boot mailing list