summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/wiznet/w5100.h
diff options
context:
space:
mode:
authorAkinobu Mita2016-04-14 17:11:30 +0200
committerDavid S. Miller2016-04-17 00:30:27 +0200
commit850576cfede986f0683bed25e34bc15712ffb463 (patch)
treee85e7a660171d1cfa92cc595e87494b8ed8bde69 /drivers/net/ethernet/wiznet/w5100.h
parentnet: w5100: move mmiowb into register access callbacks (diff)
downloadkernel-qcow2-linux-850576cfede986f0683bed25e34bc15712ffb463.tar.gz
kernel-qcow2-linux-850576cfede986f0683bed25e34bc15712ffb463.tar.xz
kernel-qcow2-linux-850576cfede986f0683bed25e34bc15712ffb463.zip
net: w5100: add ability to support other bus interface
The w5100 driver currently only supports direct and indirect bus interface mode which use MMIO space for accessing w5100 registers. In order to support SPI interface mode which is supported by W5100 chip, this makes the bus interface abstraction layer more generic so that separated w5100-spi driver can use w5100 driver as core module. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Mike Sinkovsky <msink@permonline.ru> Cc: David S. Miller <davem@davemloft.net> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/wiznet/w5100.h')
-rw-r--r--drivers/net/ethernet/wiznet/w5100.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/net/ethernet/wiznet/w5100.h b/drivers/net/ethernet/wiznet/w5100.h
new file mode 100644
index 000000000000..39d452d878e7
--- /dev/null
+++ b/drivers/net/ethernet/wiznet/w5100.h
@@ -0,0 +1,28 @@
+/*
+ * Ethernet driver for the WIZnet W5100 chip.
+ *
+ * Copyright (C) 2006-2008 WIZnet Co.,Ltd.
+ * Copyright (C) 2012 Mike Sinkovsky <msink@permonline.ru>
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+struct w5100_ops {
+ int (*read)(struct net_device *ndev, u16 addr);
+ int (*write)(struct net_device *ndev, u16 addr, u8 data);
+ int (*read16)(struct net_device *ndev, u16 addr);
+ int (*write16)(struct net_device *ndev, u16 addr, u16 data);
+ int (*readbulk)(struct net_device *ndev, u16 addr, u8 *buf, int len);
+ int (*writebulk)(struct net_device *ndev, u16 addr, const u8 *buf,
+ int len);
+ int (*reset)(struct net_device *ndev);
+ int (*init)(struct net_device *ndev);
+};
+
+void *w5100_ops_priv(const struct net_device *ndev);
+
+int w5100_probe(struct device *dev, const struct w5100_ops *ops,
+ int sizeof_ops_priv, u8 *mac_addr, int irq, int link_gpio);
+int w5100_remove(struct device *dev);
+
+extern const struct dev_pm_ops w5100_pm_ops;