Merge branches 'release', 'asus', 'sony-laptop' and 'thinkpad' into release
[pandora-kernel.git] / drivers / net / tokenring / skisa.c
index 72cf708..41b6999 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:
@@ -139,11 +139,11 @@ static int __init setup_card(struct net_device *dev, struct device *pdev)
         static int versionprinted;
        const unsigned *port;
        int j, err = 0;
+       DECLARE_MAC_BUF(mac);
 
        if (!dev)
                return -ENOMEM;
 
-       SET_MODULE_OWNER(dev);
        if (dev->base_addr)     /* probe specific location */
                err = sk_isa_probe1(dev, dev->base_addr);
        else {
@@ -170,11 +170,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: %s\n",
+              print_mac(mac, dev->dev_addr));
                
        tp = netdev_priv(dev);
        tp->setnselout = sk_isa_setnselout_pins;
@@ -354,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)
@@ -365,7 +363,7 @@ static int __init sk_isa_init(void)
        struct platform_device *pdev;
        int i, num = 0, err = 0;
 
-       err = driver_register(&sk_isa_driver);
+       err = platform_driver_register(&sk_isa_driver);
        if (err)
                return err;
 
@@ -379,10 +377,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);
@@ -394,9 +396,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)
@@ -409,17 +412,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);