diff options
Diffstat (limited to 'drivers/pcmcia')
-rw-r--r-- | drivers/pcmcia/yenta_socket.c | 6 |
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 | ||
77 | static inline u8 config_readb(struct yenta_socket *socket, unsigned offset) | 78 | static 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 | ||
141 | static void exca_writew(struct yenta_socket *socket, unsigned reg, u16 val) | 143 | static 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 | /* |