]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - board/nx823/flash.c
imported Freescale specific U-Boot additions for i.MX28,... release L2.6.31_10.08.01
[karo-tx-uboot.git] / board / nx823 / flash.c
index 581925e48b865afd01c5ea99bdbb129db5e32844..336e70412be0219acbef3ba5f694188efb5f6029 100755 (executable)
@@ -27,8 +27,9 @@
 #include <common.h>
 #include <mpc8xx.h>
 
-flash_info_t   flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH chips        */
-extern u_long  *my_sernum;             /* from nx823.c */
+DECLARE_GLOBAL_DATA_PTR;
+
+flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
 
 /*-----------------------------------------------------------------------
  * Protection Flags:
@@ -63,13 +64,13 @@ static void  flash_get_offsets (ulong base, flash_info_t *info);
 
 unsigned long flash_init (void)
 {
-       volatile immap_t     *immap  = (immap_t *)CFG_IMMR;
+       volatile immap_t     *immap  = (immap_t *)CONFIG_SYS_IMMR;
        volatile memctl8xx_t *memctl = &immap->im_memctl;
        unsigned long size_b0;
        int i;
 
        /* 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;
        }
 
@@ -82,18 +83,18 @@ unsigned long flash_init (void)
        }
 
        /* Remap FLASH according to real size */
-       memctl->memc_or0 = CFG_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
-       memctl->memc_br0 = (CFG_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
+       memctl->memc_or0 = CONFIG_SYS_OR_TIMING_FLASH | (-size_b0 & 0xFFFF8000);
+       memctl->memc_br0 = (CONFIG_SYS_FLASH_BASE & BR_BA_MSK) | BR_PS_16 | BR_MS_GPCM | BR_V;
 
        /* Re-do sizing to get full correct info */
-       size_b0 = flash_get_size((FPW *)CFG_FLASH_BASE, &flash_info[0]);
+       size_b0 = flash_get_size((FPW *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
 
-       flash_get_offsets (CFG_FLASH_BASE, &flash_info[0]);
+       flash_get_offsets (CONFIG_SYS_FLASH_BASE, &flash_info[0]);
 
        /* monitor protection ON by default */
        (void)flash_protect(FLAG_PROTECT_SET,
-                           CFG_FLASH_BASE,
-                           CFG_FLASH_BASE+monitor_flash_len-1,
+                           CONFIG_SYS_FLASH_BASE,
+                           CONFIG_SYS_FLASH_BASE+monitor_flash_len-1,
                            &flash_info[0]);
 
        flash_info[0].size = size_b0;
@@ -220,10 +221,10 @@ static ulong flash_get_size (FPW *addr, flash_info_t *info)
                break;
        }
 
-       if (info->sector_count > CFG_MAX_FLASH_SECT) {
+       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
                printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CFG_MAX_FLASH_SECT);
-               info->sector_count = CFG_MAX_FLASH_SECT;
+                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
+               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
        }
 
        addr[0] = (FPW)0x00FF00FF;      /* restore read mode */
@@ -294,7 +295,7 @@ int flash_erase (flash_info_t *info, int s_first, int s_last)
                        udelay (1000);
 
                        while (((status = *addr) & (FPW)0x00800080) != (FPW)0x00800080) {
-                               if ((now=get_timer(start)) > CFG_FLASH_ERASE_TOUT) {
+                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
                                        printf ("Timeout\n");
                                        *addr = (FPW)0x00B000B0; /* suspend erase         */
                                        *addr = (FPW)0x00FF00FF; /* reset to read mode */
@@ -343,10 +344,10 @@ int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
 #endif
 
        /* save sernum if needed */
-       if (addr >= CFG_FLASH_SN_SECTOR && addr < CFG_FLASH_SN_BASE)
+       if (addr >= CONFIG_SYS_FLASH_SN_SECTOR && addr < CONFIG_SYS_FLASH_SN_BASE)
        {
-               u_long dest = CFG_FLASH_SN_BASE;
-               u_short *sn = (u_short *)my_sernum;
+               u_long dest = CONFIG_SYS_FLASH_SN_BASE;
+               u_short *sn = (u_short *)gd->bd->bi_sernum;
 
                printf("(saving sernum)");
                for (i=0; i<4; i++)
@@ -452,7 +453,7 @@ static int write_data (flash_info_t *info, ulong dest, FPW data)
        start = get_timer (0);
 
        while (((status = *addr) & (FPW)0x00800080) != (FPW)0x00800080) {
-               if (get_timer(start) > CFG_FLASH_WRITE_TOUT) {
+               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
                        *addr = (FPW)0x00FF00FF;        /* restore read mode */
                        return (1);
                }