Commit c44fa627 authored by Aaro Koskinen's avatar Aaro Koskinen Committed by Greg Kroah-Hartman

staging: xgifb: vb_init: use readl()/writel() to access iomapped memory

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: default avatarAaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 4b495462
...@@ -56,7 +56,7 @@ struct video_info { ...@@ -56,7 +56,7 @@ struct video_info {
int chip_id; int chip_id;
unsigned int video_size; unsigned int video_size;
unsigned long video_base; unsigned long video_base;
char *video_vbase; void __iomem *video_vbase;
unsigned long mmio_base; unsigned long mmio_base;
unsigned long mmio_size; unsigned long mmio_size;
void __iomem *mmio_vbase; void __iomem *mmio_vbase;
......
...@@ -678,12 +678,13 @@ static int XGINew_ReadWriteRest(unsigned short StopAddr, ...@@ -678,12 +678,13 @@ static int XGINew_ReadWriteRest(unsigned short StopAddr,
{ {
int i; int i;
unsigned long Position = 0; 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++) { for (i = StartAddr; i <= StopAddr; i++) {
Position = 1 << i; Position = 1 << i;
*((unsigned long *) (pVBInfo->FBAddr + Position)) = Position; writel(Position, fbaddr + Position);
} }
udelay(500); /* [Vicent] 2004/04/16. udelay(500); /* [Vicent] 2004/04/16.
...@@ -691,13 +692,12 @@ static int XGINew_ReadWriteRest(unsigned short StopAddr, ...@@ -691,13 +692,12 @@ static int XGINew_ReadWriteRest(unsigned short StopAddr,
Position = 0; Position = 0;
if ((*(unsigned long *) (pVBInfo->FBAddr + Position)) != Position) if (readl(fbaddr + Position) != Position)
return 0; return 0;
for (i = StartAddr; i <= StopAddr; i++) { for (i = StartAddr; i <= StopAddr; i++) {
Position = 1 << i; Position = 1 << i;
if ((*(unsigned long *) (pVBInfo->FBAddr + Position)) != if (readl(fbaddr + Position) != Position)
Position)
return 0; return 0;
} }
return 1; return 1;
......
...@@ -300,7 +300,7 @@ struct vb_device_info { ...@@ -300,7 +300,7 @@ struct vb_device_info {
unsigned short SelectCRT2Rate; unsigned short SelectCRT2Rate;
unsigned char *ROMAddr; unsigned char *ROMAddr;
unsigned char *FBAddr; void __iomem *FBAddr;
unsigned long BaseAddr; unsigned long BaseAddr;
unsigned long RelIO; unsigned long RelIO;
......
...@@ -53,7 +53,7 @@ struct xgi_hw_device_info { ...@@ -53,7 +53,7 @@ struct xgi_hw_device_info {
unsigned char *pjVirtualRomBase; /* ROM image */ unsigned char *pjVirtualRomBase; /* ROM image */
unsigned char *pjVideoMemoryAddress;/* base virtual memory address */ void __iomem *pjVideoMemoryAddress;/* base virtual memory address */
/* of Linear VGA memory */ /* of Linear VGA memory */
unsigned long ulVideoMemorySize; /* size, in bytes, of the unsigned long ulVideoMemorySize; /* size, in bytes, of the
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment