Merge commit 'u-boot/master' into for-1.3.1
[oweals/u-boot.git] / cpu / bf533 / init_sdram.S
index d92c877f593b5038a69faa478c26f3996d79b093..e1a8e2ff88e07e6440687e7d083d99b155b5808f 100644 (file)
@@ -28,17 +28,17 @@ init_sdram:
        [--SP] = (R7:0);
        [--SP] = (P5:0);
 
-#if (BFIN_BOOT_MODE == BF533_SPI_BOOT) 
+#if (BFIN_BOOT_MODE == BF533_SPI_BOOT)
        p0.h = hi(SPI_BAUD);
        p0.l = lo(SPI_BAUD);
        r0.l = CONFIG_SPI_BAUD;
        w[p0] = r0.l;
-    SSYNC;
+       SSYNC;
 #endif
 
        /*
-         * PLL_LOCKCNT - how many SCLK Cycles to delay while PLL becomes stable
-         */
+        * PLL_LOCKCNT - how many SCLK Cycles to delay while PLL becomes stable
+        */
        p0.h = hi(PLL_LOCKCNT);
        p0.l = lo(PLL_LOCKCNT);
        r0 = 0x300(Z);
@@ -46,43 +46,43 @@ init_sdram:
        ssync;
 
        /*
-         * Put SDRAM in self-refresh, incase anything is running
-         */
-        P2.H = hi(EBIU_SDGCTL);
-        P2.L = lo(EBIU_SDGCTL);
-        R0 = [P2];
-        BITSET (R0, 24);
-        [P2] = R0;
-        SSYNC;
-
-        /*
-         *  Set PLL_CTL with the value that we calculate in R0
-         *   - [14:09] = MSEL[5:0] : CLKIN / VCO multiplication factors
-         *   - [8]     = BYPASS    : BYPASS the PLL, run CLKIN into CCLK/SCLK
-         *   - [7]     = output delay (add 200ps of delay to mem signals)
-         *   - [6]     = input delay (add 200ps of input delay to mem signals)
-         *   - [5]     = PDWN      : 1=All Clocks off
-         *   - [3]     = STOPCK    : 1=Core Clock off
-         *   - [1]     = PLL_OFF   : 1=Disable Power to PLL
-         *   - [0]     = DF        : 1=Pass CLKIN/2 to PLL / 0=Pass CLKIN to PLL
-         *   all other bits set to zero
-         */
-
-        r0 = CONFIG_VCO_MULT & 63;      /* Load the VCO multiplier         */
-        r0 = r0 << 9;                   /* Shift it over,                  */
-        r1 = CONFIG_CLKIN_HALF;        /* Do we need to divide CLKIN by 2?*/
-        r0 = r1 | r0;
-        r1 = CONFIG_PLL_BYPASS;         /* Bypass the PLL?                 */
-        r1 = r1 << 8;                   /* Shift it over                   */
-        r0 = r1 | r0;                   /* add them all together           */
-
-        p0.h = hi(PLL_CTL);
-        p0.l = lo(PLL_CTL);             /* Load the address                */
-        cli r2;                         /* Disable interrupts              */
+        * Put SDRAM in self-refresh, incase anything is running
+        */
+       P2.H = hi(EBIU_SDGCTL);
+       P2.L = lo(EBIU_SDGCTL);
+       R0 = [P2];
+       BITSET (R0, 24);
+       [P2] = R0;
+       SSYNC;
+
+       /*
+        *  Set PLL_CTL with the value that we calculate in R0
+        *   - [14:09] = MSEL[5:0] : CLKIN / VCO multiplication factors
+        *   - [8]     = BYPASS    : BYPASS the PLL, run CLKIN into CCLK/SCLK
+        *   - [7]     = output delay (add 200ps of delay to mem signals)
+        *   - [6]     = input delay (add 200ps of input delay to mem signals)
+        *   - [5]     = PDWN      : 1=All Clocks off
+        *   - [3]     = STOPCK    : 1=Core Clock off
+        *   - [1]     = PLL_OFF   : 1=Disable Power to PLL
+        *   - [0]     = DF        : 1=Pass CLKIN/2 to PLL / 0=Pass CLKIN to PLL
+        *   all other bits set to zero
+        */
+
+       r0 = CONFIG_VCO_MULT & 63;      /* Load the VCO multiplier         */
+       r0 = r0 << 9;                   /* Shift it over,                  */
+       r1 = CONFIG_CLKIN_HALF;         /* Do we need to divide CLKIN by 2?*/
+       r0 = r1 | r0;
+       r1 = CONFIG_PLL_BYPASS;         /* Bypass the PLL?                 */
+       r1 = r1 << 8;                   /* Shift it over                   */
+       r0 = r1 | r0;                   /* add them all together           */
+
+       p0.h = hi(PLL_CTL);
+       p0.l = lo(PLL_CTL);             /* Load the address                */
+       cli r2;                         /* Disable interrupts              */
        ssync;
-        w[p0] = r0.l;                   /* Set the value                   */
-        idle;                           /* Wait for the PLL to stablize    */
-        sti r2;                         /* Enable interrupts               */
+       w[p0] = r0.l;                   /* Set the value                   */
+       idle;                           /* Wait for the PLL to stablize    */
+       sti r2;                         /* Enable interrupts               */
 
 check_again:
        p0.h = hi(PLL_STAT);
@@ -92,46 +92,46 @@ check_again:
        if ! CC jump check_again;
 
        /* Configure SCLK & CCLK Dividers */
-               r0 = (CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
-        p0.h = hi(PLL_DIV);
-        p0.l = lo(PLL_DIV);
-        w[p0] = r0.l;
-        ssync;
+       r0 = (CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
+       p0.h = hi(PLL_DIV);
+       p0.l = lo(PLL_DIV);
+       w[p0] = r0.l;
+       ssync;
 
        /*
-         * We now are running at speed, time to set the Async mem bank wait states
+        * We now are running at speed, time to set the Async mem bank wait states
         * This will speed up execution, since we are normally running from FLASH.
         */
 
-        p2.h = (EBIU_AMBCTL1 >> 16);
-        p2.l = (EBIU_AMBCTL1 & 0xFFFF);
-        r0.h = (AMBCTL1VAL >> 16);
-        r0.l = (AMBCTL1VAL & 0xFFFF);
-        [p2] = r0;
-        ssync;
-
-        p2.h = (EBIU_AMBCTL0 >> 16);
-        p2.l = (EBIU_AMBCTL0 & 0xFFFF);
-        r0.h = (AMBCTL0VAL >> 16);
-        r0.l = (AMBCTL0VAL & 0xFFFF);
-        [p2] = r0;
-        ssync;
-
-        p2.h = (EBIU_AMGCTL >> 16);
-        p2.l = (EBIU_AMGCTL & 0xffff);
-        r0 = AMGCTLVAL;
-        w[p2] = r0;
-        ssync;
+       p2.h = (EBIU_AMBCTL1 >> 16);
+       p2.l = (EBIU_AMBCTL1 & 0xFFFF);
+       r0.h = (AMBCTL1VAL >> 16);
+       r0.l = (AMBCTL1VAL & 0xFFFF);
+       [p2] = r0;
+       ssync;
+
+       p2.h = (EBIU_AMBCTL0 >> 16);
+       p2.l = (EBIU_AMBCTL0 & 0xFFFF);
+       r0.h = (AMBCTL0VAL >> 16);
+       r0.l = (AMBCTL0VAL & 0xFFFF);
+       [p2] = r0;
+       ssync;
+
+       p2.h = (EBIU_AMGCTL >> 16);
+       p2.l = (EBIU_AMGCTL & 0xffff);
+       r0 = AMGCTLVAL;
+       w[p2] = r0;
+       ssync;
 
        /*
         * Now, Initialize the SDRAM,
         * start with the SDRAM Refresh Rate Control Register
-         */
+        */
        p0.l = lo(EBIU_SDRRC);
-        p0.h = hi(EBIU_SDRRC);
-        r0 = mem_SDRRC;
-        w[p0] = r0.l;
-        ssync;
+       p0.h = hi(EBIU_SDRRC);
+       r0 = mem_SDRRC;
+       w[p0] = r0.l;
+       ssync;
 
        /*
         * SDRAM Memory Bank Control Register - bank specific parameters
@@ -147,29 +147,29 @@ check_again:
         * Disable self-refresh
         */
        P2.H = hi(EBIU_SDGCTL);
-        P2.L = lo(EBIU_SDGCTL);
-        R0 = [P2];
-        BITCLR (R0, 24);
+       P2.L = lo(EBIU_SDGCTL);
+       R0 = [P2];
+       BITCLR (R0, 24);
 
        /*
-         * Check if SDRAM is already powered up, if it is, enable self-refresh
-         */
+        * Check if SDRAM is already powered up, if it is, enable self-refresh
+        */
        p0.h = hi(EBIU_SDSTAT);
        p0.l = lo(EBIU_SDSTAT);
        r2.l = w[p0];
        cc = bittst(r2,3);
        if !cc jump skip;
-       NOP;
+       NOP;
        BITSET (R0, 23);
 skip:
        [P2] = R0;
-        SSYNC;
+       SSYNC;
 
        /* Write in the new value in the register */
-        R0.L = lo(mem_SDGCTL);
-        R0.H = hi(mem_SDGCTL);
+       R0.L = lo(mem_SDGCTL);
+       R0.H = hi(mem_SDGCTL);
        [P2] = R0;
-        SSYNC;
+       SSYNC;
        nop;
 
        (P5:0) = [SP++];
@@ -177,4 +177,3 @@ skip:
        RETS   = [SP++];
        ASTAT  = [SP++];
        RTS;
-