staging: xgifb: vb_init: use readl()/writel() to access iomapped memory
authorAaro Koskinen <aaro.koskinen@iki.fi>
Tue, 13 Sep 2011 19:49:33 +0000 (22:49 +0300)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 16 Sep 2011 18:16:48 +0000 (20:16 +0200)
Use readl() and writel() in FB memory test instead of direct pointer
access, and also add iomem annotations for the FB memory.

The patch eliminates the following sparse warnings:

drivers/staging/xgifb/XGI_main_26.c:2113:69: warning: incorrect type in assignment (different address spaces)
drivers/staging/xgifb/XGI_main_26.c:2113:69:    expected unsigned char *static [addressable] [toplevel] [assigned] pjVideoMemoryAddress
drivers/staging/xgifb/XGI_main_26.c:2113:69:    got void [noderef] <asn:2>*
drivers/staging/xgifb/XGI_main_26.c:2399:30: warning: incorrect type in assignment (different address spaces)
drivers/staging/xgifb/XGI_main_26.c:2399:30:    expected char [noderef] <asn:2>*screen_base
drivers/staging/xgifb/XGI_main_26.c:2399:30:    got char *[addressable] [toplevel] [assigned] video_vbase
drivers/staging/xgifb/XGI_main_26.c:2430:31: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/xgifb/XGI_main_26.c:2430:31:    expected void volatile [noderef] <asn:2>*addr
drivers/staging/xgifb/XGI_main_26.c:2430:31:    got char *[addressable] [toplevel] [assigned] video_vbase
drivers/staging/xgifb/XGI_main_26.c:2454:31: warning: incorrect type in argument 1 (different address spaces)
drivers/staging/xgifb/XGI_main_26.c:2454:31:    expected void volatile [noderef] <asn:2>*addr
drivers/staging/xgifb/XGI_main_26.c:2454:31:    got char *[addressable] [toplev

Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/xgifb/XGIfb.h
drivers/staging/xgifb/vb_init.c
drivers/staging/xgifb/vb_struct.h
drivers/staging/xgifb/vgatypes.h

index 12e1a3e330b7e7ffa0a67194558c4d7032183b8f..f778293b553e6d7d697c627e4fb06a9048e1c6dd 100644 (file)
@@ -56,7 +56,7 @@ struct video_info {
        int           chip_id;
        unsigned int  video_size;
        unsigned long video_base;
-       char          *video_vbase;
+       void __iomem *video_vbase;
        unsigned long mmio_base;
        unsigned long mmio_size;
        void __iomem *mmio_vbase;
index c7fd406be1a4262a0bc2aa69866771e6259bca5a..ce5bf6839cf682931b91f409b51b75bd1673758b 100644 (file)
@@ -678,12 +678,13 @@ static int XGINew_ReadWriteRest(unsigned short StopAddr,
 {
        int i;
        unsigned long Position = 0;
+       void __iomem *fbaddr = pVBInfo->FBAddr;
 
-       *((unsigned long *) (pVBInfo->FBAddr + Position)) = Position;
+       writel(Position, fbaddr + Position);
 
        for (i = StartAddr; i <= StopAddr; i++) {
                Position = 1 << i;
-               *((unsigned long *) (pVBInfo->FBAddr + Position)) = Position;
+               writel(Position, fbaddr + Position);
        }
 
        udelay(500); /* [Vicent] 2004/04/16.
@@ -691,13 +692,12 @@ static int XGINew_ReadWriteRest(unsigned short StopAddr,
 
        Position = 0;
 
-       if ((*(unsigned long *) (pVBInfo->FBAddr + Position)) != Position)
+       if (readl(fbaddr + Position) != Position)
                return 0;
 
        for (i = StartAddr; i <= StopAddr; i++) {
                Position = 1 << i;
-               if ((*(unsigned long *) (pVBInfo->FBAddr + Position)) !=
-                   Position)
+               if (readl(fbaddr + Position) != Position)
                        return 0;
        }
        return 1;
index 6f13442bd6aa97500b0750acac048497e037b011..860c98649bff13abaee162b9a4932bc3b144c7a7 100644 (file)
@@ -300,7 +300,7 @@ struct vb_device_info {
        unsigned short   SelectCRT2Rate;
 
        unsigned char *ROMAddr;
-       unsigned char *FBAddr;
+       void __iomem *FBAddr;
        unsigned long BaseAddr;
        unsigned long RelIO;
 
index 7f911f1ac32d89068f5b97b92abaad6483a9ed8a..76e2d81cbd518e4f29a2f1493fc5a1bb72beb858 100644 (file)
@@ -53,7 +53,7 @@ struct xgi_hw_device_info {
 
        unsigned char *pjVirtualRomBase; /* ROM image */
 
-       unsigned char *pjVideoMemoryAddress;/* base virtual memory address */
+       void __iomem *pjVideoMemoryAddress;/* base virtual memory address */
                                            /* of Linear VGA memory */
 
        unsigned long ulVideoMemorySize; /* size, in bytes, of the