diff options
Diffstat (limited to 'drivers/net/macsonic.c')
-rw-r--r-- | drivers/net/macsonic.c | 40 |
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 | ||
64 | static char mac_sonic_string[] = "macsonic"; | 65 | static char mac_sonic_string[] = "macsonic"; |
65 | static 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 | ||
141 | static int macsonic_open(struct net_device* dev) | 141 | static 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: | |||
607 | MODULE_DESCRIPTION("Macintosh SONIC ethernet driver"); | 607 | MODULE_DESCRIPTION("Macintosh SONIC ethernet driver"); |
608 | module_param(sonic_debug, int, 0); | 608 | module_param(sonic_debug, int, 0); |
609 | MODULE_PARM_DESC(sonic_debug, "macsonic debug level (1-4)"); | 609 | MODULE_PARM_DESC(sonic_debug, "macsonic debug level (1-4)"); |
610 | MODULE_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 | ||
634 | static int __init mac_sonic_init_module(void) | 636 | static 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 | |||
654 | out_unregister: | ||
655 | platform_driver_unregister(&mac_sonic_driver); | ||
656 | |||
657 | return -ENOMEM; | ||
658 | } | 639 | } |
659 | 640 | ||
660 | static void __exit mac_sonic_cleanup_module(void) | 641 | static 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 | ||
670 | module_init(mac_sonic_init_module); | 646 | module_init(mac_sonic_init_module); |