OSDN Git Service

mtd: maps: sc520cdp: fix warnings
authorBrian Norris <computersforpeace@gmail.com>
Mon, 12 May 2014 23:41:46 +0000 (16:41 -0700)
committerBrian Norris <computersforpeace@gmail.com>
Wed, 28 May 2014 07:05:24 +0000 (00:05 -0700)
On m86k, and maybe a few other architectures, we get this kind of
warning, due to misuse of volatile:

   drivers/mtd/maps/sc520cdp.c: In function 'sc520cdp_setup_par':
>> drivers/mtd/maps/sc520cdp.c:223:2: warning: passing argument 1 of 'iounmap' discards 'volatile' qualifier from pointer target type [enabled by default]
   arch/m68k/include/asm/raw_io.h:22:13: note: expected 'void *' but argument is of type 'volatile long unsigned int *'

Rather than annotating the variable declaration, let's just use the
proper accessors, which add the 'volatile' qualifier to the operation.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/maps/sc520cdp.c

index 8fead8e..093edd5 100644 (file)
@@ -183,7 +183,7 @@ static const struct sc520_par_table par_table[NUM_FLASH_BANKS] =
 
 static void sc520cdp_setup_par(void)
 {
-       volatile unsigned long __iomem *mmcr;
+       unsigned long __iomem *mmcr;
        unsigned long mmcr_val;
        int i, j;
 
@@ -203,11 +203,11 @@ static void sc520cdp_setup_par(void)
        */
        for(i = 0; i < NUM_FLASH_BANKS; i++) {          /* for each par_table entry  */
                for(j = 0; j < NUM_SC520_PAR; j++) {    /* for each PAR register     */
-                       mmcr_val = mmcr[SC520_PAR(j)];
+                       mmcr_val = readl(&mmcr[SC520_PAR(j)]);
                        /* if target device field matches, reprogram the PAR */
                        if((mmcr_val & SC520_PAR_TRGDEV) == par_table[i].trgdev)
                        {
-                               mmcr[SC520_PAR(j)] = par_table[i].new_par;
+                               writel(par_table[i].new_par, &mmcr[SC520_PAR(j)]);
                                break;
                        }
                }