aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pcmcia
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pcmcia')
-rw-r--r--drivers/pcmcia/yenta_socket.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c
index 271a52b7c2e6..f0997c36c9b7 100644
--- a/drivers/pcmcia/yenta_socket.c
+++ b/drivers/pcmcia/yenta_socket.c
@@ -72,6 +72,7 @@ static inline void cb_writel(struct yenta_socket *socket, unsigned reg, u32 val)
72{ 72{
73 debug("%p %04x %08x\n", socket, reg, val); 73 debug("%p %04x %08x\n", socket, reg, val);
74 writel(val, socket->base + reg); 74 writel(val, socket->base + reg);
75 readl(socket->base + reg); /* avoid problems with PCI write posting */
75} 76}
76 77
77static inline u8 config_readb(struct yenta_socket *socket, unsigned offset) 78static inline u8 config_readb(struct yenta_socket *socket, unsigned offset)
@@ -136,6 +137,7 @@ static inline void exca_writeb(struct yenta_socket *socket, unsigned reg, u8 val
136{ 137{
137 debug("%p %04x %02x\n", socket, reg, val); 138 debug("%p %04x %02x\n", socket, reg, val);
138 writeb(val, socket->base + 0x800 + reg); 139 writeb(val, socket->base + 0x800 + reg);
140 readb(socket->base + 0x800 + reg); /* PCI write posting... */
139} 141}
140 142
141static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val) 143static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val)
@@ -143,6 +145,10 @@ static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val)
143 debug("%p %04x %04x\n", socket, reg, val); 145 debug("%p %04x %04x\n", socket, reg, val);
144 writeb(val, socket->base + 0x800 + reg); 146 writeb(val, socket->base + 0x800 + reg);
145 writeb(val >> 8, socket->base + 0x800 + reg + 1); 147 writeb(val >> 8, socket->base + 0x800 + reg + 1);
148
149 /* PCI write posting... */
150 readb(socket->base + 0x800 + reg);
151 readb(socket->base + 0x800 + reg + 1);
146} 152}
147 153
148/* 154/*