Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f40d24d9 authored by Alex Landau's avatar Alex Landau Committed by Bryan Wu
Browse files

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

parent 9be343c5
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -157,6 +157,28 @@ static struct platform_device smc91x_device = {
};
#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)
static struct resource sl811_hcd_resources[] = {
	{
@@ -568,6 +590,10 @@ static struct platform_device *stamp_devices[] __initdata = {
	&smc91x_device,
#endif

#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
	&dm9000_device,
#endif

#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
	&bfin_mac_device,
#endif
+1 −1
Original line number Diff line number Diff line
@@ -877,7 +877,7 @@ config NET_NETX

config DM9000
	tristate "DM9000 support"
	depends on ARM || MIPS
	depends on ARM || BLACKFIN || MIPS
	select CRC32
	select MII
	---help---
+16 −1
Original line number Diff line number Diff line
@@ -104,6 +104,18 @@
#define PRINTK(args...)   printk(KERN_DEBUG args)
#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.
 */
@@ -431,6 +443,9 @@ dm9000_probe(struct platform_device *pdev)
		db->io_addr = (void __iomem *)base;
		db->io_data = (void __iomem *)(base + 4);

		/* ensure at least we have a default set of IO routines */
		dm9000_set_io(db, 2);

	} else {
		db->addr_res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
		db->data_res = platform_get_resource(pdev, IORESOURCE_MEM, 1);
@@ -614,7 +629,7 @@ dm9000_open(struct net_device *dev)

	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;

	/* Initialize DM9000 board */