aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/xgifb/XGI_main_26.c
diff options
context:
space:
mode:
authorAaro Koskinen <aaro.koskinen@iki.fi>2011-09-13 15:49:31 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2011-09-16 14:16:47 -0400
commit863c02af581e0d1b0cf57e9f3b785572bcfcd980 (patch)
treea6ac67821c0c076ce76a41653827f8e7fcde6092 /drivers/staging/xgifb/XGI_main_26.c
parentd15cce50161bbb46236f9c50ab044c795cbbecc0 (diff)
staging: xgifb: main: use readb()/readw() to access iomapped memory
Use readb()/readw() instead of direct pointer access to read I/O mapped memory and also add __iomem annotation. The patch eliminates the following sparse warnings: drivers/staging/xgifb/XGI_main_26.c:2125:35: warning: incorrect type in assignment (different address spaces) drivers/staging/xgifb/XGI_main_26.c:2125:35: expected char *[addressable] [toplevel] [assigned] mmio_vbase drivers/staging/xgifb/XGI_main_26.c:2125:35: got void [noderef] <asn:2>* drivers/staging/xgifb/XGI_main_26.c:2439:31: warning: incorrect type in argument 1 (different address spaces) drivers/staging/xgifb/XGI_main_26.c:2439:31: expected void volatile [noderef] <asn:2>*addr drivers/staging/xgifb/XGI_main_26.c:2439:31: got char *[addressable] [toplevel] [assigned] mmio_vbase drivers/staging/xgifb/XGI_main_26.c:2463:31: warning: incorrect type in argument 1 (different address spaces) drivers/staging/xgifb/XGI_main_26.c:2463:31: expected void volatile [noderef] <asn:2>*addr drivers/staging/xgifb/XGI_main_26.c:2463:31: got char *[addressable] [toplevel] [assigned] mmio_vbase Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/xgifb/XGI_main_26.c')
-rw-r--r--drivers/staging/xgifb/XGI_main_26.c54
1 files changed, 22 insertions, 32 deletions
diff --git a/drivers/staging/xgifb/XGI_main_26.c b/drivers/staging/xgifb/XGI_main_26.c
index 8c5a6e8a695..e6156f15f0b 100644
--- a/drivers/staging/xgifb/XGI_main_26.c
+++ b/drivers/staging/xgifb/XGI_main_26.c
@@ -498,48 +498,38 @@ invalid:
498static int XGIfb_GetXG21LVDSData(void) 498static int XGIfb_GetXG21LVDSData(void)
499{ 499{
500 u8 tmp; 500 u8 tmp;
501 unsigned char *pData; 501 void __iomem *data = xgi_video_info.mmio_vbase + 0x20000;
502 int i, j, k; 502 int i, j, k;
503 503
504 tmp = xgifb_reg_get(XGISR, 0x1e); 504 tmp = xgifb_reg_get(XGISR, 0x1e);
505 xgifb_reg_set(XGISR, 0x1e, tmp | 4); 505 xgifb_reg_set(XGISR, 0x1e, tmp | 4);
506 506
507 pData = xgi_video_info.mmio_vbase + 0x20000; 507 if ((readb(data) == 0x55) &&
508 if ((pData[0x0] == 0x55) && 508 (readb(data + 1) == 0xAA) &&
509 (pData[0x1] == 0xAA) && 509 (readb(data + 0x65) & 0x1)) {
510 (pData[0x65] & 0x1)) { 510 i = readw(data + 0x316);
511 i = pData[0x316] | (pData[0x317] << 8); 511 j = readb(data + i - 1);
512 j = pData[i - 1];
513 if (j == 0xff) 512 if (j == 0xff)
514 j = 1; 513 j = 1;
515 514
516 k = 0; 515 k = 0;
517 do { 516 do {
518 XGI21_LCDCapList[k].LVDS_Capability = pData[i] 517 XGI21_LCDCapList[k].LVDS_Capability = readw(data + i);
519 | (pData[i + 1] << 8); 518 XGI21_LCDCapList[k].LVDSHT = readw(data + i + 2);
520 XGI21_LCDCapList[k].LVDSHT = pData[i + 2] | (pData[i 519 XGI21_LCDCapList[k].LVDSVT = readw(data + i + 4);
521 + 3] << 8); 520 XGI21_LCDCapList[k].LVDSHDE = readw(data + i + 6);
522 XGI21_LCDCapList[k].LVDSVT = pData[i + 4] | (pData[i 521 XGI21_LCDCapList[k].LVDSVDE = readw(data + i + 8);
523 + 5] << 8); 522 XGI21_LCDCapList[k].LVDSHFP = readw(data + i + 10);
524 XGI21_LCDCapList[k].LVDSHDE = pData[i + 6] | (pData[i 523 XGI21_LCDCapList[k].LVDSVFP = readw(data + i + 12);
525 + 7] << 8); 524 XGI21_LCDCapList[k].LVDSHSYNC = readw(data + i + 14);
526 XGI21_LCDCapList[k].LVDSVDE = pData[i + 8] | (pData[i 525 XGI21_LCDCapList[k].LVDSVSYNC = readw(data + i + 16);
527 + 9] << 8); 526 XGI21_LCDCapList[k].VCLKData1 = readb(data + i + 18);
528 XGI21_LCDCapList[k].LVDSHFP = pData[i + 10] | (pData[i 527 XGI21_LCDCapList[k].VCLKData2 = readb(data + i + 19);
529 + 11] << 8); 528 XGI21_LCDCapList[k].PSC_S1 = readb(data + i + 20);
530 XGI21_LCDCapList[k].LVDSVFP = pData[i + 12] | (pData[i 529 XGI21_LCDCapList[k].PSC_S2 = readb(data + i + 21);
531 + 13] << 8); 530 XGI21_LCDCapList[k].PSC_S3 = readb(data + i + 22);
532 XGI21_LCDCapList[k].LVDSHSYNC = pData[i + 14] 531 XGI21_LCDCapList[k].PSC_S4 = readb(data + i + 23);
533 | (pData[i + 15] << 8); 532 XGI21_LCDCapList[k].PSC_S5 = readb(data + i + 24);
534 XGI21_LCDCapList[k].LVDSVSYNC = pData[i + 16]
535 | (pData[i + 17] << 8);
536 XGI21_LCDCapList[k].VCLKData1 = pData[i + 18];
537 XGI21_LCDCapList[k].VCLKData2 = pData[i + 19];
538 XGI21_LCDCapList[k].PSC_S1 = pData[i + 20];
539 XGI21_LCDCapList[k].PSC_S2 = pData[i + 21];
540 XGI21_LCDCapList[k].PSC_S3 = pData[i + 22];
541 XGI21_LCDCapList[k].PSC_S4 = pData[i + 23];
542 XGI21_LCDCapList[k].PSC_S5 = pData[i + 24];
543 i += 25; 533 i += 25;
544 j--; 534 j--;
545 k++; 535 k++;