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

Wills Wang wills.wang at live.com
Sun May 22 13:35:30 CEST 2016



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);
     ...

}
>>   {
>>   	void __iomem *ddr_regs;
>>   	const struct ar934x_mem_config *memcfg;
>> diff --git a/arch/mips/mach-ath79/include/mach/ath79.h b/arch/mips/mach-ath79/include/mach/ath79.h
>> index 18d1e26..fdc1149 100644
>> --- a/arch/mips/mach-ath79/include/mach/ath79.h
>> +++ b/arch/mips/mach-ath79/include/mach/ath79.h
>> @@ -141,6 +141,5 @@ static inline int soc_is_qca956x(void)
>>   }
>>   
>>   void ar934x_pll_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 ahb_mhz);
>> -void ar934x_ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 ahb_mhz);
>>   
>>   #endif /* __ASM_MACH_ATH79_H */
>> diff --git a/arch/mips/mach-ath79/include/mach/ddr.h b/arch/mips/mach-ath79/include/mach/ddr.h
>> index 181179a..b6f46ce 100644
>> --- a/arch/mips/mach-ath79/include/mach/ddr.h
>> +++ b/arch/mips/mach-ath79/include/mach/ddr.h
>> @@ -7,7 +7,7 @@
>>   #ifndef __ASM_MACH_DDR_H
>>   #define __ASM_MACH_DDR_H
>>   
>> -void ddr_init(void);
>> +void ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 bus_mhz);
>>   void ddr_tap_tuning(void);
>>   
>>   #endif /* __ASM_MACH_DDR_H */
>> diff --git a/arch/mips/mach-ath79/qca953x/ddr.c b/arch/mips/mach-ath79/qca953x/ddr.c
>> index 41ad113..180e600 100644
>> --- a/arch/mips/mach-ath79/qca953x/ddr.c
>> +++ b/arch/mips/mach-ath79/qca953x/ddr.c
>> @@ -219,7 +219,7 @@ DECLARE_GLOBAL_DATA_PTR;
>>   #define DDR_TAP_MAGIC_VAL       0xaa55aa55
>>   #define DDR_TAP_MAX_VAL         0x40
>>   
>> -void ddr_init(void)
>> +void ddr_init(const u16 cpu_mhz, const u16 ddr_mhz, const u16 bus_mhz)
>>   {
>>   	void __iomem *regs;
>>   	u32 val;
>> diff --git a/board/qca/ap121/ap121.c b/board/qca/ap121/ap121.c
>> index d6c60fe..b0e1993 100644
>> --- a/board/qca/ap121/ap121.c
>> +++ b/board/qca/ap121/ap121.c
>> @@ -45,6 +45,6 @@ int board_early_init_f(void)
>>   #ifdef CONFIG_DEBUG_UART
>>   	debug_uart_init();
>>   #endif
>> -	ddr_init();
>> +	ddr_init(400, 400, 200);
>>   	return 0;
>>   }
>> diff --git a/board/qca/ap143/ap143.c b/board/qca/ap143/ap143.c
>> index 1572472..406c988 100644
>> --- a/board/qca/ap143/ap143.c
>> +++ b/board/qca/ap143/ap143.c
>> @@ -61,6 +61,6 @@ int board_early_init_f(void)
>>   #ifdef CONFIG_DEBUG_UART
>>   	debug_uart_init();
>>   #endif
>> -	ddr_init();
>> +	ddr_init(650, 400, 200);
>>   	return 0;
>>   }
>> diff --git a/board/tplink/wdr4300/wdr4300.c b/board/tplink/wdr4300/wdr4300.c
>> index 8382ce0..bff3938 100644
>> --- a/board/tplink/wdr4300/wdr4300.c
>> +++ b/board/tplink/wdr4300/wdr4300.c
>> @@ -64,7 +64,7 @@ int board_early_init_f(void)
>>   
>>   #ifndef CONFIG_SKIP_LOWLEVEL_INIT
>>   	ar934x_pll_init(560, 480, 240);
>> -	ar934x_ddr_init(560, 480, 240);
>> +	ddr_init(560, 480, 240);
>>   #endif
>>   
>>   	wdr4300_usb_start();
>>
>

-- 
Best Regards
Wills



More information about the U-Boot mailing list