diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2006-11-11 07:25:13 +0100 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-12-04 10:38:55 +0100 |
commit | 3bc0f40c287a435805b0545ffc44ea41f11cd43e (patch) | |
tree | a30860fe647dc7acc674d3da149aad22d6150b24 /drivers | |
parent | [POWERPC] Cell "Spider" MMIO workarounds (diff) | |
download | linux-3bc0f40c287a435805b0545ffc44ea41f11cd43e.tar.xz linux-3bc0f40c287a435805b0545ffc44ea41f11cd43e.zip |
[POWERPC] Spider uses low level BE MMIO accessors
We use the powerpc specific low level MMIO accessor variants instead
of readl() or readl_be() because we know spidernet is not a real PCI
device and we can thus avoid the performance hit caused by the PCI
workarounds.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/spider_net.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index cef7e6671c49..13e0a43e423b 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c @@ -88,12 +88,11 @@ MODULE_DEVICE_TABLE(pci, spider_net_pci_tbl); static inline u32 spider_net_read_reg(struct spider_net_card *card, u32 reg) { - u32 value; - - value = readl(card->regs + reg); - value = le32_to_cpu(value); - - return value; + /* We use the powerpc specific variants instead of readl_be() because + * we know spidernet is not a real PCI device and we can thus avoid the + * performance hit caused by the PCI workarounds. + */ + return in_be32(card->regs + reg); } /** @@ -105,8 +104,11 @@ spider_net_read_reg(struct spider_net_card *card, u32 reg) static inline void spider_net_write_reg(struct spider_net_card *card, u32 reg, u32 value) { - value = cpu_to_le32(value); - writel(value, card->regs + reg); + /* We use the powerpc specific variants instead of writel_be() because + * we know spidernet is not a real PCI device and we can thus avoid the + * performance hit caused by the PCI workarounds. + */ + out_be32(card->regs + reg, value); } /** spider_net_write_phy - write to phy register |