mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
net: pcnet: fix I/O primitives for memory access
Commit 69529c9120
("net: pcnet: Switch to PCI memory access")
switched from PCI IO access to PCI memory access without updating
the I/O primitives. Contrary to SH, the primitives for memory
access and IO access are implemented differently. Thus doing
memory access with IO port primitives breaks the driver on
MIPS Malta board.
Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
parent
04da42770b
commit
8510580f2e
1 changed files with 23 additions and 11 deletions
|
@ -91,37 +91,49 @@ static pcnet_priv_t *lp;
|
|||
|
||||
static u16 pcnet_read_csr(struct eth_device *dev, int index)
|
||||
{
|
||||
outw(index, dev->iobase + PCNET_RAP);
|
||||
return inw(dev->iobase + PCNET_RDP);
|
||||
void __iomem *base = (void __iomem *)dev->iobase;
|
||||
|
||||
writew(index, base + PCNET_RAP);
|
||||
return readw(base + PCNET_RDP);
|
||||
}
|
||||
|
||||
static void pcnet_write_csr(struct eth_device *dev, int index, u16 val)
|
||||
{
|
||||
outw(index, dev->iobase + PCNET_RAP);
|
||||
outw(val, dev->iobase + PCNET_RDP);
|
||||
void __iomem *base = (void __iomem *)dev->iobase;
|
||||
|
||||
writew(index, base + PCNET_RAP);
|
||||
writew(val, base + PCNET_RDP);
|
||||
}
|
||||
|
||||
static u16 pcnet_read_bcr(struct eth_device *dev, int index)
|
||||
{
|
||||
outw(index, dev->iobase + PCNET_RAP);
|
||||
return inw(dev->iobase + PCNET_BDP);
|
||||
void __iomem *base = (void __iomem *)dev->iobase;
|
||||
|
||||
writew(index, base + PCNET_RAP);
|
||||
return readw(base + PCNET_BDP);
|
||||
}
|
||||
|
||||
static void pcnet_write_bcr(struct eth_device *dev, int index, u16 val)
|
||||
{
|
||||
outw(index, dev->iobase + PCNET_RAP);
|
||||
outw(val, dev->iobase + PCNET_BDP);
|
||||
void __iomem *base = (void __iomem *)dev->iobase;
|
||||
|
||||
writew(index, base + PCNET_RAP);
|
||||
writew(val, base + PCNET_BDP);
|
||||
}
|
||||
|
||||
static void pcnet_reset(struct eth_device *dev)
|
||||
{
|
||||
inw(dev->iobase + PCNET_RESET);
|
||||
void __iomem *base = (void __iomem *)dev->iobase;
|
||||
|
||||
readw(base + PCNET_RESET);
|
||||
}
|
||||
|
||||
static int pcnet_check(struct eth_device *dev)
|
||||
{
|
||||
outw(88, dev->iobase + PCNET_RAP);
|
||||
return inw(dev->iobase + PCNET_RAP) == 88;
|
||||
void __iomem *base = (void __iomem *)dev->iobase;
|
||||
|
||||
writew(88, base + PCNET_RAP);
|
||||
return readw(base + PCNET_RAP) == 88;
|
||||
}
|
||||
|
||||
static int pcnet_init (struct eth_device *dev, bd_t * bis);
|
||||
|
|
Loading…
Reference in a new issue