X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fnet%2Ftokenring%2Fskisa.c;h=33afea31d87b93b591a640cc3a4771923f7184d2;hb=97be852f81c5bb114aab31974af2c061eb86a6de;hp=72cf708396be3f87e9badd604ee3b5b3ab41c6a2;hpb=c2cc87ca9561ddfe744d446789cc10f507e87db9;p=linux-2.6-omap-h63xx.git diff --git a/drivers/net/tokenring/skisa.c b/drivers/net/tokenring/skisa.c index 72cf708396b..33afea31d87 100644 --- a/drivers/net/tokenring/skisa.c +++ b/drivers/net/tokenring/skisa.c @@ -354,9 +354,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 +366,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 +380,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 +399,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 +415,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);