]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - board/esd/cpci405/flash.c
rename CFG_ macros to CONFIG_SYS
[people/ms/u-boot.git] / board / esd / cpci405 / flash.c
index 70f7de4f0839a2b0074979654d287f1a02c8d8ee..d535924f86fa1460cbe84b8c53e6081ca72f31a4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2001
+ * (C) Copyright 2001-2003
  * Stefan Roese, esd gmbh germany, stefan.roese@esd-electronics.com
  *
  * See file CREDITS for list of people who contributed to this
@@ -39,16 +39,34 @@ static void flash_get_offsets (ulong base, flash_info_t * info);
 /*-----------------------------------------------------------------------
  */
 
+unsigned long calc_size(unsigned long size)
+{
+       switch (size) {
+       case 1 << 20:
+               return 0;
+       case 2 << 20:
+               return 1;
+       case 4 << 20:
+               return 2;
+       case 8 << 20:
+               return 3;
+       case 16 << 20:
+               return 4;
+       default:
+               return 0;
+       }
+}
+
+
 unsigned long flash_init (void)
 {
        unsigned long size_b0, size_b1;
        int i;
        uint pbcr;
        unsigned long base_b0, base_b1;
-       int size_val = 0;
 
        /* Init: no FLASHes known */
-       for (i = 0; i < CFG_MAX_FLASH_BANKS; ++i) {
+       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
                flash_info[i].flash_id = FLASH_UNKNOWN;
        }
 
@@ -68,61 +86,37 @@ unsigned long flash_init (void)
        /* Re-do sizing to get full correct info */
 
        if (size_b1) {
+               if (size_b1 < (1 << 20)) {
+                       /* minimum CS size on PPC405GP is 1MB !!! */
+                       size_b1 = 1 << 20;
+               }
+               base_b1 = -size_b1;
                mtdcr (ebccfga, pb0cr);
                pbcr = mfdcr (ebccfgd);
                mtdcr (ebccfga, pb0cr);
-               base_b1 = -size_b1;
-               switch (size_b1) {
-               case 1 << 20:
-                       size_val = 0;
-                       break;
-               case 2 << 20:
-                       size_val = 1;
-                       break;
-               case 4 << 20:
-                       size_val = 2;
-                       break;
-               case 8 << 20:
-                       size_val = 3;
-                       break;
-               case 16 << 20:
-                       size_val = 4;
-                       break;
-               default:
-                       size_val = 0;
-                       break;
-
-               }
-               pbcr = (pbcr & 0x0001ffff) | base_b1 | (size_val << 17);
+               pbcr = (pbcr & 0x0001ffff) | base_b1 | (calc_size(size_b1) << 17);
                mtdcr (ebccfgd, pbcr);
-               /*          printf("pb1cr = %x\n", pbcr); */
+#if 0 /* test-only */
+               printf("size_b1=%x base_b1=%x pb1cr = %x\n",
+                      size_b1, base_b1, pbcr); /* test-only */
+#endif
        }
 
        if (size_b0) {
+               if (size_b0 < (1 << 20)) {
+                       /* minimum CS size on PPC405GP is 1MB !!! */
+                       size_b0 = 1 << 20;
+               }
+               base_b0 = base_b1 - size_b0;
                mtdcr (ebccfga, pb1cr);
                pbcr = mfdcr (ebccfgd);
                mtdcr (ebccfga, pb1cr);
-               base_b0 = base_b1 - size_b0;
-               switch (size_b1) {
-               case 1 << 20:
-                       size_val = 0;
-                       break;
-               case 2 << 20:
-                       size_val = 1;
-                       break;
-               case 4 << 20:
-                       size_val = 2;
-                       break;
-               case 8 << 20:
-                       size_val = 3;
-                       break;
-               case 16 << 20:
-                       size_val = 4;
-                       break;
-               }
-               pbcr = (pbcr & 0x0001ffff) | base_b0 | (size_val << 17);
+               pbcr = (pbcr & 0x0001ffff) | base_b0 | (calc_size(size_b0) << 17);
                mtdcr (ebccfgd, pbcr);
-               /*            printf("pb0cr = %x\n", pbcr); */
+#if 0 /* test-only */
+               printf("size_b0=%x base_b0=%x pb0cr = %x\n",
+                      size_b0, base_b0, pbcr); /* test-only */
+#endif
        }
 
        size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
@@ -131,7 +125,7 @@ unsigned long flash_init (void)
 
        /* monitor protection ON by default */
        flash_protect (FLAG_PROTECT_SET,
-                       base_b0 + size_b0 - CFG_MONITOR_LEN,
+                       base_b0 + size_b0 - monitor_flash_len,
                        base_b0 + size_b0 - 1, &flash_info[0]);
 
        if (size_b1) {
@@ -142,11 +136,11 @@ unsigned long flash_init (void)
 
                /* monitor protection ON by default */
                flash_protect (FLAG_PROTECT_SET,
-                               base_b1 + size_b1 - CFG_MONITOR_LEN,
+                               base_b1 + size_b1 - monitor_flash_len,
                                base_b1 + size_b1 - 1, &flash_info[1]);
                /* monitor protection OFF by default (one is enough) */
                flash_protect (FLAG_PROTECT_CLEAR,
-                               base_b0 + size_b0 - CFG_MONITOR_LEN,
+                               base_b0 + size_b0 - monitor_flash_len,
                                base_b0 + size_b0 - 1, &flash_info[0]);
        } else {
                flash_info[1].flash_id = FLASH_UNKNOWN;