diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2005-09-29 22:26:51 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-09-29 22:26:51 -0400 |
commit | 017fb98e70351e9fb5635c299c4d1c50e2f8b823 (patch) | |
tree | 9ccad087ad69f2cbc080f4ddefb3c110d5b7aafc | |
parent | 717463d806a53380a691eeb0136a4b750a9f9ae0 (diff) |
[RADEON]: Fix unaligned I/O port access during probe.
The driver does a readl() on DEVICE_ID which is 2-byte aligned and
2-bytes in size. It's doing this read just to flush write buffers.
Create IN16() and OUT16() macros, and use the former to do this I/O
load.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/video/aty/radeon_base.c | 2 | ||||
-rw-r--r-- | drivers/video/aty/radeonfb.h | 2 |
2 files changed, 3 insertions, 1 deletions
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index 046b47860266..8a24a66d9ba8 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c | |||
@@ -475,7 +475,7 @@ static int __devinit radeon_probe_pll_params(struct radeonfb_info *rinfo) | |||
475 | */ | 475 | */ |
476 | 476 | ||
477 | /* Flush PCI buffers ? */ | 477 | /* Flush PCI buffers ? */ |
478 | tmp = INREG(DEVICE_ID); | 478 | tmp = INREG16(DEVICE_ID); |
479 | 479 | ||
480 | local_irq_disable(); | 480 | local_irq_disable(); |
481 | 481 | ||
diff --git a/drivers/video/aty/radeonfb.h b/drivers/video/aty/radeonfb.h index 659bc9f62244..01b8b2f78514 100644 --- a/drivers/video/aty/radeonfb.h +++ b/drivers/video/aty/radeonfb.h | |||
@@ -395,6 +395,8 @@ static inline void _radeon_msleep(struct radeonfb_info *rinfo, unsigned long ms) | |||
395 | 395 | ||
396 | #define INREG8(addr) readb((rinfo->mmio_base)+addr) | 396 | #define INREG8(addr) readb((rinfo->mmio_base)+addr) |
397 | #define OUTREG8(addr,val) writeb(val, (rinfo->mmio_base)+addr) | 397 | #define OUTREG8(addr,val) writeb(val, (rinfo->mmio_base)+addr) |
398 | #define INREG16(addr) readw((rinfo->mmio_base)+addr) | ||
399 | #define OUTREG16(addr,val) writew(val, (rinfo->mmio_base)+addr) | ||
398 | #define INREG(addr) readl((rinfo->mmio_base)+addr) | 400 | #define INREG(addr) readl((rinfo->mmio_base)+addr) |
399 | #define OUTREG(addr,val) writel(val, (rinfo->mmio_base)+addr) | 401 | #define OUTREG(addr,val) writel(val, (rinfo->mmio_base)+addr) |
400 | 402 | ||