Merge branch 'master' of git://git.denx.de/u-boot-mmc
[platform/kernel/u-boot.git] / drivers / mtd / cfi_flash.c
index 0909fe7..91ddcb4 100644 (file)
@@ -1929,7 +1929,8 @@ ulong flash_get_size (phys_addr_t base, int banknum)
 
                /* Do manufacturer-specific fixups */
                switch (info->manufacturer_id) {
-               case 0x0001:
+               case 0x0001: /* AMD */
+               case 0x0037: /* AMIC */
                        flash_fixup_amd(info, &qry);
                        break;
                case 0x001f:
@@ -2085,17 +2086,59 @@ static void cfi_flash_set_config_reg(u32 base, u16 val)
 
 /*-----------------------------------------------------------------------
  */
-unsigned long flash_init (void)
+
+void flash_protect_default(void)
 {
-       unsigned long size = 0;
-       int i;
 #if defined(CONFIG_SYS_FLASH_AUTOPROTECT_LIST)
+       int i;
        struct apl_s {
                ulong start;
                ulong size;
        } apl[] = CONFIG_SYS_FLASH_AUTOPROTECT_LIST;
 #endif
 
+       /* Monitor protection ON by default */
+#if (CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE) && \
+       (!defined(CONFIG_MONITOR_IS_IN_RAM))
+       flash_protect(FLAG_PROTECT_SET,
+                      CONFIG_SYS_MONITOR_BASE,
+                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len  - 1,
+                      flash_get_info(CONFIG_SYS_MONITOR_BASE));
+#endif
+
+       /* Environment protection ON by default */
+#ifdef CONFIG_ENV_IS_IN_FLASH
+       flash_protect(FLAG_PROTECT_SET,
+                      CONFIG_ENV_ADDR,
+                      CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1,
+                      flash_get_info(CONFIG_ENV_ADDR));
+#endif
+
+       /* Redundant environment protection ON by default */
+#ifdef CONFIG_ENV_ADDR_REDUND
+       flash_protect(FLAG_PROTECT_SET,
+                      CONFIG_ENV_ADDR_REDUND,
+                      CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1,
+                      flash_get_info(CONFIG_ENV_ADDR_REDUND));
+#endif
+
+#if defined(CONFIG_SYS_FLASH_AUTOPROTECT_LIST)
+       for (i = 0; i < (sizeof(apl) / sizeof(struct apl_s)); i++) {
+               debug("autoprotecting from %08x to %08x\n",
+                     apl[i].start, apl[i].start + apl[i].size - 1);
+               flash_protect(FLAG_PROTECT_SET,
+                              apl[i].start,
+                              apl[i].start + apl[i].size - 1,
+                              flash_get_info(apl[i].start));
+       }
+#endif
+}
+
+unsigned long flash_init (void)
+{
+       unsigned long size = 0;
+       int i;
+
 #ifdef CONFIG_SYS_FLASH_PROTECTION
        /* read environment from EEPROM */
        char s[64];
@@ -2171,42 +2214,7 @@ unsigned long flash_init (void)
 #endif /* CONFIG_SYS_FLASH_PROTECTION */
        }
 
-       /* Monitor protection ON by default */
-#if (CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE) && \
-       (!defined(CONFIG_MONITOR_IS_IN_RAM))
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_SYS_MONITOR_BASE,
-                      CONFIG_SYS_MONITOR_BASE + monitor_flash_len  - 1,
-                      flash_get_info(CONFIG_SYS_MONITOR_BASE));
-#endif
-
-       /* Environment protection ON by default */
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR,
-                      CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE - 1,
-                      flash_get_info(CONFIG_ENV_ADDR));
-#endif
-
-       /* Redundant environment protection ON by default */
-#ifdef CONFIG_ENV_ADDR_REDUND
-       flash_protect (FLAG_PROTECT_SET,
-                      CONFIG_ENV_ADDR_REDUND,
-                      CONFIG_ENV_ADDR_REDUND + CONFIG_ENV_SECT_SIZE - 1,
-                      flash_get_info(CONFIG_ENV_ADDR_REDUND));
-#endif
-
-#if defined(CONFIG_SYS_FLASH_AUTOPROTECT_LIST)
-       for (i = 0; i < (sizeof(apl) / sizeof(struct apl_s)); i++) {
-               debug("autoprotecting from %08x to %08x\n",
-                     apl[i].start, apl[i].start + apl[i].size - 1);
-               flash_protect (FLAG_PROTECT_SET,
-                              apl[i].start,
-                              apl[i].start + apl[i].size - 1,
-                              flash_get_info(apl[i].start));
-       }
-#endif
-
+       flash_protect_default();
 #ifdef CONFIG_FLASH_CFI_MTD
        cfi_mtd_init();
 #endif