diff options
author | Aaro Koskinen <aaro.koskinen@iki.fi> | 2011-09-13 15:49:31 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-09-16 14:16:47 -0400 |
commit | 863c02af581e0d1b0cf57e9f3b785572bcfcd980 (patch) | |
tree | a6ac67821c0c076ce76a41653827f8e7fcde6092 /drivers/staging/xgifb/XGI_main_26.c | |
parent | d15cce50161bbb46236f9c50ab044c795cbbecc0 (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.c | 54 |
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: | |||
498 | static int XGIfb_GetXG21LVDSData(void) | 498 | static 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++; |