X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fnet%2Ftokenring%2Fproteon.c;h=cb7dbb63c9d9da6b6794dc30045943f4cac4eced;hb=cb2ebc59ff52cee770cfd6ba5f23a6cc3c214648;hp=d04c918ebef811ad60af0bdede6d5d1047ccb446;hpb=2be7a906752abf8dce9350c23b6d1036049a5d3e;p=linux-2.6-omap-h63xx.git diff --git a/drivers/net/tokenring/proteon.c b/drivers/net/tokenring/proteon.c index d04c918ebef..cb7dbb63c9d 100644 --- a/drivers/net/tokenring/proteon.c +++ b/drivers/net/tokenring/proteon.c @@ -344,9 +344,10 @@ module_param_array(dma, int, NULL, 0); static struct platform_device *proteon_dev[ISATR_MAX_ADAPTERS]; -static struct device_driver proteon_driver = { - .name = "proteon", - .bus = &platform_bus_type, +static struct platform_driver proteon_driver = { + .driver = { + .name = "proteon", + }, }; static int __init proteon_init(void) @@ -355,7 +356,7 @@ static int __init proteon_init(void) struct platform_device *pdev; int i, num = 0, err = 0; - err = driver_register(&proteon_driver); + err = platform_driver_register(&proteon_driver); if (err) return err; @@ -369,10 +370,14 @@ static int __init proteon_init(void) dev->dma = dma[i]; pdev = platform_device_register_simple("proteon", i, NULL, 0); + if (IS_ERR(pdev)) { + free_netdev(dev); + continue; + } err = setup_card(dev, &pdev->dev); if (!err) { proteon_dev[i] = pdev; - dev_set_drvdata(&pdev->dev, dev); + platform_set_drvdata(pdev, dev); ++num; } else { platform_device_unregister(pdev); @@ -384,9 +389,10 @@ static int __init proteon_init(void) /* Probe for cards. */ if (num == 0) { printk(KERN_NOTICE "proteon.c: No cards found.\n"); - return (-ENODEV); + platform_driver_unregister(&proteon_driver); + return -ENODEV; } - return (0); + return 0; } static void __exit proteon_cleanup(void) @@ -399,17 +405,17 @@ static void __exit proteon_cleanup(void) if (!pdev) continue; - dev = dev_get_drvdata(&pdev->dev); + dev = platform_get_drvdata(pdev); unregister_netdev(dev); release_region(dev->base_addr, PROTEON_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(&proteon_driver); + platform_driver_unregister(&proteon_driver); } module_init(proteon_init);