X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/9152c5c7936bfda1d195cac8a7657d0d5dac658c..18a076fccdba90cd7bea1dd4cff1b6b0559b75f0:/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c index d3ff13ec4..2664429e7 100644 --- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c +++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_mdio.c @@ -1,7 +1,7 @@ /* * Atheros AR71xx built-in ethernet mac driver * - * Copyright (C) 2008-2009 Gabor Juhos + * Copyright (C) 2008-2010 Gabor Juhos * Copyright (C) 2008 Imre Kaloz * * Based on Atheros' AG7100 driver @@ -16,8 +16,6 @@ #define AG71XX_MDIO_RETRY 1000 #define AG71XX_MDIO_DELAY 5 -struct ag71xx_mdio *ag71xx_mdio_bus; - static inline void ag71xx_mdio_wr(struct ag71xx_mdio *am, unsigned reg, u32 value) { @@ -75,7 +73,7 @@ static int ag71xx_mdio_mii_read(struct ag71xx_mdio *am, int addr, int reg) DBG("mii_read: addr=%04x, reg=%04x, value=%04x\n", addr, reg, ret); - out: +out: return ret; } @@ -135,7 +133,7 @@ static int ag71xx_mdio_write(struct mii_bus *bus, int addr, int reg, u16 val) return 0; } -static int __init ag71xx_mdio_probe(struct platform_device *pdev) +static int __devinit ag71xx_mdio_probe(struct platform_device *pdev) { struct ag71xx_mdio_platform_data *pdata; struct ag71xx_mdio *am; @@ -143,9 +141,6 @@ static int __init ag71xx_mdio_probe(struct platform_device *pdev) int i; int err; - if (ag71xx_mdio_bus) - return -EBUSY; - pdata = pdev->dev.platform_data; if (!pdata) { dev_err(&pdev->dev, "no platform data specified\n"); @@ -202,25 +197,23 @@ static int __init ag71xx_mdio_probe(struct platform_device *pdev) ag71xx_mdio_dump_regs(am); platform_set_drvdata(pdev, am); - ag71xx_mdio_bus = am; return 0; - err_free_bus: +err_free_bus: mdiobus_free(am->mii_bus); - err_iounmap: +err_iounmap: iounmap(am->mdio_base); - err_free_mdio: +err_free_mdio: kfree(am); - err_out: +err_out: return err; } -static int __exit ag71xx_mdio_remove(struct platform_device *pdev) +static int __devexit ag71xx_mdio_remove(struct platform_device *pdev) { struct ag71xx_mdio *am = platform_get_drvdata(pdev); if (am) { - ag71xx_mdio_bus = NULL; mdiobus_unregister(am->mii_bus); mdiobus_free(am->mii_bus); iounmap(am->mdio_base); @@ -239,7 +232,7 @@ static struct platform_driver ag71xx_mdio_driver = { } }; -int ag71xx_mdio_driver_init(void) +int __init ag71xx_mdio_driver_init(void) { return platform_driver_register(&ag71xx_mdio_driver); }