libata-sff: port_task is SFF specific
[safe/jmp/linux-2.6] / drivers / net / tokenring / skisa.c
index 3c7c662..46db5c5 100644 (file)
@@ -13,7 +13,7 @@
  *     - SysKonnect TR4/16(+) ISA      (SK-4190)
  *
  *  Maintainer(s):
- *    AF        Adam Fritzler           mid@auk.cx
+ *    AF        Adam Fritzler
  *    JF       Jochen Friedrich        jochen@scram.de
  *
  *  Modification History:
@@ -36,6 +36,7 @@ static const char version[] = "skisa.c: v1.03 09/12/2002 by Jochen Friedrich\n";
 #include <linux/init.h>
 #include <linux/netdevice.h>
 #include <linux/trdevice.h>
+#include <linux/platform_device.h>
 
 #include <asm/system.h>
 #include <asm/io.h>
@@ -132,6 +133,8 @@ static int __init sk_isa_probe1(struct net_device *dev, int ioaddr)
        return 0;
 }
 
+static struct net_device_ops sk_isa_netdev_ops __read_mostly;
+
 static int __init setup_card(struct net_device *dev, struct device *pdev)
 {
        struct net_local *tp;
@@ -142,7 +145,6 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
        if (!dev)
                return -ENOMEM;
 
-       SET_MODULE_OWNER(dev);
        if (dev->base_addr)     /* probe specific location */
                err = sk_isa_probe1(dev, dev->base_addr);
        else {
@@ -169,11 +171,8 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
                
        sk_isa_read_eeprom(dev);
 
-       printk(KERN_DEBUG "skisa.c:    Ring Station Address: ");
-       printk("%2.2x", dev->dev_addr[0]);
-       for (j = 1; j < 6; j++)
-               printk(":%2.2x", dev->dev_addr[j]);
-       printk("\n");
+       printk(KERN_DEBUG "skisa.c:    Ring Station Address: %pM\n",
+              dev->dev_addr);
                
        tp = netdev_priv(dev);
        tp->setnselout = sk_isa_setnselout_pins;
@@ -187,8 +186,7 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
 
        tp->tmspriv = NULL;
 
-       dev->open = sk_isa_open;
-       dev->stop = tms380tr_close;
+       dev->netdev_ops = &sk_isa_netdev_ops;
 
        if (dev->irq == 0)
        {
@@ -303,7 +301,7 @@ static void sk_isa_read_eeprom(struct net_device *dev)
                dev->dev_addr[i] = sk_isa_sifreadw(dev, SIFINC) >> 8;
 }
 
-unsigned short sk_isa_setnselout_pins(struct net_device *dev)
+static unsigned short sk_isa_setnselout_pins(struct net_device *dev)
 {
        return 0;
 }
@@ -353,9 +351,10 @@ module_param_array(dma, int, NULL, 0);
 
 static struct platform_device *sk_isa_dev[ISATR_MAX_ADAPTERS];
 
-static struct device_driver sk_isa_driver = {
-       .name           = "skisa",
-       .bus            = &platform_bus_type,
+static struct platform_driver sk_isa_driver = {
+       .driver         = {
+               .name   = "skisa",
+       },
 };
 
 static int __init sk_isa_init(void)
@@ -364,7 +363,11 @@ static int __init sk_isa_init(void)
        struct platform_device *pdev;
        int i, num = 0, err = 0;
 
-       err = driver_register(&sk_isa_driver);
+       sk_isa_netdev_ops = tms380tr_netdev_ops;
+       sk_isa_netdev_ops.ndo_open = sk_isa_open;
+       sk_isa_netdev_ops.ndo_stop = tms380tr_close;
+
+       err = platform_driver_register(&sk_isa_driver);
        if (err)
                return err;
 
@@ -378,10 +381,14 @@ static int __init sk_isa_init(void)
                dev->dma = dma[i];
                pdev = platform_device_register_simple("skisa",
                        i, NULL, 0);
+               if (IS_ERR(pdev)) {
+                       free_netdev(dev);
+                       continue;
+               }
                err = setup_card(dev, &pdev->dev);
                if (!err) {
                        sk_isa_dev[i] = pdev;
-                       dev_set_drvdata(&sk_isa_dev[i]->dev, dev);
+                       platform_set_drvdata(sk_isa_dev[i], dev);
                        ++num;
                } else {
                        platform_device_unregister(pdev);
@@ -393,9 +400,10 @@ static int __init sk_isa_init(void)
        /* Probe for cards. */
        if (num == 0) {
                printk(KERN_NOTICE "skisa.c: No cards found.\n");
-               return (-ENODEV);
+               platform_driver_unregister(&sk_isa_driver);
+               return -ENODEV;
        }
-       return (0);
+       return 0;
 }
 
 static void __exit sk_isa_cleanup(void)
@@ -408,17 +416,17 @@ static void __exit sk_isa_cleanup(void)
 
                if (!pdev)
                        continue;
-               dev = dev_get_drvdata(&pdev->dev);
+               dev = platform_get_drvdata(pdev);
                unregister_netdev(dev);
                release_region(dev->base_addr, SK_ISA_IO_EXTENT);
                free_irq(dev->irq, dev);
                free_dma(dev->dma);
                tmsdev_term(dev);
                free_netdev(dev);
-               dev_set_drvdata(&pdev->dev, NULL);
+               platform_set_drvdata(pdev, NULL);
                platform_device_unregister(pdev);
        }
-       driver_unregister(&sk_isa_driver);
+       platform_driver_unregister(&sk_isa_driver);
 }
 
 module_init(sk_isa_init);