diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/smc91x.h | 47 |
2 files changed, 48 insertions, 1 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 9e6933a5088..279ec625cec 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 d2767e6584a..7053026d6c7 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. */ |