printk("%s: Probing for AMD compatible flash...\n", map->name);
 
        if ((table_pos[0] = probe_new_chip(mtd, 0, NULL, &temp, table,
-                                          sizeof(table)/sizeof(table[0])))
+                                          ARRAY_SIZE(table)))
            == -1) {
                printk(KERN_WARNING
                       "%s: Found no AMD compatible device at location zero\n",
             base += (1 << temp.chipshift)) {
                int numchips = temp.numchips;
                table_pos[numchips] = probe_new_chip(mtd, base, chips,
-                       &temp, table, sizeof(table)/sizeof(table[0]));
+                       &temp, table, ARRAY_SIZE(table));
        }
 
        mtd->eraseregions = kmalloc(sizeof(struct mtd_erase_region_info) *
 
                DEBUG(MTD_DEBUG_LEVEL3,
                      "Search for id:(%02x %02x) interleave(%d) type(%d)\n",
                        cfi->mfr, cfi->id, cfi_interleave(cfi), cfi->device_type);
-               for (i=0; i<sizeof(jedec_table)/sizeof(jedec_table[0]); i++) {
+               for (i = 0; i < ARRAY_SIZE(jedec_table); i++) {
                        if ( jedec_match( base, map, cfi, &jedec_table[i] ) ) {
                                DEBUG( MTD_DEBUG_LEVEL3,
                                       "MTD %s(): matched device 0x%x,0x%x unlock_addrs: 0x%.4x 0x%.4x\n",
 
 
 /***************************************************************************************************/
 
-#define NB_OF(x) (sizeof (x) / sizeof (x[0]))
-
 static struct mtd_info mtd;
 
 static struct mtd_erase_region_info erase_regions[] = {
    mtd.flags = MTD_CAP_NORFLASH;
    mtd.size = FLASH_BLOCKSIZE_PARAM * FLASH_NUMBLOCKS_16m_PARAM + FLASH_BLOCKSIZE_MAIN * FLASH_NUMBLOCKS_16m_MAIN;
    mtd.erasesize = FLASH_BLOCKSIZE_MAIN;
-   mtd.numeraseregions = NB_OF (erase_regions);
+   mtd.numeraseregions = ARRAY_SIZE(erase_regions);
    mtd.eraseregions = erase_regions;
    mtd.erase = flash_erase;
    mtd.read = flash_read;
                           result,mtd.eraseregions[result].numblocks);
 
 #ifdef HAVE_PARTITIONS
-   printk ("\npartitions = %d\n",NB_OF (lart_partitions));
+   printk ("\npartitions = %d\n", ARRAY_SIZE(lart_partitions));
 
-   for (result = 0; result < NB_OF (lart_partitions); result++)
+   for (result = 0; result < ARRAY_SIZE(lart_partitions); result++)
         printk (KERN_DEBUG
                         "\n\n"
                         "lart_partitions[%d].name = %s\n"
 #ifndef HAVE_PARTITIONS
    result = add_mtd_device (&mtd);
 #else
-   result = add_mtd_partitions (&mtd,lart_partitions,NB_OF (lart_partitions));
+   result = add_mtd_partitions (&mtd,lart_partitions, ARRAY_SIZE(lart_partitions));
 #endif
 
    return (result);
 
                break;
        }
 
-       for (i = 0; i < (sizeof(ms02nv_addrs) / sizeof(*ms02nv_addrs)); i++)
+       for (i = 0; i < ARRAY_SIZE(ms02nv_addrs); i++)
                if (!ms02nv_init_one(ms02nv_addrs[i] << stride))
                        count++;
 
 
         }
 };
 
-#define NB_OF(x)  (sizeof(x)/sizeof(x[0]))
-
 static struct mtd_info *mymtd;
 
 int __init alchemy_mtd_init(void)
         * Static partition definition selection
         */
        parts = alchemy_partitions;
-       nb_parts = NB_OF(alchemy_partitions);
+       nb_parts = ARRAY_SIZE(alchemy_partitions);
        alchemy_map.size = window_size;
 
        /*
 
        }
 };
 
-#define PARTITION_COUNT (sizeof(flagadm_parts)/sizeof(struct mtd_partition))
+#define PARTITION_COUNT ARRAY_SIZE(flagadm_parts)
 
 static struct mtd_info *mymtd;
 
 
        }
 };
 
-#define NUM_PARTITIONS (sizeof(partition_info) / sizeof(partition_info[0]))
+#define NUM_PARTITIONS ARRAY_SIZE(partition_info)
 
 #define WINDOW_ADDR 0x10000000
 #define WINDOW_SIZE 0x800000
 
        },
 };
 
-#define NUM_PARTITIONS (sizeof(partition_info)/sizeof(partition_info[0]))
+#define NUM_PARTITIONS ARRAY_SIZE(partition_info)
 
 static struct mtd_info *mymtd;
 static struct mtd_info *lowlvl_parts[NUM_PARTITIONS];
        },
 };
 
-#define NUM_HIGHLVL_PARTITIONS (sizeof(higlvl_partition_info)/sizeof(partition_info[0]))
+#define NUM_HIGHLVL_PARTITIONS ARRAY_SIZE(higlvl_partition_info)
 
 
 static int dnp_adnp_probe(void)
 
 static int __init init_svme182(void)
 {
        struct mtd_partition *partitions;
-       int num_parts = sizeof(svme182_partitions) / sizeof(struct mtd_partition);
+       int num_parts = ARRAY_SIZE(svme182_partitions);
 
        partitions = svme182_partitions;
 
 
         }
 };
 
-#define NUM_PARTITIONS  (sizeof(h720x_partitions)/sizeof(h720x_partitions[0]))
+#define NUM_PARTITIONS ARRAY_SIZE(h720x_partitions)
 
 static int                   nr_mtd_parts;
 static struct mtd_partition *mtd_parts;
 
            .size = 0x80000
     },
 };
-#define NUM_PARTITIONS (sizeof(partition_info)/sizeof(partition_info[0]))
+#define NUM_PARTITIONS ARRAY_SIZE(partition_info)
 
 #define WINDOW_SIZE    0x00100000
 #define WINDOW_ADDR    0x00200000
        .phys = WINDOW_ADDR,
 };
 
-#define NUM_FLASH_BANKS        (sizeof(netsc520_map)/sizeof(struct map_info))
+#define NUM_FLASH_BANKS        ARRAY_SIZE(netsc520_map)
 
 static struct mtd_info *mymtd;
 
 
        }
 };
 
-#define NUM_AMD_PARTITIONS \
-       (sizeof(nettel_amd_partitions)/sizeof(nettel_amd_partitions[0]))
+#define NUM_AMD_PARTITIONS ARRAY_SIZE(nettel_amd_partitions)
 
 /****************************************************************************/
 
 
        }
 };
 
-#define NB_OF(x)  (sizeof(x)/sizeof(x[0]))
-
 int __init init_ocotea(void)
 {
        u8 fpga0_reg;
        if (flash) {
                flash->owner = THIS_MODULE;
                add_mtd_partitions(flash, ocotea_small_partitions,
-                                       NB_OF(ocotea_small_partitions));
+                                       ARRAY_SIZE(ocotea_small_partitions));
        } else {
                printk("map probe failed for flash\n");
                return -ENXIO;
        if (flash) {
                flash->owner = THIS_MODULE;
                add_mtd_partitions(flash, ocotea_large_partitions,
-                                       NB_OF(ocotea_large_partitions));
+                                       ARRAY_SIZE(ocotea_large_partitions));
        } else {
                printk("map probe failed for flash\n");
                return -ENXIO;
 
        } else if(mem_type == 2) {
                mtd = do_map_probe("map_rom", &dev->pcmcia_map);
        } else {
-               for(i = 0; i < sizeof(probes) / sizeof(char *); i++) {
+               for(i = 0; i < ARRAY_SIZE(probes); i++) {
                        DEBUG(1, "Trying %s", probes[i]);
                        mtd = do_map_probe(probes[i], &dev->pcmcia_map);
                        if(mtd)
 
 };
 
 
-#define NUM_REDWOOD_FLASH_PARTITIONS \
-       (sizeof(redwood_flash_partitions)/sizeof(redwood_flash_partitions[0]))
+#define NUM_REDWOOD_FLASH_PARTITIONS ARRAY_SIZE(redwood_flash_partitions)
 
 static struct mtd_info *redwood_mtd;
 
 
        }
 };
 
-#define NUM_FLASH_BANKS        (sizeof(sbc8240_map) / sizeof(struct map_info))
+#define NUM_FLASH_BANKS        ARRAY_SIZE(sbc8240_map)
 
 /*
  * The following defines the partition layout of SBC8240 boards.
        }
 };
 
-#define NB_OF(x) (sizeof (x) / sizeof (x[0]))
-
 /* trivial struct to describe partition information */
 struct mtd_part_def
 {
 #ifdef CONFIG_MTD_PARTITIONS
        sbc8240_part_banks[0].mtd_part   = sbc8240_uboot_partitions;
        sbc8240_part_banks[0].type       = "static image";
-       sbc8240_part_banks[0].nums       = NB_OF(sbc8240_uboot_partitions);
+       sbc8240_part_banks[0].nums       = ARRAY_SIZE(sbc8240_uboot_partitions);
        sbc8240_part_banks[1].mtd_part   = sbc8240_fs_partitions;
        sbc8240_part_banks[1].type       = "static file system";
-       sbc8240_part_banks[1].nums       = NB_OF(sbc8240_fs_partitions);
+       sbc8240_part_banks[1].nums       = ARRAY_SIZE(sbc8240_fs_partitions);
 
        for (i = 0; i < NUM_FLASH_BANKS; i++) {
 
 
        },
 };
 
-#define NUM_FLASH_BANKS        (sizeof(sc520cdp_map)/sizeof(struct map_info))
+#define NUM_FLASH_BANKS        ARRAY_SIZE(sc520cdp_map)
 
 static struct mtd_info *mymtd[NUM_FLASH_BANKS];
 static struct mtd_info *merged_mtd;
 
                .size   = 0x80000
        },
 };
-#define NUM_PARTITIONS (sizeof(partition_info)/sizeof(partition_info[0]))
+#define NUM_PARTITIONS ARRAY_SIZE(partition_info)
 #endif
 
 
 
        }
 };
 
-#define NB_OF(x)  (sizeof(x)/sizeof(x[0]))
-
 int __init init_sharpsl(void)
 {
        struct mtd_partition *parts;
        }
 
        parts = sharpsl_partitions;
-       nb_parts = NB_OF(sharpsl_partitions);
+       nb_parts = ARRAY_SIZE(sharpsl_partitions);
 
        printk(KERN_NOTICE "Using %s partision definition\n", part_type);
        add_mtd_partitions(mymtd, parts, nb_parts);
 
        }
 };
 
-#define NUM_PARTITIONS (sizeof(ts5500_partitions)/sizeof(struct mtd_partition))
+#define NUM_PARTITIONS ARRAY_SIZE(ts5500_partitions)
 
 static struct mtd_info *mymtd;
 
 
        { .name = "ROMfs" }
 };
 
-#define        NUM_PARTITIONS  (sizeof(uclinux_romfs) / sizeof(uclinux_romfs[0]))
+#define        NUM_PARTITIONS  ARRAY_SIZE(uclinux_romfs)
 
 /****************************************************************************/
 
 
                .size   =    MTDPART_SIZ_FULL
        }
 };
-#define NB_OF(x)  (sizeof(x)/sizeof(x[0]))
-
 
 /**
  * au_read_byte -  read one byte from the chip
        }
 
        /* Register the partitions */
-       add_mtd_partitions(au1550_mtd, partition_info, NB_OF(partition_info));
+       add_mtd_partitions(au1550_mtd, partition_info, ARRAY_SIZE(partition_info));
 
        return 0;