提交 16dd18b0 编写于 作者: T Thomas Chou 提交者: David S. Miller

ethoc: inline regs access

Signed-off-by: NThomas Chou <thomas@wytron.com.tw>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 f6965582
...@@ -222,24 +222,25 @@ struct ethoc_bd { ...@@ -222,24 +222,25 @@ struct ethoc_bd {
u32 addr; u32 addr;
}; };
static u32 ethoc_read(struct ethoc *dev, loff_t offset) static inline u32 ethoc_read(struct ethoc *dev, loff_t offset)
{ {
return ioread32(dev->iobase + offset); return ioread32(dev->iobase + offset);
} }
static void ethoc_write(struct ethoc *dev, loff_t offset, u32 data) static inline void ethoc_write(struct ethoc *dev, loff_t offset, u32 data)
{ {
iowrite32(data, dev->iobase + offset); iowrite32(data, dev->iobase + offset);
} }
static void ethoc_read_bd(struct ethoc *dev, int index, struct ethoc_bd *bd) static inline void ethoc_read_bd(struct ethoc *dev, int index,
struct ethoc_bd *bd)
{ {
loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd)); loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd));
bd->stat = ethoc_read(dev, offset + 0); bd->stat = ethoc_read(dev, offset + 0);
bd->addr = ethoc_read(dev, offset + 4); bd->addr = ethoc_read(dev, offset + 4);
} }
static void ethoc_write_bd(struct ethoc *dev, int index, static inline void ethoc_write_bd(struct ethoc *dev, int index,
const struct ethoc_bd *bd) const struct ethoc_bd *bd)
{ {
loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd)); loff_t offset = ETHOC_BD_BASE + (index * sizeof(struct ethoc_bd));
...@@ -247,33 +248,33 @@ static void ethoc_write_bd(struct ethoc *dev, int index, ...@@ -247,33 +248,33 @@ static void ethoc_write_bd(struct ethoc *dev, int index,
ethoc_write(dev, offset + 4, bd->addr); ethoc_write(dev, offset + 4, bd->addr);
} }
static void ethoc_enable_irq(struct ethoc *dev, u32 mask) static inline void ethoc_enable_irq(struct ethoc *dev, u32 mask)
{ {
u32 imask = ethoc_read(dev, INT_MASK); u32 imask = ethoc_read(dev, INT_MASK);
imask |= mask; imask |= mask;
ethoc_write(dev, INT_MASK, imask); ethoc_write(dev, INT_MASK, imask);
} }
static void ethoc_disable_irq(struct ethoc *dev, u32 mask) static inline void ethoc_disable_irq(struct ethoc *dev, u32 mask)
{ {
u32 imask = ethoc_read(dev, INT_MASK); u32 imask = ethoc_read(dev, INT_MASK);
imask &= ~mask; imask &= ~mask;
ethoc_write(dev, INT_MASK, imask); ethoc_write(dev, INT_MASK, imask);
} }
static void ethoc_ack_irq(struct ethoc *dev, u32 mask) static inline void ethoc_ack_irq(struct ethoc *dev, u32 mask)
{ {
ethoc_write(dev, INT_SOURCE, mask); ethoc_write(dev, INT_SOURCE, mask);
} }
static void ethoc_enable_rx_and_tx(struct ethoc *dev) static inline void ethoc_enable_rx_and_tx(struct ethoc *dev)
{ {
u32 mode = ethoc_read(dev, MODER); u32 mode = ethoc_read(dev, MODER);
mode |= MODER_RXEN | MODER_TXEN; mode |= MODER_RXEN | MODER_TXEN;
ethoc_write(dev, MODER, mode); ethoc_write(dev, MODER, mode);
} }
static void ethoc_disable_rx_and_tx(struct ethoc *dev) static inline void ethoc_disable_rx_and_tx(struct ethoc *dev)
{ {
u32 mode = ethoc_read(dev, MODER); u32 mode = ethoc_read(dev, MODER);
mode &= ~(MODER_RXEN | MODER_TXEN); mode &= ~(MODER_RXEN | MODER_TXEN);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册