aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/Kconfig2
-rw-r--r--drivers/net/smc91x.h47
2 files changed, 48 insertions, 1 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 9e6933a5088e..279ec625cec4 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -822,7 +822,7 @@ config SMC91X
822 tristate "SMC 91C9x/91C1xxx support" 822 tristate "SMC 91C9x/91C1xxx support"
823 select CRC32 823 select CRC32
824 select MII 824 select MII
825 depends on NET_ETHERNET && (ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || SOC_AU1X00) 825 depends on NET_ETHERNET && (ARM || REDWOOD_5 || REDWOOD_6 || M32R || SUPERH || SOC_AU1X00 || BFIN)
826 help 826 help
827 This is a driver for SMC's 91x series of Ethernet chipsets, 827 This is a driver for SMC's 91x series of Ethernet chipsets,
828 including the SMC91C94 and the SMC91C111. Say Y if you want it 828 including the SMC91C94 and the SMC91C111. Say Y if you want it
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h
index d2767e6584a9..7053026d6c76 100644
--- a/drivers/net/smc91x.h
+++ b/drivers/net/smc91x.h
@@ -55,6 +55,53 @@
55#define SMC_insw(a, r, p, l) readsw((a) + (r), p, l) 55#define SMC_insw(a, r, p, l) readsw((a) + (r), p, l)
56#define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) 56#define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l)
57 57
58#elif defined(CONFIG_BFIN)
59
60#define SMC_IRQ_FLAGS IRQF_TRIGGER_HIGH
61
62# if defined (CONFIG_BFIN561_EZKIT)
63#define SMC_CAN_USE_8BIT 0
64#define SMC_CAN_USE_16BIT 1
65#define SMC_CAN_USE_32BIT 1
66#define SMC_IO_SHIFT 0
67#define SMC_NOWAIT 1
68#define SMC_USE_BFIN_DMA 0
69
70
71#define SMC_inw(a, r) readw((a) + (r))
72#define SMC_outw(v, a, r) writew(v, (a) + (r))
73#define SMC_inl(a, r) readl((a) + (r))
74#define SMC_outl(v, a, r) writel(v, (a) + (r))
75#define SMC_outsl(a, r, p, l) outsl((unsigned long *)((a) + (r)), p, l)
76#define SMC_insl(a, r, p, l) insl ((unsigned long *)((a) + (r)), p, l)
77# else
78#define SMC_CAN_USE_8BIT 0
79#define SMC_CAN_USE_16BIT 1
80#define SMC_CAN_USE_32BIT 0
81#define SMC_IO_SHIFT 0
82#define SMC_NOWAIT 1
83#define SMC_USE_BFIN_DMA 0
84
85
86#define SMC_inw(a, r) readw((a) + (r))
87#define SMC_outw(v, a, r) writew(v, (a) + (r))
88#define SMC_outsw(a, r, p, l) outsw((unsigned long *)((a) + (r)), p, l)
89#define SMC_insw(a, r, p, l) insw ((unsigned long *)((a) + (r)), p, l)
90# endif
91/* check if the mac in reg is valid */
92#define SMC_GET_MAC_ADDR(addr) \
93 do { \
94 unsigned int __v; \
95 __v = SMC_inw(ioaddr, ADDR0_REG); \
96 addr[0] = __v; addr[1] = __v >> 8; \
97 __v = SMC_inw(ioaddr, ADDR1_REG); \
98 addr[2] = __v; addr[3] = __v >> 8; \
99 __v = SMC_inw(ioaddr, ADDR2_REG); \
100 addr[4] = __v; addr[5] = __v >> 8; \
101 if (*(u32 *)(&addr[0]) == 0xFFFFFFFF) { \
102 random_ether_addr(addr); \
103 } \
104 } while (0)
58#elif defined(CONFIG_REDWOOD_5) || defined(CONFIG_REDWOOD_6) 105#elif defined(CONFIG_REDWOOD_5) || defined(CONFIG_REDWOOD_6)
59 106
60/* We can only do 16-bit reads and writes in the static memory space. */ 107/* We can only do 16-bit reads and writes in the static memory space. */