[U-Boot] [PATCH 5/7] mips: ath79: Unify DDR initialization entry for ar934x

Marek Vasut marex at denx.de
Sun May 22 14:23:00 CEST 2016


On 05/22/2016 01:35 PM, Wills Wang wrote:
> 
> 
> On 05/22/2016 07:13 PM, Marek Vasut wrote:
>> On 05/22/2016 05:59 AM, Wills Wang wrote:
>>> Use function "ddr_init" for ath79 platform DDR initialization,
>>> and put it into mach/ddr.h
>>>
>>> Signed-off-by: Wills Wang <wills.wang at live.com>
>>> ---
>>>
>>>   arch/mips/mach-ath79/ar933x/ddr.c         | 2 +-
>>>   arch/mips/mach-ath79/ar934x/ddr.c         | 2 +-
>>>   arch/mips/mach-ath79/include/mach/ath79.h | 1 -
>>>   arch/mips/mach-ath79/include/mach/ddr.h   | 2 +-
>>>   arch/mips/mach-ath79/qca953x/ddr.c        | 2 +-
>>>   board/qca/ap121/ap121.c                   | 2 +-
>>>   board/qca/ap143/ap143.c                   | 2 +-
>>>   board/tplink/wdr4300/wdr4300.c            | 2 +-
>>>   8 files changed, 7 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/arch/mips/mach-ath79/ar933x/ddr.c
>>> b/arch/mips/mach-ath79/ar933x/ddr.c
>>> index 84e1cfa..b5940cb 100644
>>> --- a/arch/mips/mach-ath79/ar933x/ddr.c
>>> +++ b/arch/mips/mach-ath79/ar933x/ddr.c
>>> @@ -103,7 +103,7 @@ DECLARE_GLOBAL_DATA_PTR;
>>>   #define DDR_TAP_VAL0            0x08
>>>   #define DDR_TAP_VAL1            0x09
>>>   -void ddr_init(void)
>>> +void ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 bus_mhz)
>> Call it ar933x_ddr_init() here
>>
>>>   {
>>>       void __iomem *regs;
>>>       u32 val;
>>> diff --git a/arch/mips/mach-ath79/ar934x/ddr.c
>>> b/arch/mips/mach-ath79/ar934x/ddr.c
>>> index 2ebb89b..c467fb2 100644
>>> --- a/arch/mips/mach-ath79/ar934x/ddr.c
>>> +++ b/arch/mips/mach-ath79/ar934x/ddr.c
>>> @@ -35,7 +35,7 @@ static const struct ar934x_mem_config
>>> ar934x_mem_config[] = {
>>>       [AR934X_DDR2]  = { 0xc7d48cd0, 0x9dd0e6a8, 0x33, 0, 0x10012 },
>>>   };
>>>   -void ar934x_ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const
>>> u16 ahb_mhz)
>>> +void ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 bus_mhz)
>> Keep this one. If you want to have ddr_init() as a universal function,
>> that's fine. But consider the situation where you want to have a single
>> u-boot binary for multiple ar9xxx . In that case, you would need all of
>> those different ar9xxx_ddr_init() functions and you'd need some
>> universal function (ath79_ddr_init() ?) which would in turn call the
>> right ar9xxx_ddr_init() .
> You mean like this:
> 
> void ath79_ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16
> bus_mhz)
> {
> 
>     if (soc_is_ar933x())
>         ar933x_ddr_init(cpu_mhz, ddr_mhz, bus_mhz);
>     else if (soc_is_ar934x())
>         ar934x_ddr_init(cpu_mhz, ddr_mhz, bus_mhz);
>     ...

Yes, very much like that.

soc_is_foo() might need tweaking so the compiled would be able to
optimize out unavailable branches (in case support for that family is
not available).


[...]

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list