X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fjazzsonic.c;h=75f6f441e876c69322db9ab806960f8b15c08c84;hb=88ca2d070c3a169611ec38f00e945a036564ca26;hp=661d75b4cad205a65dcd6e42b54eaccf07f0a9c7;hpb=c4e00fac42f268ed0a547cdd1d12bb8399864040;p=powerpc.git diff --git a/drivers/net/jazzsonic.c b/drivers/net/jazzsonic.c index 661d75b4ca..75f6f441e8 100644 --- a/drivers/net/jazzsonic.c +++ b/drivers/net/jazzsonic.c @@ -7,10 +7,10 @@ * dhd's support for 16-bit cards. * * (C) 1996,1998 by Thomas Bogendoerfer (tsbogend@alpha.franken.de) - * + * * This driver is based on work from Andreas Busse, but most of * the code is rewritten. - * + * * (C) 1995 by Andreas Busse (andy@waldorf-gmbh.de) * * A driver for the onboard Sonic ethernet controller on Mips Jazz @@ -65,7 +65,7 @@ do { \ /* use 0 for production, 1 for verification, >1 for debug */ #ifdef SONIC_DEBUG static unsigned int sonic_debug = SONIC_DEBUG; -#else +#else static unsigned int sonic_debug = 1; #endif @@ -80,7 +80,7 @@ static struct { /* * We cannot use station (ethernet) address prefixes to detect the * sonic controller since these are board manufacturer depended. - * So we check for known Silicon Revision IDs instead. + * So we check for known Silicon Revision IDs instead. */ static unsigned short known_revisions[] = { @@ -88,6 +88,23 @@ static unsigned short known_revisions[] = 0xffff /* end of list */ }; +static int jazzsonic_open(struct net_device* dev) +{ + if (request_irq(dev->irq, &sonic_interrupt, IRQF_DISABLED, "sonic", dev)) { + printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, dev->irq); + return -EAGAIN; + } + return sonic_open(dev); +} + +static int jazzsonic_close(struct net_device* dev) +{ + int err; + err = sonic_close(dev); + free_irq(dev->irq, dev); + return err; +} + static int __init sonic_probe1(struct net_device *dev) { static unsigned version_printed; @@ -119,7 +136,7 @@ static int __init sonic_probe1(struct net_device *dev) silicon_revision); goto out; } - + if (sonic_debug && version_printed++ == 0) printk(version); @@ -138,7 +155,7 @@ static int __init sonic_probe1(struct net_device *dev) } err = -ENOMEM; - + /* Initialize the device structure. */ lp->dma_bitmode = SONIC_BITMODE32; @@ -169,8 +186,8 @@ static int __init sonic_probe1(struct net_device *dev) lp->rra_laddr = lp->rda_laddr + (SIZEOF_SONIC_RD * SONIC_NUM_RDS * SONIC_BUS_SCALE(lp->dma_bitmode)); - dev->open = sonic_open; - dev->stop = sonic_close; + dev->open = jazzsonic_open; + dev->stop = jazzsonic_close; dev->hard_start_xmit = sonic_send_packet; dev->get_stats = sonic_get_stats; dev->set_multicast_list = &sonic_multicast_list; @@ -260,8 +277,6 @@ MODULE_DESCRIPTION("Jazz SONIC ethernet driver"); module_param(sonic_debug, int, 0); MODULE_PARM_DESC(sonic_debug, "jazzsonic debug level (1-4)"); -#define SONIC_IRQ_FLAG IRQF_DISABLED - #include "sonic.c" static int __devexit jazz_sonic_device_remove (struct platform_device *pdev) @@ -269,11 +284,11 @@ static int __devexit jazz_sonic_device_remove (struct platform_device *pdev) struct net_device *dev = platform_get_drvdata(pdev); struct sonic_local* lp = netdev_priv(dev); - unregister_netdev (dev); + unregister_netdev(dev); dma_free_coherent(lp->device, SIZEOF_SONIC_DESC * SONIC_BUS_SCALE(lp->dma_bitmode), lp->descriptors, lp->descriptors_laddr); release_region (dev->base_addr, SONIC_MEM_SIZE); - free_netdev (dev); + free_netdev(dev); return 0; }