[PATCH] RE: [U-Boot-Users] Missing 440GX SDRAM Controller reset?

David Adair dadair at ariodata.com
Wed Oct 27 20:00:22 CEST 2004


This patch allows the SDRAM initialization to succeed even with the
default out of box BDI2000 settings.  I suspect but have not proven
that it will also make warm-reboot operation more reliable.

diff -ru u-boot-1.1.1/cpu/ppc4xx/spd_sdram.c
u-boot-1.1.1-mod2/cpu/ppc4xx/spd_sdram.c
--- u-boot-1.1.1/cpu/ppc4xx/spd_sdram.c	2003-12-09 06:56:24.000000000 -0800
+++ u-boot-1.1.1-mod2/cpu/ppc4xx/spd_sdram.c	2004-10-27
10:04:02.000000000 -0700
@@ -772,6 +772,14 @@
      */
     check_volt_type(dimm_populated, iic0_dimm_addr, num_dimm_banks);
 
+#if defined(CONFIG_440_GX)
+    /*
+     * Soft-reset SDRAM controller.
+     */
+    mtsdr(sdr_srst, SDR0_SRST_DMC);
+    mtsdr(sdr_srst, 0x00000000);
+#endif
+
     /*
      * program 440GP SDRAM controller options (SDRAM0_CFG0)
      */
diff -ru u-boot-1.1.1/include/ppc440.h u-boot-1.1.1-mod2/include/ppc440.h
--- u-boot-1.1.1/include/ppc440.h	2004-03-13 16:07:34.000000000 -0800
+++ u-boot-1.1.1-mod2/include/ppc440.h	2004-10-27 10:02:36.000000000 -0700
@@ -893,6 +893,38 @@
 #define SDR0_MFR_ECS_MASK            0x10000000
 #define SDR0_MFR_ECS_INTERNAL        0x10000000
 
+#define SDR0_SRST_BGO                0x80000000
+#define SDR0_SRST_PLB                0x40000000
+#define SDR0_SRST_EBC                0x20000000
+#define SDR0_SRST_OPB                0x10000000
+#define SDR0_SRST_UART0              0x08000000
+#define SDR0_SRST_UART1              0x04000000
+#define SDR0_SRST_IIC0               0x02000000
+#define SDR0_SRST_IIC1               0x01000000
+#define SDR0_SRST_GPIO               0x00800000
+#define SDR0_SRST_GPT                0x00400000
+#define SDR0_SRST_DMC                0x00200000
+#define SDR0_SRST_PCI                0x00100000
+#define SDR0_SRST_EMAC0              0x00080000
+#define SDR0_SRST_EMAC1              0x00040000
+#define SDR0_SRST_CPM                0x00020000
+#define SDR0_SRST_IMU                0x00010000
+#define SDR0_SRST_UIC01              0x00008000
+#define SDR0_SRST_UICB2              0x00004000
+#define SDR0_SRST_SRAM               0x00002000
+#define SDR0_SRST_EBM                0x00001000
+#define SDR0_SRST_BGI                0x00000800
+#define SDR0_SRST_DMA                0x00000400
+#define SDR0_SRST_DMAC               0x00000200
+#define SDR0_SRST_MAL                0x00000100
+#define SDR0_SRST_ZMII               0x00000080
+#define SDR0_SRST_GPTR               0x00000040
+#define SDR0_SRST_PPM                0x00000020
+#define SDR0_SRST_EMAC2              0x00000010
+#define SDR0_SRST_EMAC3              0x00000008
+#define SDR0_SRST_RGMII              0x00000001
+
+
 
/*--------------------------------------------------------------------------
---+
 |  Clocking
 
+---------------------------------------------------------------------------
--*/



Disclaimer: I have problems running MAKEALL for a few platforms
that I believe to be unrelated to my change (e.g. they also happen
without the patch)

Configuring for AR405 board...
ppc_4xx-ld: u-boot: Not enough room for program headers (allocated 2, need
3)
ppc_4xx-ld: final link failed: Bad value
make: *** [u-boot] Error 1
ppc_4xx-size: u-boot: No such file or directory

> On Tue, 2004-10-26 at 16:29, David Adair wrote:
> > I have this same problem described a few months ago and 
> corrected by 
> > adding the SDRAM controller reset present in the PIBS code 
> but missing 
> > in rev 1.1.1 of u-boot e.g:
> > 
> >     mtsdr(sdr_srst, 0x00200000);
> >     mtsdr(sdr_srst, 0x00000000);
> > 
> > Was this left out on purpose?  It seems like if the BDI 
> configuration 
> > can cause a hang then a warm-reboot is going to be problematic too??
> > 
> > 
> Hmmm...  Must've been an oversight on my part.  I'm running 3 
> different 440GX boards (Ocotea included) w/o problem.
> 
> However, for completeness sake, please submit a patch.
> 
> Thanx
> 
> Travis Sawyer
> 
> 





More information about the U-Boot mailing list