[U-Boot] question about U-Boot's cpu/ppc4xx/44x_spd_ddr2.c
Adam Graham
agraham at amcc.com
Wed Jan 21 02:06:07 CET 2009
Stefan, Carolyn,
> -----Original Message-----
> From: Adam Graham
> Sent: Monday, January 19, 2009 6:41 PM
> To: Stefan Roese; u-boot at lists.denx.de
> Cc: carolyn.j.smith at tektronix.com; Adam Graham
> Subject: RE: [U-Boot] question about U-Boot's
> cpu/ppc4xx/44x_spd_ddr2.c
>
> Thanks Stefan for handling this and thank you Carolyn for
> finding this bug.
>
>
> > -----Original Message-----
> > From: Stefan Roese [mailto:sr at denx.de]
> > Sent: Monday, January 19, 2009 8:10 AM
> > To: u-boot at lists.denx.de
> > Cc: carolyn.j.smith at tektronix.com; Adam Graham
> > Subject: Re: [U-Boot] question about U-Boot's
> > cpu/ppc4xx/44x_spd_ddr2.c
> >
> > Hi Carolyn,
> >
> > On Thursday 15 January 2009, carolyn.j.smith at tektronix.com wrote:
> > > I have a question about some of the code in U-Boot's
> > > cpu/ppc4xx/44x_spd_ddr2.c, in particular the program_codt
> > function and
> > > these lines of code:
> > >
> > > mfsdram(SDRAM_CODT, codt);
> > > codt |= (SDRAM_CODT_IO_NMODE
> > > & (~SDRAM_CODT_DQS_SINGLE_END
> > > & ~SDRAM_CODT_CKSE_SINGLE_END
> > > & ~SDRAM_CODT_FEEBBACK_RCV_SINGLE_END
> > > & ~SDRAM_CODT_FEEBBACK_DRV_SINGLE_END));
> > >
> > > What is the intention of this code? As far as I can tell,
> all it is
> > > doing is or'ing SDRAM_CODT_IO_NMODE (= 0x00000001) into the codt
> > > variable and the
> > >
> > > & (~SDRAM_CODT_DQS_SINGLE_END
> > > & ~SDRAM_CODT_CKSE_SINGLE_END
> > > & ~SDRAM_CODT_FEEBBACK_RCV_SINGLE_END
> > > & ~SDRAM_CODT_FEEBBACK_DRV_SINGLE_END)
> > >
> > > part of it has no real effect.
> >
> > Good catch.
>
> Yes, good catch.
>
>
> >
> > > Was the intention to turn on the SDRAM_CODT_IO_NMODE bit
> > and turn off
> > > the SDRAM_CODT_DQS_SINGLE_END, SDRAM_CODT_CKSE_SINGLE_END,
> > > SDRAM_CODT_FEEBBACK_RCV_SINGLE_END and
> > > SDRAM_CODT_FEEBBACK_DRV_SINGLE_END
> > > bits in which case the code should be something like this?
> > >
> > > codt |= SDRAM_CODT_IO_NMODE;
> > >
> > > codt &= ~(SDRAM_CODT_DQS_SINGLE_END |
> > SDRAM_CODT_CKSE_SINGLE_END |
> > > SDRAM_CODT_FEEBBACK_RCV_SINGLE_END |
> > > SDRAM_CODT_FEEBBACK_DRV_SINGLE_END);
> >
> > Not being the original author of this code, I can only
> guess that this
> > is what this code *should* do. Please send a patch to fix this.
> >
>
> Yes, this is the intent of the code. Basically the intent is
> as Carolyn proposed which is to reset the bits for
> SDRAM_CODT_DQS_SINGLE_END, SDRAM_CODT_CKSE_SINGLE_END,
> SDRAM_CODT_FEEBBACK_RCV_SINGLE_END, and
> SDRAM_CODT_FEEBBACK_DRV_SINGLE_END, and then to set the bit
> for SDRAM_CODT_IO_NMODE. Putting this in 2 operations is the
> right thing to do, it is easier to read the code, and it
> conveys the intention.
>
> Your code above is the fix for a patch.
>
>
> > > Also the 460EX manual I have (revision 1.16 - November 17,
> > 2008) shows
> > > bits
> > > 29 and 30 of the CODT register as Reserved (in which case they
> > > shouldn't be
> > > modified) while U-Boot has them as
> > >
> > > #define SDRAM_CODT_FEEBBACK_RCV_SINGLE_END 0x00000004
> > > #define SDRAM_CODT_FEEBBACK_DRV_SINGLE_END 0x00000002
> > >
> > > Do I have an out-of-date manual or are they reserved only for the
> > > 460EX and not for other processors using this code?
> >
> > No, you seem to be correct here too. I couldn't find those
> defines in
> > the 460EX users manual (same version) or in the current
> 440SPe users
> > manual.
>
> It does appear that for the 460EX/GT SDRAM_CODT register bits
> 29 and 30 are documented as reserved. These bits are defined
> in the PPC405EX chip. I'll ask the PPC460EX/GT chip
> designers about these bits 29 and 30 and why they are defined
> in the PPC405EX and not the PPC460EX/GT and send a follow up
> email and we can then #ifdef the code appropriately. The
> PPC405EX and the PPC460EX/GT share a common IBM SDRAM
> controller core IP, and as such the code in the file
> 44x_spd_ddr2.c will apply to both chips.
It is in fact the case for all the AMCC 4xx SoC chips that have the IBM
SDRAM memory controller core IP, the SDRAM_CODT register, bits 29 and 30
are reserved bits. Thanks Carolyn for finding this issue. We will
update the 44x_spd_ddr2.c file and send out a patch shortly for this
SDRAM_CODT register bits 29-30 issue.
Best,
Adam
AMCC
>
> Best,
> Adam
> AMCC
>
>
> >
> > Perhaps somebody from AMCC could jump in here. Adam? Any ideas on
> > this?
> >
> > 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
> >
> =====================================================================
> >
More information about the U-Boot
mailing list