aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/macsonic.c
diff options
context:
space:
mode:
authorAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
committerAndrea Bastoni <bastoni@cs.unc.edu>2010-05-30 19:16:45 -0400
commitada47b5fe13d89735805b566185f4885f5a3f750 (patch)
tree644b88f8a71896307d71438e9b3af49126ffb22b /drivers/net/macsonic.c
parent43e98717ad40a4ae64545b5ba047c7b86aa44f4f (diff)
parent3280f21d43ee541f97f8cda5792150d2dbec20d5 (diff)
Merge branch 'wip-2.6.34' into old-private-masterarchived-private-master
Diffstat (limited to 'drivers/net/macsonic.c')
-rw-r--r--drivers/net/macsonic.c40
1 files changed, 8 insertions, 32 deletions
diff --git a/drivers/net/macsonic.c b/drivers/net/macsonic.c
index b3d7d8d77f46..adb54fe2d82a 100644
--- a/drivers/net/macsonic.c
+++ b/drivers/net/macsonic.c
@@ -35,11 +35,11 @@
35#include <linux/module.h> 35#include <linux/module.h>
36#include <linux/types.h> 36#include <linux/types.h>
37#include <linux/fcntl.h> 37#include <linux/fcntl.h>
38#include <linux/gfp.h>
38#include <linux/interrupt.h> 39#include <linux/interrupt.h>
39#include <linux/init.h> 40#include <linux/init.h>
40#include <linux/ioport.h> 41#include <linux/ioport.h>
41#include <linux/in.h> 42#include <linux/in.h>
42#include <linux/slab.h>
43#include <linux/string.h> 43#include <linux/string.h>
44#include <linux/delay.h> 44#include <linux/delay.h>
45#include <linux/nubus.h> 45#include <linux/nubus.h>
@@ -50,6 +50,7 @@
50#include <linux/platform_device.h> 50#include <linux/platform_device.h>
51#include <linux/dma-mapping.h> 51#include <linux/dma-mapping.h>
52#include <linux/bitrev.h> 52#include <linux/bitrev.h>
53#include <linux/slab.h>
53 54
54#include <asm/bootinfo.h> 55#include <asm/bootinfo.h>
55#include <asm/system.h> 56#include <asm/system.h>
@@ -62,7 +63,6 @@
62#include <asm/mac_via.h> 63#include <asm/mac_via.h>
63 64
64static char mac_sonic_string[] = "macsonic"; 65static char mac_sonic_string[] = "macsonic";
65static struct platform_device *mac_sonic_device;
66 66
67#include "sonic.h" 67#include "sonic.h"
68 68
@@ -140,7 +140,7 @@ static irqreturn_t macsonic_interrupt(int irq, void *dev_id)
140 140
141static int macsonic_open(struct net_device* dev) 141static int macsonic_open(struct net_device* dev)
142{ 142{
143 if (request_irq(dev->irq, &sonic_interrupt, IRQ_FLG_FAST, "sonic", dev)) { 143 if (request_irq(dev->irq, sonic_interrupt, IRQ_FLG_FAST, "sonic", dev)) {
144 printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, dev->irq); 144 printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, dev->irq);
145 return -EAGAIN; 145 return -EAGAIN;
146 } 146 }
@@ -149,7 +149,7 @@ static int macsonic_open(struct net_device* dev)
149 * rupt as well, which must prevent re-entrance of the sonic handler. 149 * rupt as well, which must prevent re-entrance of the sonic handler.
150 */ 150 */
151 if (dev->irq == IRQ_AUTO_3) 151 if (dev->irq == IRQ_AUTO_3)
152 if (request_irq(IRQ_NUBUS_9, &macsonic_interrupt, IRQ_FLG_FAST, "sonic", dev)) { 152 if (request_irq(IRQ_NUBUS_9, macsonic_interrupt, IRQ_FLG_FAST, "sonic", dev)) {
153 printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, IRQ_NUBUS_9); 153 printk(KERN_ERR "%s: unable to get IRQ %d.\n", dev->name, IRQ_NUBUS_9);
154 free_irq(dev->irq, dev); 154 free_irq(dev->irq, dev);
155 return -EAGAIN; 155 return -EAGAIN;
@@ -607,6 +607,7 @@ out:
607MODULE_DESCRIPTION("Macintosh SONIC ethernet driver"); 607MODULE_DESCRIPTION("Macintosh SONIC ethernet driver");
608module_param(sonic_debug, int, 0); 608module_param(sonic_debug, int, 0);
609MODULE_PARM_DESC(sonic_debug, "macsonic debug level (1-4)"); 609MODULE_PARM_DESC(sonic_debug, "macsonic debug level (1-4)");
610MODULE_ALIAS("platform:macsonic");
610 611
611#include "sonic.c" 612#include "sonic.c"
612 613
@@ -627,44 +628,19 @@ static struct platform_driver mac_sonic_driver = {
627 .probe = mac_sonic_probe, 628 .probe = mac_sonic_probe,
628 .remove = __devexit_p(mac_sonic_device_remove), 629 .remove = __devexit_p(mac_sonic_device_remove),
629 .driver = { 630 .driver = {
630 .name = mac_sonic_string, 631 .name = mac_sonic_string,
632 .owner = THIS_MODULE,
631 }, 633 },
632}; 634};
633 635
634static int __init mac_sonic_init_module(void) 636static int __init mac_sonic_init_module(void)
635{ 637{
636 int err; 638 return platform_driver_register(&mac_sonic_driver);
637
638 if ((err = platform_driver_register(&mac_sonic_driver))) {
639 printk(KERN_ERR "Driver registration failed\n");
640 return err;
641 }
642
643 mac_sonic_device = platform_device_alloc(mac_sonic_string, 0);
644 if (!mac_sonic_device)
645 goto out_unregister;
646
647 if (platform_device_add(mac_sonic_device)) {
648 platform_device_put(mac_sonic_device);
649 mac_sonic_device = NULL;
650 }
651
652 return 0;
653
654out_unregister:
655 platform_driver_unregister(&mac_sonic_driver);
656
657 return -ENOMEM;
658} 639}
659 640
660static void __exit mac_sonic_cleanup_module(void) 641static void __exit mac_sonic_cleanup_module(void)
661{ 642{
662 platform_driver_unregister(&mac_sonic_driver); 643 platform_driver_unregister(&mac_sonic_driver);
663
664 if (mac_sonic_device) {
665 platform_device_unregister(mac_sonic_device);
666 mac_sonic_device = NULL;
667 }
668} 644}
669 645
670module_init(mac_sonic_init_module); 646module_init(mac_sonic_init_module);