85xx/p1_p2_rdb: Added RevD board version support
authorPoonam Aggrwal <poonam.aggrwal@freescale.com>
Tue, 22 Jun 2010 07:20:46 +0000 (12:50 +0530)
committerWolfgang Denk <wd@denx.de>
Tue, 29 Jun 2010 21:03:39 +0000 (23:03 +0200)
- Also modified the code to use io accessors.

Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
Signed-off-by: Dipen Dudhat <dipen.dudhat@freescale.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
board/freescale/p1_p2_rdb/p1_p2_rdb.c

index 31cdf9ae4cbf2f7ae20e69a7085191a7383cff43..fae31f28c0584cb46b375a4580d3e8ac316be581 100644 (file)
@@ -54,6 +54,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define BOARDREV_MASK  0x10100000
 #define BOARDREV_B     0x10100000
 #define BOARDREV_C     0x00100000
+#define BOARDREV_D     0x00000000
 
 #define SYSCLK_66      66666666
 #define SYSCLK_50      50000000
@@ -64,7 +65,7 @@ unsigned long get_board_sys_clk(ulong dummy)
        volatile ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR);
        u32 val_gpdat, sysclk_gpio, board_rev_gpio;
 
-       val_gpdat = pgpio->gpdat;
+       val_gpdat = in_be32(&pgpio->gpdat);
        sysclk_gpio = val_gpdat & SYSCLK_MASK;
        board_rev_gpio = val_gpdat & BOARDREV_MASK;
        if (board_rev_gpio == BOARDREV_C) {
@@ -77,6 +78,11 @@ unsigned long get_board_sys_clk(ulong dummy)
                        return SYSCLK_66;
                else
                        return SYSCLK_50;
+       } else if (board_rev_gpio == BOARDREV_D) {
+               if(sysclk_gpio == 0)
+                       return SYSCLK_66;
+               else
+                       return SYSCLK_100;
        }
        return 0;
 }
@@ -100,12 +106,14 @@ int checkboard (void)
        char board_rev = 0;
        struct cpu_type *cpu;
 
-       val_gpdat = pgpio->gpdat;
+       val_gpdat = in_be32(&pgpio->gpdat);
        board_rev_gpio = val_gpdat & BOARDREV_MASK;
        if (board_rev_gpio == BOARDREV_C)
                board_rev = 'C';
        else if (board_rev_gpio == BOARDREV_B)
                board_rev = 'B';
+       else if (board_rev_gpio == BOARDREV_D)
+               board_rev = 'D';
        else
                panic ("Unexpected Board REV %x detected!!\n", board_rev_gpio);
 
@@ -159,6 +167,7 @@ int board_eth_init(bd_t *bis)
        volatile ccsr_gur_t *gur = (void *)(CONFIG_SYS_MPC85xx_GUTS_ADDR);
        int num = 0;
        char *tmp;
+       u32 pordevsr;
        unsigned int vscfw_addr;
 
 #ifdef CONFIG_TSEC1
@@ -171,7 +180,8 @@ int board_eth_init(bd_t *bis)
 #endif
 #ifdef CONFIG_TSEC3
        SET_STD_TSEC_INFO(tsec_info[num], 3);
-       if (!(gur->pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS))
+       pordevsr = in_be32(&gur->pordevsr);
+       if (!(pordevsr & MPC85xx_PORDEVSR_SGMII3_DIS))
                tsec_info[num].flags |= TSEC_SGMII;
        num++;
 #endif