[U-Boot] Hangs at relocation on 460EX Target

Felix Radensky felix at embedded-sol.com
Thu Oct 23 09:31:32 CEST 2008


Hi, Stefan

Stefan Roese wrote:
> Felix,
>
> On Thursday 23 October 2008, Felix Radensky wrote:
>   
>> I had the same problem with u-boot-1.3.4 on custom 460EX board with
>> registered SODIMM. The SPD code in 4xx_spd_ddr2.c (program_copt1())
>> checks two  SPD fields to decide whether DIMM is registered: DDRII DIMM
>> type (offset 20) and SDRAM module attributes (offset 21).
>>
>> In my case, the values in these fields do not match what code is looking
>> for.
>> See http://www.micron.com/products/spddetail.aspx?part=MT9HTF6472RHY-667F1
>> I had to modify the following peice in program_copt1() to make it work:
>>
>>             if (dimm_num == 0) {
>>                 if (dimm_populated[dimm_num] == SDRAM_DDR1) /* DDR1 type */
>>                     mcopt1 |= SDRAM_MCOPT1_DDR1_TYPE;
>>                 if (dimm_populated[dimm_num] == SDRAM_DDR2) /* DDR2 type */
>>                     mcopt1 |= SDRAM_MCOPT1_DDR2_TYPE;
>>                 if (registered == 1) { /* DDR2 always buffered */
>>                     /* TODO: what about above  comments ? */
>>                     mcopt1 |= SDRAM_MCOPT1_RDEN;
>>                     buf0 = TRUE;
>>                 } else {
>>                     /* TODO: the mask 0x02 doesn't match Samsung def for
>> byte 21. */
>>     
>
> So it seems already to be know that here is a problem.
>
>   
>>                     if ((attribute & 0x02) == 0x00) {
>>                         /* buffered not supported */
>>                         buf0 = FALSE;
>>                     } else {
>>                         mcopt1 |= SDRAM_MCOPT1_RDEN;
>>                         buf0 = TRUE;
>>                     }
>>                 }
>>             }
>>
>> I've changed
>>
>> if ((attribute & 0x02) == 0x00)
>>
>> to be
>>
>> if (((attribute & 0x02) == 0x00) && (attribute != 0x04))
>>     
>
> Why did you change it this way? Which DDR2 module are you using? And what's 
> the value of SPD register 21?
>
>   
My change causes the code to go into else branch and set SDRAM_MCOPT1_RDEN
(registered) bit. I'm using Micron 512M registered SODIMM. The value of 
SPD register
21 is 0x4. The full SPD spec is here:
http://www.micron.com/products/spddetail.aspx?part=MT9HTF6472RHY-667F1

Felix.



More information about the U-Boot mailing list