diff options
author | Poonam Aggrwal <poonam.aggrwal@freescale.com> | 2009-06-22 13:53:24 +0530 |
---|---|---|
committer | Justin Waters <justin.waters@timesys.com> | 2009-10-07 15:47:49 -0400 |
commit | c023c44922f54361a8e11321843b2292a55d84fc (patch) | |
tree | 4c2904ea4f17fd20b4544d73d95b6a6724ed7676 | |
parent | 3c2e9a056c7ba80126879c8acf1e57d59fc86174 (diff) |
* Following Bugs fixed(identified in Pre-alpha release). 1. DDR hang at 400 (Bug Id 3536) 2. Environment (Bug Ids 3577, 3578)
* SYSCLK changes for P2020RDB RevC
Signed-off-by: Poonam Aggrwal <poonam.aggrwal@freescale.com>
-rw-r--r-- | board/freescale/p10xx_p20xx_rdb/p10xx_p20xx_rdb.c | 64 | ||||
-rw-r--r-- | include/configs/P10XX_20XX_RDB.h | 38 |
2 files changed, 64 insertions, 38 deletions
diff --git a/board/freescale/p10xx_p20xx_rdb/p10xx_p20xx_rdb.c b/board/freescale/p10xx_p20xx_rdb/p10xx_p20xx_rdb.c index e9df145a34c..30848f587ef 100644 --- a/board/freescale/p10xx_p20xx_rdb/p10xx_p20xx_rdb.c +++ b/board/freescale/p10xx_p20xx_rdb/p10xx_p20xx_rdb.c @@ -47,10 +47,14 @@ extern void ddr_enable_ecc(unsigned int dram_size); #define USB_RST 0x08000000 #define SYSCLK_MASK 0x00200000 -#define BOARDREV_MASK 0x00100000 +#define BOARDREV_MASK 0x10100000 +#define BOARDREV_A 0x10000000 +#define BOARDREV_B 0x10100000 +#define BOARDREV_C 0x00100000 #define SYSCLK_66 66666666 #define SYSCLK_50 50000000 +#define SYSCLK_100 100000000 DECLARE_GLOBAL_DATA_PTR; phys_size_t fixed_sdram(void); @@ -58,13 +62,22 @@ phys_size_t fixed_sdram(void); unsigned long get_board_sys_clk(ulong dummy) { volatile ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR); - u32 val, sysclk; + u32 val, sysclk, temp; val = pgpio->gpdat; sysclk = val & SYSCLK_MASK; - if(sysclk == 0) - return SYSCLK_66; - else + temp = val & BOARDREV_MASK; + if (temp == BOARDREV_C) + if(sysclk == 0) + return SYSCLK_66; + else + return SYSCLK_100; + else if (temp == BOARDREV_B) + if(sysclk == 0) + return SYSCLK_66; + else + return SYSCLK_50; + else if (temp == BOARDREV_A) return SYSCLK_50; } @@ -107,7 +120,7 @@ int checkboard (void) unsigned long sysclk; u32 val, temp; volatile ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR); - char board_rev; + char board_rev = 0; /* Bringing the following peripherals out of reset via GPIOs * 0= reset and 1= out of reset @@ -124,13 +137,19 @@ int checkboard (void) val = pgpio->gpdat; temp = val & BOARDREV_MASK; - if(temp == 0) - board_rev = 'A'; - else + if (temp == BOARDREV_C) + board_rev = 'C'; + else if (temp == BOARDREV_B) board_rev = 'B'; + else if (temp == BOARDREV_A) + board_rev = 'A'; - printf ("Board: %sRDB Rev%c, System ID: 0x%02x, " - "System Version: 0x%02x\n", gd->cpu->name, board_rev, 0, 0); + if (board_rev == 0) + printf ("Unknown P2020RDB board \n"); + else + printf ("Board: %sRDB Rev%c, System ID: 0x%02x, " + "System Version: 0x%02x\n", gd->cpu->name, + board_rev, 0, 0); clrsetbits_be32(&pgpio->gpdat, USB_RST, BOARD_PERI_RST); @@ -179,6 +198,7 @@ phys_size_t fixed_sdram (void) u32 val, temp; volatile ccsr_gpio_t *pgpio = (void *)(CONFIG_SYS_MPC85xx_GPIO_ADDR); sys_info_t sysinfo; + char board_rev = 0; ddr->cs0_bnds = CONFIG_SYS_DDR_CS0_BNDS; ddr->cs0_config = CONFIG_SYS_DDR_CS0_CONFIG; @@ -195,10 +215,17 @@ phys_size_t fixed_sdram (void) temp = val & BOARDREV_MASK; get_sys_info(&sysinfo); - if(temp == 0) { + if (temp == BOARDREV_C) + board_rev = 'C'; + else if (temp == BOARDREV_B) + board_rev = 'B'; + else if (temp == BOARDREV_A) + board_rev = 'A'; + + printf("Configuring DDR for Board Rev%c, freq%d\n",\ + board_rev, sysinfo.freqDDRBus); + if(temp == BOARDREV_A) { /* Rev A board*/ - printf("configuring for Board REVA, freqDDR%d\n",\ - sysinfo.freqDDRBus); ddr->timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_REVA; ddr->timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_REVA; ddr->timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_REVA; @@ -213,8 +240,7 @@ phys_size_t fixed_sdram (void) ddr->sdram_cfg_2 = CONFIG_SYS_DDR_CONTROL2_REVA; } else if(sysinfo.freqDDRBus <= 400000000) { - printf("configuring for Board REVB, freqDDR%d\n",\ - sysinfo.freqDDRBus); + /* RevB and RevC boards */ ddr->timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_400_REVB; ddr->timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_400_REVB; ddr->timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_400_REVB; @@ -229,8 +255,6 @@ phys_size_t fixed_sdram (void) ddr->sdram_cfg_2 = CONFIG_SYS_DDR_CONTROL2_400_REVB; } else if(sysinfo.freqDDRBus <= 534000000) { - printf("configuring for Board REVB, freqDDR%d\n", \ - sysinfo.freqDDRBus); ddr->timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_533_REVB; ddr->timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_533_REVB; ddr->timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_533_REVB; @@ -245,8 +269,6 @@ phys_size_t fixed_sdram (void) ddr->sdram_cfg_2 = CONFIG_SYS_DDR_CONTROL2_533_REVB; } else if(sysinfo.freqDDRBus <= 667000000) { - printf("configuring for Board REVB, freqDDR%d\n",\ - sysinfo.freqDDRBus); ddr->timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_667_REVB; ddr->timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_667_REVB; ddr->timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_667_REVB; @@ -261,8 +283,6 @@ phys_size_t fixed_sdram (void) ddr->sdram_cfg_2 = CONFIG_SYS_DDR_CONTROL2_667_REVB; } else if(sysinfo.freqDDRBus <= 800000000) { - printf("configuring for Board REVB, freqDDR%d\n",\ - sysinfo.freqDDRBus); ddr->timing_cfg_3 = CONFIG_SYS_DDR_TIMING_3_800_REVB; ddr->timing_cfg_0 = CONFIG_SYS_DDR_TIMING_0_800_REVB; ddr->timing_cfg_1 = CONFIG_SYS_DDR_TIMING_1_800_REVB; diff --git a/include/configs/P10XX_20XX_RDB.h b/include/configs/P10XX_20XX_RDB.h index 3325fb0f9a2..c5b55d3ca38 100644 --- a/include/configs/P10XX_20XX_RDB.h +++ b/include/configs/P10XX_20XX_RDB.h @@ -156,7 +156,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); #define CONFIG_SYS_DDR_TIMING_3_400_REVB 0x00010000 #define CONFIG_SYS_DDR_TIMING_0_400_REVB 0x00260802 -#define CONFIG_SYS_DDR_TIMING_1_400_REVB 0x39352322 +#define CONFIG_SYS_DDR_TIMING_1_400_REVB 0x39355322 #define CONFIG_SYS_DDR_TIMING_2_400_REVB 0x1f9048ca #define CONFIG_SYS_DDR_TIMING_4_400_REVB 0x00000000 #define CONFIG_SYS_DDR_TIMING_5_400_REVB 0x00000000 @@ -656,8 +656,8 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); #define CONFIG_EXTRA_ENV_SETTINGS \ "netdev=eth0\0" \ "uboot=" MK_STR(CONFIG_UBOOTPATH) "\0" \ - "loadaddr=2000000\0" \ - "bootfile=uImage" \ + "loadaddr=1000000\0" \ + "bootfile=uImage\0" \ "tftpflash=tftpboot $loadaddr $uboot; " \ "protect off " MK_STR(TEXT_BASE) " +$filesize; " \ "erase " MK_STR(TEXT_BASE) " +$filesize; " \ @@ -689,25 +689,30 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); #define CONFIG_HDBOOT \ "setenv bootargs root=/dev/$bdev rw rootdelay=30 " \ "console=$consoledev,$baudrate $othbootargs;" \ - "bootm $norbootaddr - $norfdtaddr" + "usb start;" \ + "ext2load usb 0:1 $loadaddr /boot/$bootfile;" \ + "ext2load usb 0:1 $fdtaddr /boot/$fdtfile;" \ + "bootm $loadaddr - $fdtaddr" #define CONFIG_USB_FAT_BOOT \ "setenv bootargs root=/dev/ram rw " \ - "console=$consoledev,$baudrate $othbootargs;" \ - "fatload usb 0:1 $loadaddr $bootfile;" \ - "fatload usb 0:1 $fdtaddr $fdtfile;" \ - "fatload usb 0:1 $ramdiskaddr $ramdiskfile;" \ + "console=$consoledev,$baudrate $othbootargs " \ + "ramdisk_size=120000;" \ + "usb start;" \ + "fatload usb 0:2 $loadaddr $bootfile;" \ + "fatload usb 0:2 $fdtaddr $fdtfile;" \ + "fatload usb 0:2 $ramdiskaddr $ramdiskfile;" \ "bootm $loadaddr $ramdiskaddr $fdtaddr" -#if 0 -#undef CONFIG_USB_EXT2_BOOT \ +#define CONFIG_USB_EXT2_BOOT \ "setenv bootargs root=/dev/ram rw " \ - "console=$consoledev,$baudrate $othbootargs;" \ - "ext2load usb 0:1 $loadaddr $bootfile;" \ - "ext2load usb 0:1 $fdtaddr $fdtfile;" \ - "ext2load usb 0:1 $ramdiskaddr $ramdiskfile;" \ + "console=$consoledev,$baudrate $othbootargs " \ + "ramdisk_size=120000;" \ + "usb start;" \ + "ext2load usb 0:4 $loadaddr $bootfile;" \ + "ext2load usb 0:4 $fdtaddr $fdtfile;" \ + "ext2load usb 0:4 $ramdiskaddr $ramdiskfile;" \ "bootm $loadaddr $ramdiskaddr $fdtaddr" -#endif #define CONFIG_NORBOOT \ "setenv bootargs root=/dev/$jffs2nor rw " \ @@ -723,7 +728,8 @@ extern unsigned long get_board_sys_clk(unsigned long dummy); #define CONFIG_RAMBOOTCOMMAND \ "setenv bootargs root=/dev/ram rw " \ - "console=$consoledev,$baudrate $othbootargs;" \ + "console=$consoledev,$baudrate $othbootargs " \ + "ramdisk_size=120000;" \ "tftp $ramdiskaddr $ramdiskfile;" \ "tftp $loadaddr $bootfile;" \ "tftp $fdtaddr $fdtfile;" \ |