From e5fcfc1f8d3cfaf432a93d39df3e5d7718c58848 Mon Sep 17 00:00:00 2001 From: Joe Perches Date: Tue, 5 May 2015 10:06:05 -0700 Subject: [PATCH] arcnet: Add arcnet_ macros arcnet uses an I/O scheme which can align I/O addresses to word boundaries on different architectures. Add arcnet specific macros which can hide this alignment calculation. Signed-off-by: Joe Perches Signed-off-by: Michael Grzeschik --- drivers/net/arcnet/arcdevice.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/net/arcnet/arcdevice.h b/drivers/net/arcnet/arcdevice.h index 9ca135d0f114..95e7ed6781c3 100644 --- a/drivers/net/arcnet/arcdevice.h +++ b/drivers/net/arcnet/arcdevice.h @@ -342,5 +342,30 @@ netdev_tx_t arcnet_send_packet(struct sk_buff *skb, struct net_device *dev); void arcnet_timeout(struct net_device *dev); +/* I/O equivalents */ + +/* addr and offset allow register like names to define the actual IO address. + * A configuration option multiplies the offset for alignment. + */ +#define arcnet_inb(addr, offset) \ + inb((addr) + (offset)) +#define arcnet_outb(value, addr, offset) \ + outb(value, (addr) + (offset)) + +#define arcnet_insb(addr, offset, buffer, count) \ + insb((addr) + (offset), buffer, count) +#define arcnet_outsb(addr, offset, buffer, count) \ + outsb((addr) + (offset), buffer, count) + +#define arcnet_inw(addr, offset) \ + inw((addr) + (offset)) +#define arcnet_outw(value, addr, offset) \ + outw(value, (addr) + (offset)) + +#define arcnet_insw(addr, offset, buffer, count) \ + insw((addr) + (offset), buffer, count) +#define arcnet_outsw(addr, offset, buffer, count) \ + outsw((addr) + (offset), buffer, count) + #endif /* __KERNEL__ */ #endif /* _LINUX_ARCDEVICE_H */ -- 2.20.1