[U-Boot] [PATCH v3 1/6] driver/ddr: Add support for setting timing in hws_topology_map

Stefan Roese sr at denx.de
Tue Jun 6 12:27:32 UTC 2017


Hi Marek,

On 06.06.2017 14:19, Marek Behún wrote:
> Damn, I forgot to add the change Stefan suggested in this commit. It
> will be included in next version of the patches.

I was just writing a small comment. ;)

Thanks,
Stefan

> On Tue,  6 Jun 2017 14:04:32 +0200
> Marek Behun <marek.behun at nic.cz> wrote:
> 
>> From: Marek Behún <marek.behun at nic.cz>
>>
>> The DDR3 training code for Marvell A38X currently computes 1t timing
>> when given board topology map of the Turris Omnia, but Omnia needs 2t.
>>
>> This patch adds support for enforcing the 2t timing in struct
>> hws_topology_map, through a new enum hws_timing, which can assume
>> following values:
>>    HWS_TIM_DEFAULT - default behaviour, compute whether to enable 2t
>>                      from the number of CSs
>>    HWS_TIM_1T      - enforce 1t
>>    HWS_TIM_2T      - enforce 2t
>>
>> This patch also sets all the board topology maps (db-88f6820-amc,
>> db-88f6820-gp, controlcenterdc and clearfog) to have timing set to
>> HWS_TIM_DEFAULT.
>>
>> Signed-off-by: Marek Behun <marek.behun at nic.cz>
>>
>> diff --git a/board/Marvell/db-88f6820-amc/db-88f6820-amc.c
>> b/board/Marvell/db-88f6820-amc/db-88f6820-amc.c index
>> cade99c8d7..40fa599865 100644 ---
>> a/board/Marvell/db-88f6820-amc/db-88f6820-amc.c +++
>> b/board/Marvell/db-88f6820-amc/db-88f6820-amc.c @@ -69,7 +69,8 @@
>> static struct hws_topology_map board_topology_map =
>> { MEM_4G,			/* mem_size */
>> DDR_FREQ_800,		/* frequency */ 0,
>> 0,			/* cas_l cas_wl */
>> -	    HWS_TEMP_LOW} },		/* temperature */
>> +	    HWS_TEMP_LOW,		/* temperature */
>> +	    HWS_TIM_DEFAULT} },		/* timing */
>>   	5,				/* Num Of Bus Per
>> Interface*/ BUS_MASK_32BIT			/* Busses mask */
>>   };
>> diff --git a/board/Marvell/db-88f6820-gp/db-88f6820-gp.c
>> b/board/Marvell/db-88f6820-gp/db-88f6820-gp.c index
>> e700781103..a1974cb4bd 100644 ---
>> a/board/Marvell/db-88f6820-gp/db-88f6820-gp.c +++
>> b/board/Marvell/db-88f6820-gp/db-88f6820-gp.c @@ -90,7 +90,8 @@
>> static struct hws_topology_map board_topology_map =
>> { MEM_4G,			/* mem_size */
>> DDR_FREQ_800,		/* frequency */ 0,
>> 0,			/* cas_l cas_wl */
>> -	    HWS_TEMP_LOW} },		/* temperature */
>> +	    HWS_TEMP_LOW,		/* temperature */
>> +	    HWS_TIM_DEFAULT} },		/* timing */
>>   	5,				/* Num Of Bus Per
>> Interface*/ BUS_MASK_32BIT			/* Busses mask */
>>   };
>> diff --git a/board/gdsys/a38x/controlcenterdc.c
>> b/board/gdsys/a38x/controlcenterdc.c index f0efb53447..32168d3576
>> 100644 --- a/board/gdsys/a38x/controlcenterdc.c
>> +++ b/board/gdsys/a38x/controlcenterdc.c
>> @@ -53,7 +53,8 @@ static struct hws_topology_map ddr_topology_map = {
>>   	    MEM_4G,			/* mem_size */
>>   	    DDR_FREQ_533,		/* frequency */
>>   	    0, 0,			/* cas_l cas_wl */
>> -	    HWS_TEMP_LOW} },		/* temperature */
>> +	    HWS_TEMP_LOW,		/* temperature */
>> +	    HWS_TIM_DEFAULT} },		/* timing */
>>   	5,				/* Num Of Bus Per
>> Interface*/ BUS_MASK_32BIT			/* Busses mask */
>>   };
>> diff --git a/board/solidrun/clearfog/clearfog.c
>> b/board/solidrun/clearfog/clearfog.c index 3a8257cac3..8906636f76
>> 100644 --- a/board/solidrun/clearfog/clearfog.c
>> +++ b/board/solidrun/clearfog/clearfog.c
>> @@ -83,7 +83,8 @@ static struct hws_topology_map board_topology_map =
>> { MEM_4G,			/* mem_size */
>>   	    DDR_FREQ_800,		/* frequency */
>>   	    0, 0,			/* cas_l cas_wl */
>> -	    HWS_TEMP_LOW} },		/* temperature */
>> +	    HWS_TEMP_LOW,		/* temperature */
>> +	    HWS_TIM_DEFAULT} },		/* timing */
>>   	5,				/* Num Of Bus Per
>> Interface*/ BUS_MASK_32BIT			/* Busses mask */
>>   };
>> diff --git a/drivers/ddr/marvell/a38x/ddr3_training.c
>> b/drivers/ddr/marvell/a38x/ddr3_training.c index
>> 7e0749fde3..c79db6af5a 100644 ---
>> a/drivers/ddr/marvell/a38x/ddr3_training.c +++
>> b/drivers/ddr/marvell/a38x/ddr3_training.c @@ -571,6 +571,11 @@ int
>> hws_ddr3_tip_init_controller(u32 dev_num, struct init_cntr_param
>> *init_cntr_ if (mode2_t != 0xff) {
>>   				t2t = mode2_t;
>> +			} else if (tm->interface_params[if_id].
>> +				   timing != HWS_TIM_DEFAULT) {
>> +				/* Board topology map is forcing
>> timing */
>> +				t2t = (tm->interface_params[if_id].
>> +				       timing == HWS_TIM_2T) ? 1 : 0;
>>   			} else {
>>   				/* calculate number of CS (per
>> interface) */ CHECK_STATUS(calc_cs_num
>> diff --git a/drivers/ddr/marvell/a38x/ddr_topology_def.h
>> b/drivers/ddr/marvell/a38x/ddr_topology_def.h index
>> f8894e828a..229c3a127a 100644 ---
>> a/drivers/ddr/marvell/a38x/ddr_topology_def.h +++
>> b/drivers/ddr/marvell/a38x/ddr_topology_def.h @@ -37,6 +37,12 @@ enum
>> hws_mem_size { MEM_SIZE_LAST
>>   };
>>   
>> +enum hws_timing {
>> +	HWS_TIM_DEFAULT,
>> +	HWS_TIM_1T,
>> +	HWS_TIM_2T
>> +};
>> +
>>   struct bus_params {
>>   	/* Chip Select (CS) bitmask (bits 0-CS0, bit 1- CS1 ...) */
>>   	u8 cs_bitmask;
>> @@ -84,6 +90,9 @@ struct if_params {
>>   
>>   	/* operation temperature */
>>   	enum hws_temperature interface_temp;
>> +
>> +	/* 2T vs 1T mode (by default computed from number of CSs) */
>> +	enum hws_timing timing;
>>   };
>>   
>>   struct hws_topology_map {
> 

Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de


More information about the U-Boot mailing list