diff options
author | Marek Vasut <marek.vasut+renesas@gmail.com> | 2020-03-15 14:42:23 +0100 |
---|---|---|
committer | marex <marex@desktop.lan> | 2020-05-01 12:35:21 +0200 |
commit | ba267c781da73ab0df4a7a57c05ef21c19aee609 (patch) | |
tree | e3abf918d875fc12e0f4d5a956af63a8dbeca970 /drivers/net | |
parent | f0d73f5cd0ec0967fffcdf130a8c016262a216c4 (diff) | |
download | u-boot-ba267c781da73ab0df4a7a57c05ef21c19aee609.zip u-boot-ba267c781da73ab0df4a7a57c05ef21c19aee609.tar.gz u-boot-ba267c781da73ab0df4a7a57c05ef21c19aee609.tar.bz2 |
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>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/smc911x.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c index effee53..364f8c5 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" |