]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/netstal/hcu5/sdram.c
Merge with git+ssh://gemini_vpn/home/wd/git/u-boot/master
[karo-tx-uboot.git] / board / netstal / hcu5 / sdram.c
index c5be8b9258d5ed841f364b84ff45e656d3c3157c..9ee9ab599b638624895e619bcd6f16387642b208 100644 (file)
@@ -36,7 +36,7 @@
 #include <asm/mmu.h>
 #include <ppc440.h>
 
-void sysLedSet(u32 value);
+void hcu_led_set(u32 value);
 void dcbz_area(u32 start_address, u32 num_bytes);
 void dflush(void);
 
@@ -136,7 +136,7 @@ static int wait_for_dlllock(void)
 void sdram_panic(const char *reason)
 {
        printf("\n%s: reason %s",  __FUNCTION__,  reason);
-       sysLedSet(0xff);
+       hcu_led_set(0xff);
        while (1) {
        }
        /* Never return */
@@ -195,6 +195,13 @@ static void program_ecc(unsigned long start_address, unsigned long num_bytes,
        mfsdram(DDR0_00, val);
        mtsdram(DDR0_00, val | DDR0_00_INT_ACK_ALL);
 
+       /*
+        * Clear possible errors
+        * If not done, then we could get an interrupt later on when
+        * exceptions are enabled.
+        */
+       mtspr(mcsr, mfspr(mcsr));
+
        /* Set 'int_mask' parameter to functionnal value */
        mfsdram(DDR0_01, val);
        mtsdram(DDR0_01, ((val &~ DDR0_01_INT_MASK_MASK) |
@@ -242,7 +249,6 @@ long int initdram (int board_type)
                sdram_panic(INVALID_HW_CONFIG);
                break;
        }
-       dram_size -= 16 * 1024 * 1024;
        mtsdram(DDR0_07, 0x00090100);
        /*
         * TCPD=200 cycles of clock input is required to lock the DLL.
@@ -281,6 +287,7 @@ long int initdram (int board_type)
        /*
         * Program tlb entries for this size (dynamic)
         */
+       remove_tlb(CFG_SDRAM_BASE, 256 << 20);
        program_tlb(0, 0, dram_size, MY_TLB_WORD2_I_ENABLE);
 
        /*
@@ -289,6 +296,8 @@ long int initdram (int board_type)
         */
        program_tlb(0, CFG_DDR_CACHED_ADDR, dram_size, 0);
 
+       /* Diminish RAM to initialize */
+       dram_size = dram_size - 32 ;
 #ifdef CONFIG_DDR_ECC
        /*
         * If ECC is enabled, initialize the parity bits.