Merge branch 'master' of git://www.denx.de/git/u-boot-mpc86xx
authorWolfgang Denk <wd@denx.de>
Thu, 14 Feb 2008 23:26:52 +0000 (00:26 +0100)
committerWolfgang Denk <wd@denx.de>
Thu, 14 Feb 2008 23:26:52 +0000 (00:26 +0100)
Conflicts:

common/cmd_reginfo.c

Signed-off-by: Wolfgang Denk <wd@denx.de>
1  2 
common/cmd_reginfo.c
cpu/mpc86xx/start.S

diff --combined common/cmd_reginfo.c
@@@ -31,6 -31,8 +31,8 @@@
  #include <mpc5xx.h>
  #elif defined (CONFIG_MPC5200)
  #include <mpc5xxx.h>
+ #elif defined (CONFIG_MPC86xx)
+ extern void mpc86xx_reginfo(void);
  #endif
  
  int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                *(volatile ulong*)MPC5XXX_SDRAM_CS0CFG);
        printf ("\tSDRAMCS1: %08X\n",
                *(volatile ulong*)MPC5XXX_SDRAM_CS1CFG);
 -#endif /* CONFIG_MPC86xx */
+ #elif defined(CONFIG_MPC86xx)
+       mpc86xx_reginfo();
- #endif /* CONFIG_MPC5200 */
 +
 +#elif defined(CONFIG_BLACKFIN)
 +      puts("\nSystem Configuration registers\n");
 +
 +      puts("\nPLL Registers\n");
 +      printf("\tPLL_DIV:   0x%04x   PLL_CTL:      0x%04x\n",
 +              bfin_read_PLL_DIV(), bfin_read_PLL_CTL());
 +      printf("\tPLL_STAT:  0x%04x   PLL_LOCKCNT:  0x%04x\n",
 +              bfin_read_PLL_STAT(), bfin_read_PLL_LOCKCNT());
 +      printf("\tVR_CTL:    0x%04x\n", bfin_read_VR_CTL());
 +
 +      puts("\nEBIU AMC Registers\n");
 +      printf("\tEBIU_AMGCTL:   0x%04x\n", bfin_read_EBIU_AMGCTL());
 +      printf("\tEBIU_AMBCTL0:  0x%08x   EBIU_AMBCTL1:  0x%08x\n",
 +              bfin_read_EBIU_AMBCTL0(), bfin_read_EBIU_AMBCTL1());
 +# ifdef EBIU_MODE
 +      printf("\tEBIU_MBSCTL:   0x%08x   EBIU_ARBSTAT:  0x%08x\n",
 +              bfin_read_EBIU_MBSCTL(), bfin_read_EBIU_ARBSTAT());
 +      printf("\tEBIU_MODE:     0x%08x   EBIU_FCTL:     0x%08x\n",
 +              bfin_read_EBIU_MODE(), bfin_read_EBIU_FCTL());
 +# endif
 +
 +# ifdef EBIU_RSTCTL
 +      puts("\nEBIU DDR Registers\n");
 +      printf("\tEBIU_DDRCTL0:  0x%08x   EBIU_DDRCTL1:  0x%08x\n",
 +              bfin_read_EBIU_DDRCTL0(), bfin_read_EBIU_DDRCTL1());
 +      printf("\tEBIU_DDRCTL2:  0x%08x   EBIU_DDRCTL3:  0x%08x\n",
 +              bfin_read_EBIU_DDRCTL2(), bfin_read_EBIU_DDRCTL3());
 +      printf("\tEBIU_DDRQUE:   0x%08x   EBIU_RSTCTL    0x%04x\n",
 +              bfin_read_EBIU_DDRQUE(), bfin_read_EBIU_RSTCTL());
 +      printf("\tEBIU_ERRADD:   0x%08x   EBIU_ERRMST:   0x%04x\n",
 +              bfin_read_EBIU_ERRADD(), bfin_read_EBIU_ERRMST());
 +# else
 +      puts("\nEBIU SDC Registers\n");
 +      printf("\tEBIU_SDRRC:   0x%04x   EBIU_SDBCTL:  0x%04x\n",
 +              bfin_read_EBIU_SDRRC(), bfin_read_EBIU_SDBCTL());
 +      printf("\tEBIU_SDSTAT:  0x%04x   EBIU_SDGCTL:  0x%08x\n",
 +              bfin_read_EBIU_SDSTAT(), bfin_read_EBIU_SDGCTL());
 +# endif
 +
++#endif /* CONFIG_BLACKFIN */
        return 0;
  }
  
   /**************************************************/
  
 -#if ( defined(CONFIG_8xx)   || defined(CONFIG_405GP) || \
 -      defined(CONFIG_405EP) || defined(CONFIG_MPC5200) || \
 -      defined(CONFIG_MPC86xx)) && \
 -    defined(CONFIG_CMD_REGINFO)
 -
 +#if defined(CONFIG_CMD_REGINFO)
  U_BOOT_CMD(
        reginfo,        2,      1,      do_reginfo,
        "reginfo - print register information\n",
diff --combined cpu/mpc86xx/start.S
@@@ -235,17 -235,8 +235,8 @@@ in_flash
        bl      enable_ext_addr
  
        /* setup the bats */
-       bl      setup_bats
-       sync
- #if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
-       /* setup ccsrbar */
-       bl      setup_ccsrbar
- #endif
+       bl      early_bats
  
-       /* setup the law entries */
-       bl      law_entry
-       sync
        /*
         * Cache must be enabled here for stack-in-cache trick.
         * This means we need to enable the BATS.
  
        GET_GOT                 /* initialize GOT access        */
  
+       /* setup the rest of the bats */
+       bl      setup_bats
+       bl      clear_tlbs
+       sync
+ #if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
+       /* setup ccsrbar */
+       bl      setup_ccsrbar
+ #endif
        /* run low-level CPU init code     (from Flash) */
        bl      cpu_init_f
        sync
@@@ -359,6 -360,7 +360,7 @@@ invalidate_bats
  
  
        /* setup_bats - set them up to some initial state */
+       /* Skip any BATS setup in early_bats */
        .globl  setup_bats
  setup_bats:
  
        mtspr   DBAT4U, r3
        isync
  
-       /* IBAT 5 */
-       addis   r4, r0, CFG_IBAT5L@h
-       ori     r4, r4, CFG_IBAT5L@l
-       addis   r3, r0, CFG_IBAT5U@h
-       ori     r3, r3, CFG_IBAT5U@l
-       mtspr   IBAT5L, r4
-       mtspr   IBAT5U, r3
-       isync
-       /* DBAT 5 */
-       addis   r4, r0, CFG_DBAT5L@h
-       ori     r4, r4, CFG_DBAT5L@l
-       addis   r3, r0, CFG_DBAT5U@h
-       ori     r3, r3, CFG_DBAT5U@l
-       mtspr   DBAT5L, r4
-       mtspr   DBAT5U, r3
-       isync
-       /* IBAT 6 */
-       addis   r4, r0, CFG_IBAT6L@h
-       ori     r4, r4, CFG_IBAT6L@l
-       addis   r3, r0, CFG_IBAT6U@h
-       ori     r3, r3, CFG_IBAT6U@l
-       mtspr   IBAT6L, r4
-       mtspr   IBAT6U, r3
-       isync
-       /* DBAT 6 */
-       addis   r4, r0, CFG_DBAT6L@h
-       ori     r4, r4, CFG_DBAT6L@l
-       addis   r3, r0, CFG_DBAT6U@h
-       ori     r3, r3, CFG_DBAT6U@l
-       mtspr   DBAT6L, r4
-       mtspr   DBAT6U, r3
-       isync
        /* IBAT 7 */
        addis   r4, r0, CFG_IBAT7L@h
        ori     r4, r4, CFG_IBAT7L@l
        mtspr   DBAT7U, r3
        isync
  
- 1:
-       addis   r3, 0, 0x0000
-       addis   r5, 0, 0x4      /* upper bound of 0x00040000 for 7400/750 */
+       sync
+       blr
+ /*
+  * early_bats:
+  *
+  * Set up bats needed early on - this is usually the BAT for the
+  * stack-in-cache and the Flash
+  */
+       .globl  early_bats
+ early_bats:
+       /* IBAT 5 */
+       lis     r4, CFG_IBAT5L@h
+       ori     r4, r4, CFG_IBAT5L@l
+       lis     r3, CFG_IBAT5U@h
+       ori     r3, r3, CFG_IBAT5U@l
+       mtspr   IBAT5L, r4
+       mtspr   IBAT5U, r3
+       isync
+       /* DBAT 5 */
+       lis     r4, CFG_DBAT5L@h
+       ori     r4, r4, CFG_DBAT5L@l
+       lis     r3, CFG_DBAT5U@h
+       ori     r3, r3, CFG_DBAT5U@l
+       mtspr   DBAT5L, r4
+       mtspr   DBAT5U, r3
+       isync
+       /* IBAT 6 */
+       lis     r4, CFG_IBAT6L@h
+       ori     r4, r4, CFG_IBAT6L@l
+       lis     r3, CFG_IBAT6U@h
+       ori     r3, r3, CFG_IBAT6U@l
+       mtspr   IBAT6L, r4
+       mtspr   IBAT6U, r3
        isync
  
+       /* DBAT 6 */
+       lis     r4, CFG_DBAT6L@h
+       ori     r4, r4, CFG_DBAT6L@l
+       lis     r3, CFG_DBAT6U@h
+       ori     r3, r3, CFG_DBAT6U@l
+       mtspr   DBAT6L, r4
+       mtspr   DBAT6U, r3
+       isync
+       blr
+       .globl clear_tlbs
+ clear_tlbs:
+       addis   r3, 0, 0x0000
+       addis   r5, 0, 0x4
+       isync
  tlblp:
-       tlbie   r3
+       tlbie   r3
        sync
-       addi    r3, r3, 0x1000
-       cmp     0, 0, r3, r5
+       addi    r3, r3, 0x1000
+       cmp     0, 0, r3, r5
        blt tlblp
        blr
  
        .globl enable_addr_trans
@@@ -708,6 -721,50 +721,6 @@@ in32r
        blr
  
  /*
 - * Function:  ppcDcbf
 - * Description:       Data Cache block flush
 - * Input:     r3 = effective address
 - * Output:    none.
 - */
 -      .globl  ppcDcbf
 -ppcDcbf:
 -      dcbf    r0,r3
 -      blr
 -
 -/*
 - * Function:  ppcDcbi
 - * Description:       Data Cache block Invalidate
 - * Input:     r3 = effective address
 - * Output:    none.
 - */
 -      .globl  ppcDcbi
 -ppcDcbi:
 -      dcbi    r0,r3
 -      blr
 -
 -/*
 - * Function:  ppcDcbz
 - * Description:       Data Cache block zero.
 - * Input:     r3 = effective address
 - * Output:    none.
 - */
 -      .globl  ppcDcbz
 -ppcDcbz:
 -      dcbz    r0,r3
 -      blr
 -
 -/*
 - * Function:  ppcSync
 - * Description:       Processor Synchronize
 - * Input:     none.
 - * Output:    none.
 - */
 -      .globl  ppcSync
 -ppcSync:
 -      sync
 -      blr
 -
 -/*
   * void relocate_code (addr_sp, gd, addr_moni)
   *
   * This "function" does not return, instead it continues in RAM
@@@ -723,7 -780,7 +736,7 @@@ relocate_code
  
        mr      r1,  r3         /* Set new stack pointer                */
        mr      r9,  r4         /* Save copy of Global Data pointer     */
 -      mr      r29, r9         /* Save for DECLARE_GLOBAL_DATA_PTR     */
 +      mr      r2 r9         /* Save for DECLARE_GLOBAL_DATA_PTR     */
        mr      r10, r5         /* Save copy of Destination Address     */
  
        mr      r3,  r5                         /* Destination Address  */