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