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

Felix Radensky felix at embedded-sol.com
Thu Oct 23 08:27:27 CEST 2008


Hi,

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. */
                    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))

I'm not sure this is generic enough to go into mainline, but if yes,
I can try to submit a patch.

Felix.

Stefan Roese wrote:
> On Thursday 23 October 2008, Ayman M. El-Khashab wrote:
>   
>> On Wed, Oct 22, 2008 at 07:12:30AM +0200, Stefan Roese wrote:
>>     
>>> Yes, there have been issues with the "old" autocalibration code on some
>>> boards. That's one reason that AMCC provided a new version just a few
>>> weeks ago:
>>>       
>> Thanks Stefan,  I've got the hardware mostly working now.
>>     
>
> Great, congrats.
>
>   
>> The new 
>> calibration code did work once I got past another issue.  I'll try to
>> describe it here b/c It *might* be a bug, but I wasn't 100% sure.
>>
>> First, I am using registered ecc dimms which appears to be handled in
>> cpu/ppc4xx/44x_spd_ddr2.c
>>     
>
> I personally have never used a registered DIMM on the 4xx systems. And I don't 
> know of any systems that do. So it could be that this is still untested and 
> buggy.
>
>   
>> However, what I found by observing the registers 
>> with the abatron was that the SDRAM_MCOPT1_RDEN was not set for the
>> registered DIMM. Following the code, it looks like it should have been set
>> if "registered" was set, but it does not appear that it worked correctly. 
>> So of course we were off by 1/2.  I forced the bit in the mcopt1 variable
>> and that fixed all the problems.
>>     
>
> Good.
>
>   
>> Any thoughts or is there something I can try/contribute?
>>     
>
> Best would be if you could provide a proper patch to fix this problem. Please 
> see here:
>
> http://www.denx.de/wiki/view/U-Boot/Patches
>
> how this is done correctly.
>
> Best regards,
> Stefan
>
> =====================================================================
> DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
> HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
> Phone: +49-8142-66989-0 Fax: +49-8142-66989-80  Email: office at denx.de
> =====================================================================
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>   



More information about the U-Boot mailing list