i2c: Remove unneeded xxx_set_drvdata(..., NULL) calls
authorDoug Anderson <dianders@chromium.org>
Fri, 15 Feb 2013 13:18:35 +0000 (13:18 +0000)
committerWolfram Sang <wolfram@the-dreams.de>
Thu, 21 Feb 2013 23:25:50 +0000 (00:25 +0100)
There is simply no reason to be manually setting the private driver
data to NULL in the remove/fail to probe cases.  This is just extra
cruft code that can be removed.

A few notes:
* Nothing relies on drvdata being set to NULL.
* The __device_release_driver() function eventually calls
  dev_set_drvdata(dev, NULL) anyway, so there's no need to do it
  twice.
* I verified that there were no cases where xxx_get_drvdata() was
  being called in these drivers and checking for / relying on the NULL
  return value.

This could be cleaned up kernel-wide but for now just take the baby
step and remove from the i2c subsystem.

Reported-by: Wolfram Sang <wsa@the-dreams.de>
Reported-by: Stephen Warren <swarren@wwwdotorg.org>
Signed-off-by: Doug Anderson <dianders@chromium.org>
Reviewed-by: Jean Delvare <khali@linux-fr.org>
Acked-by: Peter Korsgaard <jacmet@sunsite.dk>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Marek Vasut <marex@denx.de>
Signed-off-by: Wolfram Sang <wolfram@the-dreams.de>
35 files changed:
drivers/i2c/busses/i2c-au1550.c
drivers/i2c/busses/i2c-bfin-twi.c
drivers/i2c/busses/i2c-cpm.c
drivers/i2c/busses/i2c-davinci.c
drivers/i2c/busses/i2c-designware-pcidrv.c
drivers/i2c/busses/i2c-designware-platdrv.c
drivers/i2c/busses/i2c-eg20t.c
drivers/i2c/busses/i2c-highlander.c
drivers/i2c/busses/i2c-i801.c
drivers/i2c/busses/i2c-ibm_iic.c
drivers/i2c/busses/i2c-imx.c
drivers/i2c/busses/i2c-intel-mid.c
drivers/i2c/busses/i2c-iop3xx.c
drivers/i2c/busses/i2c-mpc.c
drivers/i2c/busses/i2c-mxs.c
drivers/i2c/busses/i2c-nomadik.c
drivers/i2c/busses/i2c-ocores.c
drivers/i2c/busses/i2c-octeon.c
drivers/i2c/busses/i2c-omap.c
drivers/i2c/busses/i2c-pca-platform.c
drivers/i2c/busses/i2c-pmcmsp.c
drivers/i2c/busses/i2c-pnx.c
drivers/i2c/busses/i2c-powermac.c
drivers/i2c/busses/i2c-puv3.c
drivers/i2c/busses/i2c-pxa-pci.c
drivers/i2c/busses/i2c-pxa.c
drivers/i2c/busses/i2c-s6000.c
drivers/i2c/busses/i2c-sh7760.c
drivers/i2c/busses/i2c-stu300.c
drivers/i2c/busses/i2c-taos-evm.c
drivers/i2c/busses/i2c-versatile.c
drivers/i2c/busses/i2c-xiic.c
drivers/i2c/busses/i2c-xlr.c
drivers/i2c/busses/scx200_acb.c
drivers/i2c/muxes/i2c-mux-gpio.c

index b278298787d78b9687b99e2f148b80d17dcc4d29..b5b89239d622d015698d638239fe50bd9562f6f9 100644 (file)
@@ -376,7 +376,6 @@ static int i2c_au1550_remove(struct platform_device *pdev)
 {
        struct i2c_au1550_data *priv = platform_get_drvdata(pdev);
 
-       platform_set_drvdata(pdev, NULL);
        i2c_del_adapter(&priv->adap);
        i2c_au1550_disable(priv);
        iounmap(priv->psc_base);
index 0cf780fd6ef12578b6640b82abb952e4d0d3585e..05080c449c6b9d374ca1e32a8510b1a9e24d902b 100644 (file)
@@ -724,8 +724,6 @@ static int i2c_bfin_twi_remove(struct platform_device *pdev)
 {
        struct bfin_twi_iface *iface = platform_get_drvdata(pdev);
 
-       platform_set_drvdata(pdev, NULL);
-
        i2c_del_adapter(&(iface->adap));
        free_irq(iface->irq, iface);
        peripheral_free_list((unsigned short *)pdev->dev.platform_data);
index 2e79c1024191dc9084f066478be02f3edbaa288c..3823623baa481b5b42251a894d462dc47de115b2 100644 (file)
@@ -682,7 +682,6 @@ static int cpm_i2c_probe(struct platform_device *ofdev)
 out_shut:
        cpm_i2c_shutdown(cpm);
 out_free:
-       dev_set_drvdata(&ofdev->dev, NULL);
        kfree(cpm);
 
        return result;
@@ -696,7 +695,6 @@ static int cpm_i2c_remove(struct platform_device *ofdev)
 
        cpm_i2c_shutdown(cpm);
 
-       dev_set_drvdata(&ofdev->dev, NULL);
        kfree(cpm);
 
        return 0;
index 6a0a5531944994803b94cbbe95b8badf7bdbb42c..7d1e590a7bb6ef761e2865e6987de49568a9ba2f 100644 (file)
@@ -755,7 +755,6 @@ err_mem_ioremap:
        clk_put(dev->clk);
        dev->clk = NULL;
 err_free_mem:
-       platform_set_drvdata(pdev, NULL);
        put_device(&pdev->dev);
        kfree(dev);
 err_release_region:
@@ -771,7 +770,6 @@ static int davinci_i2c_remove(struct platform_device *pdev)
 
        i2c_davinci_cpufreq_deregister(dev);
 
-       platform_set_drvdata(pdev, NULL);
        i2c_del_adapter(&dev->adapter);
        put_device(&pdev->dev);
 
index 6add851e9dee2f44c4e6cd7538a8d458543b5d84..7c5e383c350d4a1a45033ba6cb17caf93d613e22 100644 (file)
@@ -319,7 +319,6 @@ err_free_irq:
        free_irq(pdev->irq, dev);
 err_iounmap:
        iounmap(dev->base);
-       pci_set_drvdata(pdev, NULL);
        put_device(&pdev->dev);
        kfree(dev);
 err_release_region:
@@ -336,7 +335,6 @@ static void i2c_dw_pci_remove(struct pci_dev *pdev)
        pm_runtime_forbid(&pdev->dev);
        pm_runtime_get_noresume(&pdev->dev);
 
-       pci_set_drvdata(pdev, NULL);
        i2c_del_adapter(&dev->adapter);
        put_device(&pdev->dev);
 
index d2a33e93f8ab9e972d9a893abdaed81f853a256b..0ceb6e1b0f6595fb0ca006bec70a3501bcd83594 100644 (file)
@@ -207,7 +207,6 @@ err_unuse_clocks:
        clk_put(dev->clk);
        dev->clk = NULL;
 err_free_mem:
-       platform_set_drvdata(pdev, NULL);
        put_device(&pdev->dev);
        kfree(dev);
 err_release_region:
@@ -221,7 +220,6 @@ static int dw_i2c_remove(struct platform_device *pdev)
        struct dw_i2c_dev *dev = platform_get_drvdata(pdev);
        struct resource *mem;
 
-       platform_set_drvdata(pdev, NULL);
        pm_runtime_get_sync(&pdev->dev);
 
        i2c_del_adapter(&dev->adapter);
index 5e7886e7136e5f3858fc9361fc9c2a7cdf4a598b..0f3752967c4be717d3a451cda4737644939fe493 100644 (file)
@@ -869,8 +869,6 @@ static void pch_i2c_remove(struct pci_dev *pdev)
        for (i = 0; i < adap_info->ch_num; i++)
                adap_info->pch_data[i].pch_base_address = NULL;
 
-       pci_set_drvdata(pdev, NULL);
-
        pci_release_regions(pdev);
 
        pci_disable_device(pdev);
index 3351cc7ed11f639b429d99e63415a7384adb38df..436b0f254916dbe8d1a8c4e3c32e0c13e1362536 100644 (file)
@@ -436,8 +436,6 @@ err_unmap:
 err:
        kfree(dev);
 
-       platform_set_drvdata(pdev, NULL);
-
        return ret;
 }
 
@@ -453,8 +451,6 @@ static int highlander_i2c_remove(struct platform_device *pdev)
        iounmap(dev->base);
        kfree(dev);
 
-       platform_set_drvdata(pdev, NULL);
-
        return 0;
 }
 
index 76febfb09760d9cfbb823f13f33444359055f3d3..e1cf2e0e1f23de900e92c1839d8c6e856658ea37 100644 (file)
@@ -1254,7 +1254,6 @@ static void i801_remove(struct pci_dev *dev)
                free_irq(dev->irq, priv);
        pci_release_region(dev, SMBBAR);
 
-       pci_set_drvdata(dev, NULL);
        kfree(priv);
        /*
         * do not call pci_disable_device(dev) since it can cause hard hangs on
index 33a2abb6c0633c006a12b83ec18b9b89fbca2db6..405a2e240454336cbed84566a7a74bbf6593da7c 100644 (file)
@@ -773,7 +773,6 @@ error_cleanup:
        if (dev->vaddr)
                iounmap(dev->vaddr);
 
-       dev_set_drvdata(&ofdev->dev, NULL);
        kfree(dev);
        return ret;
 }
@@ -785,8 +784,6 @@ static int iic_remove(struct platform_device *ofdev)
 {
        struct ibm_iic_private *dev = dev_get_drvdata(&ofdev->dev);
 
-       dev_set_drvdata(&ofdev->dev, NULL);
-
        i2c_del_adapter(&dev->adap);
 
        if (dev->irq) {
index b9734747d61080ffa16be81eb7c996f5a163bece..c5d2ba3c4cd082d2cf59542d05c4a60095945681 100644 (file)
@@ -605,7 +605,6 @@ static int __exit i2c_imx_remove(struct platform_device *pdev)
        /* remove adapter */
        dev_dbg(&i2c_imx->adapter.dev, "adapter removed\n");
        i2c_del_adapter(&i2c_imx->adapter);
-       platform_set_drvdata(pdev, NULL);
 
        /* setup chip registers to defaults */
        writeb(0, i2c_imx->base + IMX_I2C_IADR);
index de3736bf64657a4da747eeb51450d78267cec54b..323fa018ffd5202b61ca662a585182d12b9247cb 100644 (file)
@@ -1069,7 +1069,6 @@ static int intel_mid_i2c_probe(struct pci_dev *dev,
 fail3:
        free_irq(dev->irq, mrst);
 fail2:
-       pci_set_drvdata(dev, NULL);
        kfree(mrst);
 fail1:
        iounmap(base);
@@ -1087,7 +1086,6 @@ static void intel_mid_i2c_remove(struct pci_dev *dev)
                dev_err(&dev->dev, "Failed to delete i2c adapter");
 
        free_irq(dev->irq, mrst);
-       pci_set_drvdata(dev, NULL);
        iounmap(mrst->base);
        kfree(mrst);
        pci_release_region(dev, 0);
index 2f99613fd677479a0b321412fa109d97c9a0b86f..bc993331c6954460b2a72759e2d66df08a863f0a 100644 (file)
@@ -415,8 +415,6 @@ iop3xx_i2c_remove(struct platform_device *pdev)
        kfree(adapter_data);
        kfree(padapter);
 
-       platform_set_drvdata(pdev, NULL);
-
        return 0;
 }
 
index a69459e5c3f3cab019f794e4c61b368dc245f536..5e705ee02f4a9e2db2afa6a7043516022a53e117 100644 (file)
@@ -696,7 +696,6 @@ static int fsl_i2c_probe(struct platform_device *op)
        return result;
 
  fail_add:
-       dev_set_drvdata(&op->dev, NULL);
        free_irq(i2c->irq, i2c);
  fail_request:
        irq_dispose_mapping(i2c->irq);
@@ -711,7 +710,6 @@ static int fsl_i2c_remove(struct platform_device *op)
        struct mpc_i2c *i2c = dev_get_drvdata(&op->dev);
 
        i2c_del_adapter(&i2c->adap);
-       dev_set_drvdata(&op->dev, NULL);
 
        if (i2c->irq)
                free_irq(i2c->irq, i2c);
index 22d8ad353409f49c169bdf68d2645d343a708684..120f24646696783791365fb2fe785e1535dbc07c 100644 (file)
@@ -697,8 +697,6 @@ static int mxs_i2c_remove(struct platform_device *pdev)
 
        writel(MXS_I2C_CTRL0_SFTRST, i2c->regs + MXS_I2C_CTRL0_SET);
 
-       platform_set_drvdata(pdev, NULL);
-
        return 0;
 }
 
index 5b1b1948128ee3ffeb2bf85f538b6b41163dfc9d..650293ff4d623348c04f19ff68f8570505ac2a59 100644 (file)
@@ -1105,7 +1105,6 @@ static int nmk_i2c_probe(struct amba_device *adev, const struct amba_id *id)
  err_irq:
        iounmap(dev->virtbase);
  err_no_ioremap:
-       amba_set_drvdata(adev, NULL);
        kfree(dev);
  err_pinctrl:
  err_no_mem:
@@ -1130,7 +1129,6 @@ static int nmk_i2c_remove(struct amba_device *adev)
                release_mem_region(res->start, resource_size(res));
        clk_put(dev->clk);
        pm_runtime_disable(&adev->dev);
-       amba_set_drvdata(adev, NULL);
        kfree(dev);
 
        return 0;
index 6afa02db11567ab848c2a43fc34daec00c997598..dd3df76c2e356ae93f350d5e074501f7b1461c8b 100644 (file)
@@ -451,7 +451,6 @@ static int ocores_i2c_remove(struct platform_device *pdev)
 
        /* remove adapter & data */
        i2c_del_adapter(&i2c->adap);
-       platform_set_drvdata(pdev, NULL);
 
        return 0;
 }
index 484ca771fdff2d21917adc0ce84585585ab2543a..935585ef4d3996a9ccc482dd4ca1f62719a5fa4a 100644 (file)
@@ -595,7 +595,7 @@ static int octeon_i2c_probe(struct platform_device *pdev)
        result = i2c_add_adapter(&i2c->adap);
        if (result < 0) {
                dev_err(i2c->dev, "failed to add adapter\n");
-               goto fail_add;
+               goto out;
        }
        dev_info(i2c->dev, "version %s\n", DRV_VERSION);
 
@@ -603,8 +603,6 @@ static int octeon_i2c_probe(struct platform_device *pdev)
 
        return 0;
 
-fail_add:
-       platform_set_drvdata(pdev, NULL);
 out:
        return result;
 };
@@ -614,7 +612,6 @@ static int octeon_i2c_remove(struct platform_device *pdev)
        struct octeon_i2c *i2c = platform_get_drvdata(pdev);
 
        i2c_del_adapter(&i2c->adap);
-       platform_set_drvdata(pdev, NULL);
        return 0;
 };
 
index 4cc2f0528c8869af7d96a99e913b84209530d7c4..79d05128c77ed40aa9e800b7eb01fca95406cf75 100644 (file)
@@ -1262,7 +1262,6 @@ err_unuse_clocks:
        pm_runtime_put(dev->dev);
        pm_runtime_disable(&pdev->dev);
 err_free_mem:
-       platform_set_drvdata(pdev, NULL);
 
        return r;
 }
@@ -1272,8 +1271,6 @@ static int omap_i2c_remove(struct platform_device *pdev)
        struct omap_i2c_dev     *dev = platform_get_drvdata(pdev);
        int ret;
 
-       platform_set_drvdata(pdev, NULL);
-
        i2c_del_adapter(&dev->adapter);
        ret = pm_runtime_get_sync(&pdev->dev);
        if (IS_ERR_VALUE(ret))
index a30d2f613c038586a6c7143f2747698b16861f1f..aa00df14e30b1a0114be4396b931ce4a32b523d9 100644 (file)
@@ -260,7 +260,6 @@ e_print:
 static int i2c_pca_pf_remove(struct platform_device *pdev)
 {
        struct i2c_pca_pf_data *i2c = platform_get_drvdata(pdev);
-       platform_set_drvdata(pdev, NULL);
 
        i2c_del_adapter(&i2c->adap);
 
index 083d68cfaf0bacc501328006b2f16eb1dc2f5fcb..f6389e2c9d02d704163cd7b2f0fc6c23bda1f8ba 100644 (file)
@@ -349,7 +349,6 @@ static int pmcmsptwi_probe(struct platform_device *pldev)
        return 0;
 
 ret_unmap:
-       platform_set_drvdata(pldev, NULL);
        if (pmcmsptwi_data.irq) {
                pmcmsptwi_writel(0,
                        pmcmsptwi_data.iobase + MSP_TWI_INT_MSK_REG_OFFSET);
@@ -374,7 +373,6 @@ static int pmcmsptwi_remove(struct platform_device *pldev)
 
        i2c_del_adapter(&pmcmsptwi_adapter);
 
-       platform_set_drvdata(pldev, NULL);
        if (pmcmsptwi_data.irq) {
                pmcmsptwi_writel(0,
                        pmcmsptwi_data.iobase + MSP_TWI_INT_MSK_REG_OFFSET);
index ce4097012e978eed7fc7caff18c12c8abeede5ea..5f39c6d8117a063b41406f589ccb722d85f4b9c9 100644 (file)
@@ -761,7 +761,6 @@ out_clkget:
 out_drvdata:
        kfree(alg_data);
 err_kzalloc:
-       platform_set_drvdata(pdev, NULL);
        return ret;
 }
 
@@ -776,7 +775,6 @@ static int i2c_pnx_remove(struct platform_device *pdev)
        release_mem_region(alg_data->base, I2C_PNX_REGION_SIZE);
        clk_put(alg_data->clk);
        kfree(alg_data);
-       platform_set_drvdata(pdev, NULL);
 
        return 0;
 }
index 0dd5b334d0905c3597cfbb437c4a0250ffeb39b3..da54e673449d284ab68ea74f2d52fb8bc9b24749 100644 (file)
@@ -221,7 +221,6 @@ static int i2c_powermac_remove(struct platform_device *dev)
                printk(KERN_WARNING
                       "i2c-powermac.c: Failed to remove bus %s !\n",
                       adapter->name);
-       platform_set_drvdata(dev, NULL);
        memset(adapter, 0, sizeof(*adapter));
 
        return 0;
index d7c512d717a780785872eca8870b30b6cd4f5b88..261d7db437e250140349138903e653ab699ff519 100644 (file)
@@ -223,7 +223,6 @@ static int puv3_i2c_probe(struct platform_device *pdev)
        return 0;
 
 fail_add_adapter:
-       platform_set_drvdata(pdev, NULL);
        kfree(adapter);
 fail_nomem:
        release_mem_region(mem->start, resource_size(mem));
@@ -245,7 +244,6 @@ static int puv3_i2c_remove(struct platform_device *pdev)
        }
 
        put_device(&pdev->dev);
-       platform_set_drvdata(pdev, NULL);
 
        mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        release_mem_region(mem->start, resource_size(mem));
index 3d4985695aed7e0ed92d76aa271f2f4064afcea3..9639be86e53fde1dcf14f03b53f4e2a33d2c9632 100644 (file)
@@ -128,7 +128,6 @@ static int ce4100_i2c_probe(struct pci_dev *dev,
        return 0;
 
 err_dev_add:
-       pci_set_drvdata(dev, NULL);
        kfree(sds);
 err_mem:
        pci_disable_device(dev);
@@ -141,7 +140,6 @@ static void ce4100_i2c_remove(struct pci_dev *dev)
        unsigned int i;
 
        sds = pci_get_drvdata(dev);
-       pci_set_drvdata(dev, NULL);
 
        for (i = 0; i < ARRAY_SIZE(sds->pdev); i++)
                platform_device_unregister(sds->pdev[i]);
index 4a79e768a4d81507b4b9b5876579789ff46c2760..1e88e8d66c550ddb49b7dfb42f08a6eca8fa86cc 100644 (file)
@@ -1219,8 +1219,6 @@ static int i2c_pxa_remove(struct platform_device *dev)
 {
        struct pxa_i2c *i2c = platform_get_drvdata(dev);
 
-       platform_set_drvdata(dev, NULL);
-
        i2c_del_adapter(&i2c->adap);
        if (!i2c->use_pio)
                free_irq(i2c->irq, i2c);
index 008836409efeed631f78b16056be6199c3d703db..7c1ca5aca08807f4510c0f0b6a79a8db41147fb7 100644 (file)
@@ -365,7 +365,6 @@ static int s6i2c_remove(struct platform_device *pdev)
 {
        struct s6i2c_if *iface = platform_get_drvdata(pdev);
        i2c_wr16(iface, S6_I2C_ENABLE, 0);
-       platform_set_drvdata(pdev, NULL);
        i2c_del_adapter(&iface->adap);
        free_irq(iface->irq, iface);
        clk_disable(iface->clk);
index 3a2253e1bf59404ab7a6986cb7775b4477baf0ef..5351a2f349127919785bc9a58f11256466861fad 100644 (file)
@@ -546,7 +546,6 @@ static int sh7760_i2c_remove(struct platform_device *pdev)
        release_resource(id->ioarea);
        kfree(id->ioarea);
        kfree(id);
-       platform_set_drvdata(pdev, NULL);
 
        return 0;
 }
index 580a0c04cb42d6b3b16716b57f5f352ecaa314c1..f1912c8520fe8c5f3471d95c4e1ca2999b4308fe 100644 (file)
@@ -975,7 +975,6 @@ stu300_remove(struct platform_device *pdev)
        i2c_del_adapter(&dev->adapter);
        /* Turn off everything */
        stu300_wr8(0x00, dev->virtbase + I2C_CR);
-       platform_set_drvdata(pdev, NULL);
        return 0;
 }
 
index 26c352a09298b929207b7fed35492a52321033c3..6ffa56e0851777981af053420d69df68fc7c9d1b 100644 (file)
@@ -271,7 +271,6 @@ static int taos_connect(struct serio *serio, struct serio_driver *drv)
  exit_close:
        serio_close(serio);
  exit_kfree:
-       serio_set_drvdata(serio, NULL);
        kfree(taos);
  exit:
        return err;
@@ -285,7 +284,6 @@ static void taos_disconnect(struct serio *serio)
                i2c_unregister_device(taos->client);
        i2c_del_adapter(&taos->adapter);
        serio_close(serio);
-       serio_set_drvdata(serio, NULL);
        kfree(taos);
 
        dev_info(&serio->dev, "Disconnected from TAOS EVM\n");
index eec20db6246fac995f3bde2ae1e45177b37d4fe3..f3a8790a07e8fed578c3665c85ab9c085a6101dd 100644 (file)
@@ -125,8 +125,6 @@ static int i2c_versatile_remove(struct platform_device *dev)
 {
        struct i2c_versatile *i2c = platform_get_drvdata(dev);
 
-       platform_set_drvdata(dev, NULL);
-
        i2c_del_adapter(&i2c->adap);
        return 0;
 }
index f042f6da0ace57cb60d0da99ef6bdb554db0d8b5..332c720fb3fe031e10ed2de3d060697c5cfa2175 100644 (file)
@@ -784,8 +784,6 @@ static int xiic_i2c_remove(struct platform_device *pdev)
 
        xiic_deinit(i2c);
 
-       platform_set_drvdata(pdev, NULL);
-
        free_irq(platform_get_irq(pdev, 0), i2c);
 
        iounmap(i2c->base);
index a005265461da1d2bb7da484d61204265bc2935a6..86010293e23ca450cc5637dfffb96afeb2f0f4d3 100644 (file)
@@ -257,7 +257,6 @@ static int xlr_i2c_remove(struct platform_device *pdev)
 
        priv = platform_get_drvdata(pdev);
        i2c_del_adapter(&priv->adap);
-       platform_set_drvdata(pdev, NULL);
        return 0;
 }
 
index 3862a953239c86c476961d101c43367f93ea4a0d..2d1d2c5653fb4d368f09f7f9dfeb724246dac0fc 100644 (file)
@@ -542,7 +542,6 @@ static int scx200_remove(struct platform_device *pdev)
        struct scx200_acb_iface *iface;
 
        iface = platform_get_drvdata(pdev);
-       platform_set_drvdata(pdev, NULL);
        scx200_cleanup_iface(iface);
 
        return 0;
index 9f50ef04a4bd85f1ac7d59078e9a1c98d3f7e797..abc2e55aa243af75126f184a57a573b4c74c379c 100644 (file)
@@ -250,7 +250,6 @@ static int i2c_mux_gpio_remove(struct platform_device *pdev)
        for (i = 0; i < mux->data.n_gpios; i++)
                gpio_free(mux->gpio_base + mux->data.gpios[i]);
 
-       platform_set_drvdata(pdev, NULL);
        i2c_put_adapter(mux->parent);
 
        return 0;