[U-Boot] [PATCH 1/9] ddr: altera: Configuring SDRAM extra cycles timing parameters

Marek Vasut marex at denx.de
Mon Sep 19 20:54:26 CEST 2016


On 09/19/2016 08:54 PM, Marek Vasut wrote:
> On 09/19/2016 12:11 PM, Chin Liang See wrote:
>> On Mon, 2016-09-19 at 16:22 +0200, Marek Vasut wrote:
>>> On 09/15/2016 09:26 AM, Chin Liang See wrote:
>>>> To enable configuration of sdr.ctrlcfg.extratime1 register which
>>>> enable
>>>> extra clocks for read to write command timing. This is critical to
>>>> ensure successful LPDDR2 interface
>>>>
>>>> Signed-off-by: Chin Liang See <clsee at altera.com>
>>>> ---
>>>>  arch/arm/mach-socfpga/include/mach/sdram.h | 8 +++++++-
>>>>  arch/arm/mach-socfpga/qts-filter.sh        | 2 +-
>>>>  arch/arm/mach-socfpga/wrap_sdram_config.c  | 9 +++++++++
>>>>  drivers/ddr/altera/sdram.c                 | 3 +++
>>>>  4 files changed, 20 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/arch/arm/mach-socfpga/include/mach/sdram.h
>>>> b/arch/arm/mach-socfpga/include/mach/sdram.h
>>>> index f12bb84..b11228f 100644
>>>> --- a/arch/arm/mach-socfpga/include/mach/sdram.h
>>>> +++ b/arch/arm/mach-socfpga/include/mach/sdram.h
>>>> @@ -30,7 +30,8 @@ struct socfpga_sdr_ctrl {
>>>>  	u32	dram_timing4;	/* 0x10 */
>>>>  	u32	lowpwr_timing;
>>>>  	u32	dram_odt;
>>>> -	u32	__padding0[4];
>>>> +	u32	extratime1;
>>>> +	u32	__padding0[3];
>>>>  	u32	dram_addrw;	/* 0x2c */
>>>>  	u32	dram_if_width;	/* 0x30 */
>>>>  	u32	dram_dev_width;
>>>> @@ -88,6 +89,7 @@ struct socfpga_sdram_config {
>>>>  	u32	dram_timing4;
>>>>  	u32	lowpwr_timing;
>>>>  	u32	dram_odt;
>>>> +	u32	extratime1;
>>>>  	u32	dram_addrw;
>>>>  	u32	dram_if_width;
>>>>  	u32	dram_dev_width;
>>>
>>> This seems to be changing the DRAM register layout, is this really
>>> correct and was this really tested on AV SoCDK ?
>>
>> Previously its treated unused register as default value is good enough.
>> But this not true anymore for LPDDR2 and we are exposing extratime1
>> register.
> 
> I mean the later one , which adds an entry and moves the other registers
> by 4 bytes.
> 
>> While for testing, I tested both CV and AV SoCDK few times as I also
>> worried even they are using DDR3 instead LPDDR2.
> 
> Yes, they do, it's in the documentation ;-)
> 
>>>
>>> [...]
>>>
>>>> diff --git a/arch/arm/mach-socfpga/wrap_sdram_config.c
>>>> b/arch/arm/mach-socfpga/wrap_sdram_config.c
>>>> index 31cc7de..d72f5e1 100644
>>>> --- a/arch/arm/mach-socfpga/wrap_sdram_config.c
>>>> +++ b/arch/arm/mach-socfpga/wrap_sdram_config.c
>>>> @@ -81,6 +81,15 @@ static const struct socfpga_sdram_config
>>>> sdram_config = {
>>>>  			SDR_CTRLGRP_DRAMODT_READ_LSB)		
>>>> 	|
>>>>  		(CONFIG_HPS_SDR_CTRLCFG_DRAMODT_WRITE <<
>>>>  			SDR_CTRLGRP_DRAMODT_WRITE_LSB),
>>>> +#ifdef
>>>> CONFIG_HPS_SDR_CTRLCFG_EXTRATIME1_CFG_EXTRA_CTL_CLK_RD_TO_WR
>>>
>>> How come this is not always defined for all boards ?
>>
>> This is to ensure it still works if users are using older SOCEDS
>> instead of SOCEDS 16.1. Besides that, this is only applicable for
>> LPDDR2. With that, patches #2 to #9 are not needed.

We don't support old crap :)

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list