提交 f40d24d9 编写于 作者: A Alex Landau 提交者: Bryan Wu

Blackfin arch: Port the dm9000 driver to Blackfin by using the correct low-level io routines

Signed-off-by: NAlex Landau <landau.alex@gmail.com>
Signed-off-by: NBryan Wu <bryan.wu@analog.com>
上级 9be343c5
...@@ -157,6 +157,28 @@ static struct platform_device smc91x_device = { ...@@ -157,6 +157,28 @@ static struct platform_device smc91x_device = {
}; };
#endif #endif
#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
static struct resource dm9000_resources[] = {
[0] = {
.start = 0x203FB800,
.end = 0x203FB800 + 8,
.flags = IORESOURCE_MEM,
},
[1] = {
.start = IRQ_PF9,
.end = IRQ_PF9,
.flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
},
};
static struct platform_device dm9000_device = {
.name = "dm9000",
.id = -1,
.num_resources = ARRAY_SIZE(dm9000_resources),
.resource = dm9000_resources,
};
#endif
#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE) #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
static struct resource sl811_hcd_resources[] = { static struct resource sl811_hcd_resources[] = {
{ {
...@@ -568,6 +590,10 @@ static struct platform_device *stamp_devices[] __initdata = { ...@@ -568,6 +590,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&smc91x_device, &smc91x_device,
#endif #endif
#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
&dm9000_device,
#endif
#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
&bfin_mac_device, &bfin_mac_device,
#endif #endif
......
...@@ -877,7 +877,7 @@ config NET_NETX ...@@ -877,7 +877,7 @@ config NET_NETX
config DM9000 config DM9000
tristate "DM9000 support" tristate "DM9000 support"
depends on ARM || MIPS depends on ARM || BLACKFIN || MIPS
select CRC32 select CRC32
select MII select MII
---help--- ---help---
......
...@@ -104,6 +104,18 @@ ...@@ -104,6 +104,18 @@
#define PRINTK(args...) printk(KERN_DEBUG args) #define PRINTK(args...) printk(KERN_DEBUG args)
#endif #endif
#ifdef CONFIG_BLACKFIN
#define readsb insb
#define readsw insw
#define readsl insl
#define writesb outsb
#define writesw outsw
#define writesl outsl
#define DM9000_IRQ_FLAGS (IRQF_SHARED | IRQF_TRIGGER_HIGH)
#else
#define DM9000_IRQ_FLAGS IRQF_SHARED
#endif
/* /*
* Transmit timeout, default 5 seconds. * Transmit timeout, default 5 seconds.
*/ */
...@@ -431,6 +443,9 @@ dm9000_probe(struct platform_device *pdev) ...@@ -431,6 +443,9 @@ dm9000_probe(struct platform_device *pdev)
db->io_addr = (void __iomem *)base; db->io_addr = (void __iomem *)base;
db->io_data = (void __iomem *)(base + 4); db->io_data = (void __iomem *)(base + 4);
/* ensure at least we have a default set of IO routines */
dm9000_set_io(db, 2);
} else { } else {
db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0); db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
db->data_res = platform_get_resource(pdev, IORESOURCE_MEM, 1); db->data_res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
...@@ -614,7 +629,7 @@ dm9000_open(struct net_device *dev) ...@@ -614,7 +629,7 @@ dm9000_open(struct net_device *dev)
PRINTK2("entering dm9000_open\n"); PRINTK2("entering dm9000_open\n");
if (request_irq(dev->irq, &dm9000_interrupt, IRQF_SHARED, dev->name, dev)) if (request_irq(dev->irq, &dm9000_interrupt, DM9000_IRQ_FLAGS, dev->name, dev))
return -EAGAIN; return -EAGAIN;
/* Initialize DM9000 board */ /* Initialize DM9000 board */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册