[PATCH] arm: mach-k3: j721s2_init: Support less than max DDR controllers

Neha Malcom Francis n-francis at ti.com
Tue Jan 30 09:31:43 CET 2024


Hi Udit

On 30/01/24 13:53, Kumar, Udit wrote:
> 
> On 1/30/2024 1:11 PM, Neha Malcom Francis wrote:
>> The number of DDR controllers to be initialised and used should depend
>> on the device tree with the constraint of the maximum number of
>> controllers the device supports. Since J721S2 has multiple (2)
>> controllers, instead of hardcoding the number of probes, move to
>> depending on the device tree UCLASS_RAM nodes present.
>>
>> Signed-off-by: Neha Malcom Francis <n-francis at ti.com>
>> ---
>> Boot logs:
>> https://gist.github.com/nehamalcom/07fedf4aa173590214b5cef6e1688fa1
>>
>> This was also parallely proposed in [1] on the mailing-list for J784S4.
>>
>> [1] https://lore.kernel.org/all/3a7c817b-de29-463a-b4b6-d62c0df66ade@ti.com/
>>
>>   arch/arm/mach-k3/j721s2_init.c | 15 +++++++++++----
>>   1 file changed, 11 insertions(+), 4 deletions(-)
>>
>> diff --git a/arch/arm/mach-k3/j721s2_init.c b/arch/arm/mach-k3/j721s2_init.c
>> index fb0708bae1..ff21619506 100644
>> --- a/arch/arm/mach-k3/j721s2_init.c
>> +++ b/arch/arm/mach-k3/j721s2_init.c
>> @@ -213,10 +213,12 @@ bool check_rom_loaded_sysfw(void)
>>       return is_rom_loaded_sysfw(&bootdata);
>>   }
>> +#define J721S2_MAX_CONTROLLERS    2
>> +
>>   void k3_mem_init(void)
>>   {
>>       struct udevice *dev;
>> -    int ret;
>> +    int ret, ctr = 1;
>>       if (IS_ENABLED(CONFIG_K3_J721E_DDRSS)) {
>>           ret = uclass_get_device_by_name(UCLASS_MISC, "msmc", &dev);
>> @@ -227,9 +229,14 @@ void k3_mem_init(void)
>>           if (ret)
>>               panic("DRAM 0 init failed: %d\n", ret);
>> -        ret = uclass_next_device_err(&dev);
>> -        if (ret)
>> -            panic("DRAM 1 init failed: %d\n", ret);
> 
> Since there are two controllers only and you need to call uclass_get_device and 
> uclass_next_device_err
> 
> what about just checking error in above removed code, something like
> 
>          ret = uclass_next_device_err(&dev);
>          if (ret!=ENODEV)
>              panic("DRAM 1 init failed: %d\n", ret);
> 
> 

Yes... since AEP has only 2 controllers, this will suffice.

>> +        while (ctr < J721S2_MAX_CONTROLLERS) {
>> +            ret = uclass_next_device_err(&dev);
>> +            if (ret == -ENODEV)
>> +                break;
>> +            if (ret)
>> +                panic("DRAM %d init failed: %d\n", ctr, ret);
>> +            ctr++;
>> +        }
>>       }
>>       spl_enable_cache();
>>   }

-- 
Thanking You
Neha Malcom Francis


More information about the U-Boot mailing list