net: eepro100: Use standard I/O accessors
authorMarek Vasut <marek.vasut+renesas@gmail.com>
Sat, 23 May 2020 12:14:45 +0000 (14:14 +0200)
committerMarek Vasut <marek.vasut+renesas@gmail.com>
Thu, 18 Jun 2020 17:34:40 +0000 (19:34 +0200)
The current eepro100 driver accesses its memory mapped registers directly
instead of using the standard I/O accessors. This can cause problems on
some systems as the accesses can get out of order. So convert the direct
volatile dereferences to use the normal in/out macros.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
drivers/net/eepro100.c

index d3ced08..5d11665 100644 (file)
@@ -220,23 +220,23 @@ static void eepro100_halt(struct eth_device *dev);
 
 static inline int INW(struct eth_device *dev, u_long addr)
 {
-       return le16_to_cpu(*(volatile u16 *)(addr + (u_long)dev->iobase));
+       return le16_to_cpu(readw(addr + (void *)dev->iobase));
 }
 
 static inline void OUTW(struct eth_device *dev, int command, u_long addr)
 {
-       *(volatile u16 *)((addr + (u_long)dev->iobase)) = cpu_to_le16(command);
+       writew(cpu_to_le16(command), addr + (void *)dev->iobase);
 }
 
 static inline void OUTL(struct eth_device *dev, int command, u_long addr)
 {
-       *(volatile u32 *)((addr + (u_long)dev->iobase)) = cpu_to_le32(command);
+       writel(cpu_to_le32(command), addr + (void *)dev->iobase);
 }
 
 #if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
 static inline int INL(struct eth_device *dev, u_long addr)
 {
-       return le32_to_cpu(*(volatile u32 *)(addr + (u_long)dev->iobase));
+       return le32_to_cpu(readl(addr + (void *)dev->iobase));
 }
 
 static int get_phyreg(struct eth_device *dev, unsigned char addr,