]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/net/smc91x.c
Merge master.kernel.org:/home/rmk/linux-2.6-drvmodel
[linux-2.6-omap-h63xx.git] / drivers / net / smc91x.c
index 1438fdd20826487a0d8d0535143f484b1111a3be..c91e2e81f131aa368ca81b9eb20bb5722aa8c765 100644 (file)
@@ -77,7 +77,7 @@ static const char version[] =
 #include <linux/errno.h>
 #include <linux/ioport.h>
 #include <linux/crc32.h>
-#include <linux/device.h>
+#include <linux/platform_device.h>
 #include <linux/spinlock.h>
 #include <linux/ethtool.h>
 #include <linux/mii.h>
@@ -1983,6 +1983,10 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr)
        if (lp->version >= (CHIP_91100 << 4))
                smc_phy_detect(dev);
 
+       /* then shut everything down to save power */
+       smc_shutdown(dev);
+       smc_phy_powerdown(dev);
+
        /* Set default parameters */
        lp->msg_enable = NETIF_MSG_LINK;
        lp->ctl_rfduplx = 0;
@@ -2179,9 +2183,8 @@ static void smc_release_datacs(struct platform_device *pdev, struct net_device *
  *     0 --> there is a device
  *     anything else, error
  */
-static int smc_drv_probe(struct device *dev)
+static int smc_drv_probe(struct platform_device *pdev)
 {
-       struct platform_device *pdev = to_platform_device(dev);
        struct net_device *ndev;
        struct resource *res;
        unsigned int __iomem *addr;
@@ -2208,7 +2211,7 @@ static int smc_drv_probe(struct device *dev)
                goto out_release_io;
        }
        SET_MODULE_OWNER(ndev);
-       SET_NETDEV_DEV(ndev, dev);
+       SET_NETDEV_DEV(ndev, &pdev->dev);
 
        ndev->dma = (unsigned char)-1;
        ndev->irq = platform_get_irq(pdev, 0);
@@ -2229,7 +2232,7 @@ static int smc_drv_probe(struct device *dev)
                goto out_release_attrib;
        }
 
-       dev_set_drvdata(dev, ndev);
+       platform_set_drvdata(pdev, ndev);
        ret = smc_probe(ndev, addr);
        if (ret != 0)
                goto out_iounmap;
@@ -2245,7 +2248,7 @@ static int smc_drv_probe(struct device *dev)
        return 0;
 
  out_iounmap:
-       dev_set_drvdata(dev, NULL);
+       platform_set_drvdata(pdev, NULL);
        iounmap(addr);
  out_release_attrib:
        smc_release_attrib(pdev);
@@ -2259,14 +2262,13 @@ static int smc_drv_probe(struct device *dev)
        return ret;
 }
 
-static int smc_drv_remove(struct device *dev)
+static int smc_drv_remove(struct platform_device *pdev)
 {
-       struct platform_device *pdev = to_platform_device(dev);
-       struct net_device *ndev = dev_get_drvdata(dev);
+       struct net_device *ndev = platform_get_drvdata(pdev);
        struct smc_local *lp = netdev_priv(ndev);
        struct resource *res;
 
-       dev_set_drvdata(dev, NULL);
+       platform_set_drvdata(pdev, NULL);
 
        unregister_netdev(ndev);
 
@@ -2291,11 +2293,11 @@ static int smc_drv_remove(struct device *dev)
        return 0;
 }
 
-static int smc_drv_suspend(struct device *dev, pm_message_t state, u32 level)
+static int smc_drv_suspend(struct platform_device *dev, pm_message_t state)
 {
-       struct net_device *ndev = dev_get_drvdata(dev);
+       struct net_device *ndev = platform_get_drvdata(dev);
 
-       if (ndev && level == SUSPEND_DISABLE) {
+       if (ndev) {
                if (netif_running(ndev)) {
                        netif_device_detach(ndev);
                        smc_shutdown(ndev);
@@ -2305,14 +2307,13 @@ static int smc_drv_suspend(struct device *dev, pm_message_t state, u32 level)
        return 0;
 }
 
-static int smc_drv_resume(struct device *dev, u32 level)
+static int smc_drv_resume(struct platform_device *dev)
 {
-       struct platform_device *pdev = to_platform_device(dev);
-       struct net_device *ndev = dev_get_drvdata(dev);
+       struct net_device *ndev = platform_get_drvdata(dev);
 
-       if (ndev && level == RESUME_ENABLE) {
+       if (ndev) {
                struct smc_local *lp = netdev_priv(ndev);
-               smc_enable_device(pdev);
+               smc_enable_device(dev);
                if (netif_running(ndev)) {
                        smc_reset(ndev);
                        smc_enable(ndev);
@@ -2324,13 +2325,14 @@ static int smc_drv_resume(struct device *dev, u32 level)
        return 0;
 }
 
-static struct device_driver smc_driver = {
-       .name           = CARDNAME,
-       .bus            = &platform_bus_type,
+static struct platform_driver smc_driver = {
        .probe          = smc_drv_probe,
        .remove         = smc_drv_remove,
        .suspend        = smc_drv_suspend,
        .resume         = smc_drv_resume,
+       .driver         = {
+               .name   = CARDNAME,
+       },
 };
 
 static int __init smc_init(void)
@@ -2344,12 +2346,12 @@ static int __init smc_init(void)
 #endif
 #endif
 
-       return driver_register(&smc_driver);
+       return platform_driver_register(&smc_driver);
 }
 
 static void __exit smc_cleanup(void)
 {
-       driver_unregister(&smc_driver);
+       platform_driver_unregister(&smc_driver);
 }
 
 module_init(smc_init);