rename CFG_ENV macros to CONFIG_ENV
[platform/kernel/u-boot.git] / board / amcc / bamboo / flash.c
index 97a4b98..d004ed7 100644 (file)
@@ -50,15 +50,16 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS];       /* info for FLASH chips        */
 /*
  * Mark big flash bank (16 bit instead of 8 bit access) in address with bit 0
  */
-static unsigned long flash_addr_table[8][CFG_MAX_FLASH_BANKS] = {
+static unsigned long flash_addr_table[][CFG_MAX_FLASH_BANKS] = {
        {0x87800001, 0xFFF00000, 0xFFF80000}, /* 0:boot from small flash */
        {0x00000000, 0x00000000, 0x00000000}, /* 1:boot from pci 66      */
-       {0x00000000, 0x00000000, 0x00000000}, /* 2:boot from nand flash  */
-       {0x87800000, 0x87880000, 0xFF800001}, /* 3:boot from big flash 33*/
-       {0x87800000, 0x87880000, 0xFF800001}, /* 4:boot from big flash 66*/
+       {0x87800001, 0x00000000, 0x00000000}, /* 0:boot from nand flash  */
+       {0x87F00000, 0x87F80000, 0xFFC00001}, /* 3:boot from big flash 33*/
+       {0x87F00000, 0x87F80000, 0xFFC00001}, /* 4:boot from big flash 66*/
        {0x00000000, 0x00000000, 0x00000000}, /* 5:boot from             */
        {0x00000000, 0x00000000, 0x00000000}, /* 6:boot from pci 66      */
        {0x00000000, 0x00000000, 0x00000000}, /* 7:boot from             */
+       {0x87C00001, 0xFFF00000, 0xFFF80000}, /* 0:boot from small flash */
 };
 
 /*
@@ -117,6 +118,10 @@ unsigned long flash_init(void)
                        index = 2;
                        break;
                }
+       } else if (index == 0) {
+               if (in8(FPGA_SETTING_REG) & FPGA_SET_REG_OP_CODE_FLASH_ABOVE) {
+                       index = 8; /* sram below op code flash -> new index 8 */
+               }
        }
 
        DEBUGF("\n");
@@ -129,10 +134,10 @@ unsigned long flash_init(void)
                flash_info[i].size = 0;
 
                /* check whether the address is 0 */
-               if (flash_addr_table[index][i] == 0) {
+               if (flash_addr_table[index][i] == 0)
                        continue;
-               }
 
+               DEBUGF("Detection bank %d...\n", i);
                /* call flash_get_size() to initialize sector address */
                size_b[i] = flash_get_size((vu_long *) flash_addr_table[index][i],
                                   &flash_info[i]);
@@ -148,13 +153,13 @@ unsigned long flash_init(void)
                (void)flash_protect(FLAG_PROTECT_SET, CFG_MONITOR_BASE,
                                    CFG_MONITOR_BASE + CFG_MONITOR_LEN - 1,
                                    &flash_info[i]);
-#if defined(CFG_ENV_IS_IN_FLASH)
-               (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR,
-                                   CFG_ENV_ADDR + CFG_ENV_SECT_SIZE - 1,
+#if defined(CONFIG_ENV_IS_IN_FLASH)
+               (void)flash_protect(FLAG_PROTECT_SET, CONFIG_ENV_ADDR,
+                                   CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1,
                                    &flash_info[i]);
-#if defined(CFG_ENV_IS_IN_FLASH) && defined(CFG_ENV_ADDR_REDUND)
-               (void)flash_protect(FLAG_PROTECT_SET, CFG_ENV_ADDR_REDUND,
-                                   CFG_ENV_ADDR_REDUND + CFG_ENV_SECT_SIZE - 1,
+#if defined(CONFIG_ENV_IS_IN_FLASH) && defined(CONFIG_ENV_ADDR_REDUND)
+               (void)flash_protect(FLAG_PROTECT_SET, CONFIG_ENV_ADDR_REDUND,
+                                   CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1,
                                    &flash_info[i]);
 #endif
 #endif