Thanks Dave, I did that, got an autoreply. Thanks Again Poonam
-----Original Message----- From: Liu Dave-R63238 Sent: Tuesday, December 30, 2008 10:44 AM To: Aggrwal Poonam-B10812; u-boot-users@lists.sourceforge.net Subject: RE: [PATCH][u-boot-85xx]The 32bit errata fix for 8572 for DDR2 Aggrwal, The u-boot mail list is moved to u-b...@lists.denx.de, Please post the patch to there. Thanks, Dave > -----Original Message----- > From: Aggrwal Poonam-B10812 > Sent: 2008年12月30日 1:02 PM > To: u-boot-users@lists.sourceforge.net; Liu Dave-R63238 > Subject: [PATCH][u-boot-85xx]The 32bit errata fix for 8572 for DDR2 > > This patch fixes the fix for 8572 SOC errata for 32bit DDR2. > The earlier fix was trying to access the SDRAM_CFG register before > initializing it. > Now the SDRAM_CFG is initialized before. But the MEM_EN is set in the > end. > > Signed-off-by: Poonam Aggrwal-b10812 <b10...@freescale.net> > Acked-by: Dave Liu <dave...@freescale.com> > --- > cpu/mpc85xx/ddr-gen3.c | 9 ++++++++- > include/asm-ppc/fsl_ddr_sdram.h | 17 +++++++++++++++++ > 2 files changed, 25 insertions(+), 1 deletions(-) > > diff --git a/cpu/mpc85xx/ddr-gen3.c b/cpu/mpc85xx/ddr-gen3.c index > a2b45c5..b9cb4e6 100644 > --- a/cpu/mpc85xx/ddr-gen3.c > +++ b/cpu/mpc85xx/ddr-gen3.c > @@ -19,6 +19,7 @@ void fsl_ddr_set_memctl_regs(const > fsl_ddr_cfg_regs_t *regs, { > unsigned int i; > volatile ccsr_ddr_t *ddr; > + u32 temp_sdram_cfg; > > switch (ctrl_num) { > case 0: > @@ -78,6 +79,10 @@ void fsl_ddr_set_memctl_regs(const > fsl_ddr_cfg_regs_t *regs, > out_be32(&ddr->ddr_sdram_rcw_1, regs->ddr_sdram_rcw_1); > out_be32(&ddr->ddr_sdram_rcw_2, regs->ddr_sdram_rcw_2); > > + /* Do not enable the memory */ > + temp_sdram_cfg = in_be32(&ddr->sdram_cfg); > + temp_sdram_cfg &= ~(SDRAM_CFG_MEM_EN); > + out_be32(&ddr->sdram_cfg, temp_sdram_cfg); > /* > * For 8572 DDR1 erratum - DDR controller may enter illegal state > * when operatiing in 32-bit bus mode with 4-beat bursts, @@ -99,7 > +104,9 @@ void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs, > udelay(200); > asm volatile("sync;isync"); > > - out_be32(&ddr->sdram_cfg, regs->ddr_sdram_cfg); > + /* Let the controller go */ > + temp_sdram_cfg = in_be32(&ddr->sdram_cfg); > + out_be32(&ddr->sdram_cfg, temp_sdram_cfg | SDRAM_CFG_MEM_EN); > > /* Poll DDR_SDRAM_CFG_2[D_INIT] bit until auto-data init is done. > */ > while (in_be32(&ddr->sdram_cfg_2) & 0x10) { diff --git > a/include/asm-ppc/fsl_ddr_sdram.h b/include/asm-ppc/fsl_ddr_sdram.h > index b213af3..6e3b255 100644 > --- a/include/asm-ppc/fsl_ddr_sdram.h > +++ b/include/asm-ppc/fsl_ddr_sdram.h > @@ -51,6 +51,23 @@ typedef ddr3_spd_eeprom_t generic_spd_eeprom_t; > #define FSL_DDR_BANK_INTERLEAVING 0x2 > #define FSL_DDR_SUPERBANK_INTERLEAVING 0x3 > > +/* DDR_SDRAM_CFG - DDR SDRAM Control Configuration */ > +#define SDRAM_CFG_MEM_EN 0x80000000 > +#define SDRAM_CFG_SREN 0x40000000 > +#define SDRAM_CFG_ECC_EN 0x20000000 > +#define SDRAM_CFG_RD_EN 0x10000000 > +#define SDRAM_CFG_SDRAM_TYPE_DDR1 0x02000000 > +#define SDRAM_CFG_SDRAM_TYPE_DDR2 0x03000000 > +#define SDRAM_CFG_SDRAM_TYPE_MASK 0x07000000 > +#define SDRAM_CFG_SDRAM_TYPE_SHIFT 24 > +#define SDRAM_CFG_DYN_PWR 0x00200000 > +#define SDRAM_CFG_32_BE 0x00080000 > +#define SDRAM_CFG_8_BE 0x00040000 > +#define SDRAM_CFG_NCAP 0x00020000 > +#define SDRAM_CFG_2T_EN 0x00008000 > +#define SDRAM_CFG_BI 0x00000001 > + > /* Record of register values computed */ typedef struct > fsl_ddr_cfg_regs_s { > struct { > -- > 1.5.6.5 > > ------------------------------------------------------------------------------ _______________________________________________ U-Boot-Users mailing list U-Boot-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users