浏览代码

net: add ColdFire support to the smc91x driver

Some embedded ColdFire based boards use the SMC 91x family of ethernet
devices. (For example the Freescale M5249C3 and MoretonBay NETtel).

Add IO access support to the SMC91x driver, and allow this driver to
be configured for ColdFire platforms.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Greg Ungerer 15 年之前
父节点
当前提交
717ea4b347
共有 2 个文件被更改,包括 29 次插入1 次删除
  1. 1 1
      drivers/net/Kconfig
  2. 28 0
      drivers/net/smc91x.h

+ 1 - 1
drivers/net/Kconfig

@@ -907,7 +907,7 @@ config SMC91X
 	select CRC32
 	select CRC32
 	select MII
 	select MII
 	depends on ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || \
 	depends on ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || \
-		MIPS || BLACKFIN || MN10300
+		MIPS || BLACKFIN || MN10300 || COLDFIRE
 	help
 	help
 	  This is a driver for SMC's 91x series of Ethernet chipsets,
 	  This is a driver for SMC's 91x series of Ethernet chipsets,
 	  including the SMC91C94 and the SMC91C111. Say Y if you want it
 	  including the SMC91C94 and the SMC91C111. Say Y if you want it

+ 28 - 0
drivers/net/smc91x.h

@@ -344,6 +344,34 @@ static inline void LPD7_SMC_outsw (unsigned char* a, int r,
 
 
 #define SMC_IRQ_FLAGS		IRQF_TRIGGER_HIGH
 #define SMC_IRQ_FLAGS		IRQF_TRIGGER_HIGH
 
 
+#elif defined(CONFIG_COLDFIRE)
+
+#define SMC_CAN_USE_8BIT	0
+#define SMC_CAN_USE_16BIT	1
+#define SMC_CAN_USE_32BIT	0
+#define SMC_NOWAIT		1
+
+static inline void mcf_insw(void *a, unsigned char *p, int l)
+{
+	u16 *wp = (u16 *) p;
+	while (l-- > 0)
+		*wp++ = readw(a);
+}
+
+static inline void mcf_outsw(void *a, unsigned char *p, int l)
+{
+	u16 *wp = (u16 *) p;
+	while (l-- > 0)
+		writew(*wp++, a);
+}
+
+#define SMC_inw(a, r)		_swapw(readw((a) + (r)))
+#define SMC_outw(v, a, r)	writew(_swapw(v), (a) + (r))
+#define SMC_insw(a, r, p, l)	mcf_insw(a + r, p, l)
+#define SMC_outsw(a, r, p, l)	mcf_outsw(a + r, p, l)
+
+#define SMC_IRQ_FLAGS		(IRQF_DISABLED)
+
 #else
 #else
 
 
 /*
 /*