]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - cpu/mpc8220/cpu_init.c
GCC-4.x fixes: clean up global data pointer initialization for all boards.
[karo-tx-uboot.git] / cpu / mpc8220 / cpu_init.c
index 09b23ee14add5382c96428a826692d6c6068e6a5..3cf5f66a13006554524e95601569d557489a8803 100644 (file)
@@ -24,6 +24,8 @@
 #include <common.h>
 #include <mpc8220.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 /*
  * Breath some life into the CPU...
  *
@@ -32,8 +34,6 @@
  */
 void cpu_init_f (void)
 {
-       DECLARE_GLOBAL_DATA_PTR;
-
        volatile flexbus8220_t *flexbus = (volatile flexbus8220_t *) MMAP_FB;
        volatile pcfg8220_t *portcfg = (volatile pcfg8220_t *) MMAP_PCFG;
        volatile xlbarb8220_t *xlbarb = (volatile xlbarb8220_t *) MMAP_XLBARB;
@@ -49,13 +49,19 @@ void cpu_init_f (void)
        portcfg->pcfg1 = 0;
        portcfg->pcfg2 = 0;
        portcfg->pcfg3 = 0;
+       portcfg->pcfg2 = CFG_GP1_PORT2_CONFIG;
+       portcfg->pcfg3 = CFG_PCI_PORT3_CONFIG | CFG_GP2_PORT3_CONFIG;
 
        /*
         * Flexbus Controller: configure chip selects and enable them
         */
 #if defined (CFG_CS0_BASE)
        flexbus->csar0 = CFG_CS0_BASE;
+
+/* Sorcery-C can hang-up after CTRL reg initialization */
+#if defined (CFG_CS0_CTRL)
        flexbus->cscr0 = CFG_CS0_CTRL;
+#endif
        flexbus->csmr0 = ((CFG_CS0_MASK - 1) & 0xffff0000) | 1;
        __asm__ volatile ("sync");
 #endif
@@ -97,15 +103,15 @@ void cpu_init_f (void)
        /* This section of the code cannot place in cpu_init_r(),
           it will cause the system to hang */
        /* enable timebase */
-       xlbarb->config = 0x00002000;
-
        xlbarb->addrTenTimeOut = 0x1000;
        xlbarb->dataTenTimeOut = 0x1000;
        xlbarb->busActTimeOut = 0x2000;
 
+       xlbarb->config = 0x00002000;
+
        /* Master Priority Enable */
-       xlbarb->mastPriEn = 0x1f;
        xlbarb->mastPriority = 0;
+       xlbarb->mastPriEn = 0xff;
 }
 
 /*