/*
         * Try to select a suitable default mode
         */
-       for (i = 0; i < sizeof(modedb) / sizeof(*modedb); i++) {
+       for (i = 0; i < ARRAY_SIZE(modedb); i++) {
                unsigned long hs;
 
                hs = modedb[i].refresh *
         */
        free_unused_pages(PAGE_OFFSET + size, PAGE_OFFSET + MAX_SIZE);
 #endif
-       
+
        fb_info.fix.smem_len = size;
        current_par.palette_size   = VIDC_PALETTE_SIZE;
 
         */
        do {
                rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb,
-                                sizeof(modedb) / sizeof(*modedb),
+                                ARRAY_SIZE(modedb),
                                 &acornfb_default_mode, DEFAULT_BPP);
                /*
                 * If we found an exact match, all ok.
                        break;
 
                rc = fb_find_mode(&fb_info.var, &fb_info, NULL, modedb,
-                                sizeof(modedb) / sizeof(*modedb),
+                                ARRAY_SIZE(modedb),
                                 &acornfb_default_mode, DEFAULT_BPP);
                if (rc)
                        break;
 
        unsigned char data;
 };
 
-#define N_ELTS(x)      (sizeof(x) / sizeof(x[0]))
-
 static struct chips_init_reg chips_init_sr[] =
 {
        {0x00, 0x03},           /* Reset register */
 {
        int i;
 
-       for (i = 0; i < N_ELTS(chips_init_xr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_xr); ++i)
                write_xr(chips_init_xr[i].addr, chips_init_xr[i].data);
        write_xr(0x81, 0x12);
        write_xr(0x82, 0x08);
        write_xr(0x20, 0x00);
-       for (i = 0; i < N_ELTS(chips_init_sr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_sr); ++i)
                write_sr(chips_init_sr[i].addr, chips_init_sr[i].data);
-       for (i = 0; i < N_ELTS(chips_init_gr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_gr); ++i)
                write_gr(chips_init_gr[i].addr, chips_init_gr[i].data);
-       for (i = 0; i < N_ELTS(chips_init_ar); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_ar); ++i)
                write_ar(chips_init_ar[i].addr, chips_init_ar[i].data);
        /* Enable video output in attribute index register */
        writeb(0x20, mmio_base + 0x780);
-       for (i = 0; i < N_ELTS(chips_init_cr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_cr); ++i)
                write_cr(chips_init_cr[i].addr, chips_init_cr[i].data);
-       for (i = 0; i < N_ELTS(chips_init_fr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_fr); ++i)
                write_fr(chips_init_fr[i].addr, chips_init_fr[i].data);
 }
 
 
        strcpy(video_card, "Rage128 XX ");
        video_card[8] = ent->device >> 8;
        video_card[9] = ent->device & 0xFF;
-           
+
        /* range check to make sure */
-       if (ent->driver_data < (sizeof(r128_family)/sizeof(char *)))
+       if (ent->driver_data < ARRAY_SIZE(r128_family))
            strncat(video_card, r128_family[ent->driver_data], sizeof(video_card));
 
        printk(KERN_INFO "aty128fb: %s [chip rev 0x%x] ", video_card, chip_rev);
 
        const char *name;
        int i;
 
-       for (i = sizeof(aty_chips) / sizeof(*aty_chips) - 1; i >= 0; i--)
+       for (i = ARRAY_SIZE(aty_chips) - 1; i >= 0; i--)
                if (par->pci_id == aty_chips[i].pci_id)
                        break;
 
 
        if (IS_XL(par->pci_id) || IS_MOBILITY(par->pci_id)) {
                refresh_tbl = ragexl_tbl;
-               size = sizeof(ragexl_tbl)/sizeof(int);
+               size = ARRAY_SIZE(ragexl_tbl);
        } else {
                refresh_tbl = ragepro_tbl;
-               size = sizeof(ragepro_tbl)/sizeof(int);
+               size = ARRAY_SIZE(ragepro_tbl);
        }
 
        for (i=0; i < size; i++) {
        struct atyfb_par *par;
        int i, rc = -ENOMEM;
 
-       for (i = sizeof(aty_chips) / sizeof(*aty_chips) - 1; i >= 0; i--)
+       for (i = ARRAY_SIZE(aty_chips); i >= 0; i--)
                if (pdev->device == aty_chips[i].pci_id)
                        break;
 
 
        };
        int i;
 
-       for (i = 0; i < sizeof(RGB514_clocks) / sizeof(*RGB514_clocks);
-            i++)
+       for (i = 0; i < ARRAY_SIZE(RGB514_clocks); i++)
                if (vclk_per <= RGB514_clocks[i].limit) {
                        pll->ibm514.m = RGB514_clocks[i].m;
                        pll->ibm514.n = RGB514_clocks[i].n;
 
        unsigned char data;
 };
 
-#define N_ELTS(x)      (sizeof(x) / sizeof(x[0]))
-
 static struct chips_init_reg chips_init_sr[] = {
        { 0x00, 0x03 },
        { 0x01, 0x01 },
 {
        int i;
 
-       for (i = 0; i < N_ELTS(chips_init_xr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_xr); ++i)
                write_xr(chips_init_xr[i].addr, chips_init_xr[i].data);
        outb(0x29, 0x3c2); /* set misc output reg */
-       for (i = 0; i < N_ELTS(chips_init_sr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_sr); ++i)
                write_sr(chips_init_sr[i].addr, chips_init_sr[i].data);
-       for (i = 0; i < N_ELTS(chips_init_gr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_gr); ++i)
                write_gr(chips_init_gr[i].addr, chips_init_gr[i].data);
-       for (i = 0; i < N_ELTS(chips_init_ar); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_ar); ++i)
                write_ar(chips_init_ar[i].addr, chips_init_ar[i].data);
-       for (i = 0; i < N_ELTS(chips_init_cr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_cr); ++i)
                write_cr(chips_init_cr[i].addr, chips_init_cr[i].data);
-       for (i = 0; i < N_ELTS(chips_init_fr); ++i)
+       for (i = 0; i < ARRAY_SIZE(chips_init_fr); ++i)
                write_fr(chips_init_fr[i].addr, chips_init_fr[i].data);
 }
 
 
 #endif
 };
 
-#define num_fonts (sizeof(fonts)/sizeof(*fonts))
+#define num_fonts ARRAY_SIZE(fonts)
 
 #ifdef NO_FONTS
 #error No fonts configured.
 
        write_reg_le32(par->dc_regs, STGCTL, tmp & ~0x1);
        write_reg_le32(par->dc_regs, SSR, 0);
 
-       /* set default values for DAC registers */ 
+       /* set default values for DAC registers */
        if (par->ramdac == IBM) {
-               par->cmap_regs[PPMASK] = 0xff;  eieio();
-               par->cmap_regs[PIDXHI] = 0;     eieio();
-               for (i = 0; i < sizeof(ibm_initregs) / sizeof(*ibm_initregs); i++) {
-                       par->cmap_regs[PIDXLO] = ibm_initregs[i].addr;  eieio();
-                       par->cmap_regs[PIDXDATA] = ibm_initregs[i].value;       eieio();
+               par->cmap_regs[PPMASK] = 0xff;
+               eieio();
+               par->cmap_regs[PIDXHI] = 0;
+               eieio();
+               for (i = 0; i < ARRAY_SIZE(ibm_initregs); i++) {
+                       par->cmap_regs[PIDXLO] = ibm_initregs[i].addr;
+                       eieio();
+                       par->cmap_regs[PIDXDATA] = ibm_initregs[i].value;
+                       eieio();
                }
        } else {
-               for (i = 0; i < sizeof(tvp_initregs) / sizeof(*tvp_initregs); i++) {
-                       par->cmap_regs[TVPADDRW] = tvp_initregs[i].addr;        eieio();
-                       par->cmap_regs[TVPIDATA] = tvp_initregs[i].value;       eieio();
+               for (i = 0; i < ARRAY_SIZE(tvp_initregs); i++) {
+                       par->cmap_regs[TVPADDRW] = tvp_initregs[i].addr;
+                       eieio();
+                       par->cmap_regs[TVPIDATA] = tvp_initregs[i].value;
+                       eieio();
                }
        }
 
 
     if (mode_option && !strncmp(mode_option, "mac", 3)) {
        mode_option += 3;
        db = mac_modedb;
-       dbsize = sizeof(mac_modedb)/sizeof(*mac_modedb);
+       dbsize = ARRAY_SIZE(mac_modedb);
     }
     return fb_find_mode(var, info, mode_option, db, dbsize,
                        &mac_modedb[DEFAULT_MODEDB_INDEX], default_bpp);
 
        }, offsetof(struct matrox_fb_info, altout.tvo_params.testout) },
 };
 
-#define G450CTRLS (sizeof(g450_controls)/sizeof(g450_controls[0]))
+#define G450CTRLS ARRAY_SIZE(g450_controls)
 
 /* Return: positive number: id found
            -EINVAL:         id not found, return failure
 
        }, offsetof(struct matrox_fb_info, altout.tvo_params.hue) },
        { { V4L2_CID_GAMMA, V4L2_CTRL_TYPE_INTEGER,
          "gamma",
-         0, sizeof(maven_gamma)/sizeof(maven_gamma[0])-1, 1, 3,
+         0, ARRAY_SIZE(maven_gamma) - 1, 1, 3,
          0,
        }, offsetof(struct matrox_fb_info, altout.tvo_params.gamma) },
        { { MATROXFB_CID_TESTOUT, V4L2_CTRL_TYPE_BOOLEAN,
          "test output",
-         0, 1, 1, 0, 
+         0, 1, 1, 0,
          0,
        }, offsetof(struct matrox_fb_info, altout.tvo_params.testout) },
        { { MATROXFB_CID_DEFLICKER, V4L2_CTRL_TYPE_INTEGER,
 
 };
 
-#define MAVCTRLS (sizeof(maven_controls)/sizeof(maven_controls[0]))
+#define MAVCTRLS ARRAY_SIZE(maven_controls)
 
 /* Return: positive number: id found
            -EINVAL:         id not found, return failure
 
     /* Set up defaults */
     if (!db) {
        db = modedb;
-       dbsize = sizeof(modedb)/sizeof(*modedb);
+       dbsize = ARRAY_SIZE(modedb);
     }
     if (!default_mode)
        default_mode = &modedb[DEFAULT_MODEDB_INDEX];
 
 
        switch (depth) {
        case 8:
-               size = sizeof(bios8) / sizeof(biosMode);
+               size = ARRAY_SIZE(bios8);
                mode = bios8;
                break;
        case 16:
-               size = sizeof(bios16) / sizeof(biosMode);
+               size = ARRAY_SIZE(bios16);
                mode = bios16;
                break;
        case 24:
-               size = sizeof(bios24) / sizeof(biosMode);
+               size = ARRAY_SIZE(bios24);
                mode = bios24;
                break;
 #ifdef NO_32BIT_SUPPORT_YET
        case 32:
-               size = sizeof(bios32) / sizeof(biosMode);
+               size = ARRAY_SIZE(bios32);
                mode = bios32;
                break;
 #endif
 
 
        freq1 = (par->osc0 * count1 + count0 / 2) / count0;
        par->osc1 = freq1;
-       for (i = 0; i < sizeof(pmagbbfb_freqs) / sizeof(*pmagbbfb_freqs); i++)
+       for (i = 0; i < ARRAY_SIZE(pmagbbfb_freqs); i++)
                if (freq1 >= pmagbbfb_freqs[i] -
                             (pmagbbfb_freqs[i] + 128) / 256 &&
                    freq1 <= pmagbbfb_freqs[i] +
 
                 rom = rom_base;
         
                 for (i = 0; (i < 512) && (stage != 4); i++) {
-                    for(j = 0;j < sizeof(radeon_sig)/sizeof(char *);j++) {
+                    for (j = 0; j < ARRAY_SIZE(radeon_sig); j++) {
                         if (radeon_sig[j][0] == *rom)
                                 if (strncmp(radeon_sig[j], rom,
                                             strlen(radeon_sig[j])) == 0) {
 
 static int __devinit sst_detect_dactype(struct fb_info *info, struct sstfb_par *par)
 {
        int i, ret = 0;
-       
-       for (i=0; i<sizeof(dacs)/sizeof(dacs[0]); i++) {
+
+       for (i = 0; i < ARRAY_SIZE(dacs); i++) {
                ret = dacs[i].detect(info);
-               if (ret) break;
+               if (ret)
+                       break;
        }
        if (!ret)
                return 0;
                {FBZMODE,"fbzmode"},
        };
 
-       const int pci_s = sizeof(pci_regs)/sizeof(pci_regs[0]);
-       const int sst_s = sizeof(sst_regs)/sizeof(sst_regs[0]);
+       const int pci_s = ARRAY_SIZE(pci_regs);
+       const int sst_s = ARRAY_SIZE(sst_regs);
        struct sstfb_par *par = info->par;
        struct pci_dev *dev = par->dev;
        u32 pci_res[pci_s];
 
 #endif
 };
 
-#define arraysize(x)   (sizeof(x)/sizeof(*(x)))
-#define NUM_TOTAL_MODES        arraysize(virgefb_predefined)
+#define NUM_TOTAL_MODES        ARRAY_SIZE(virgefb_predefined)
 
 /*
  *    Default to 800x600 for video=virge8:, virge16: or virge32: