summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut+renesas@gmail.com>2020-03-15 14:42:23 +0100
committermarex <marex@desktop.lan>2020-05-01 12:35:21 +0200
commitba267c781da73ab0df4a7a57c05ef21c19aee609 (patch)
treee3abf918d875fc12e0f4d5a956af63a8dbeca970
parentf0d73f5cd0ec0967fffcdf130a8c016262a216c4 (diff)
net: smc911x: Convert IO accessors to {read,write}{w,l}()
Convert the IO accessors to standard ones instead of using volatile void pointers, as those do not cover all the bus access details. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Joe Hershberger <joe.hershberger@ni.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
-rw-r--r--drivers/net/smc911x.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index effee5367c..364f8c5da8 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -10,6 +10,7 @@
#include <malloc.h>
#include <net.h>
#include <miiphy.h>
+#include <linux/io.h>
#include <linux/types.h>
#include "smc911x.h"
@@ -46,23 +47,23 @@ static const struct chip_id chip_ids[] = {
#if defined (CONFIG_SMC911X_32_BIT)
static u32 smc911x_reg_read(struct eth_device *dev, u32 offset)
{
- return *(volatile u32*)(dev->iobase + offset);
+ return readl(dev->iobase + offset);
}
static void smc911x_reg_write(struct eth_device *dev, u32 offset, u32 val)
{
- *(volatile u32*)(dev->iobase + offset) = val;
+ writel(val, dev->iobase + offset);
}
#elif defined (CONFIG_SMC911X_16_BIT)
static u32 smc911x_reg_read(struct eth_device *dev, u32 offset)
{
- volatile u16 *addr_16 = (u16 *)(dev->iobase + offset);
- return ((*addr_16 & 0x0000ffff) | (*(addr_16 + 1) << 16));
+ return (readw(dev->iobase + offset) & 0xffff) |
+ (readw(dev->iobase + offset + 2) << 16);
}
static void smc911x_reg_write(struct eth_device *dev, u32 offset, u32 val)
{
- *(volatile u16 *)(dev->iobase + offset) = (u16)val;
- *(volatile u16 *)(dev->iobase + offset + 2) = (u16)(val >> 16);
+ writew(val & 0xffff, dev->iobase + offset);
+ writew(val >> 16, dev->iobase + offset + 2);
}
#else
#error "SMC911X: undefined bus width"