mtd: rawnand: Pass a nand_chip object to nand_release()
authorBoris Brezillon <boris.brezillon@bootlin.com>
Thu, 6 Sep 2018 12:05:15 +0000 (14:05 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jun 2020 13:33:08 +0000 (15:33 +0200)
[ Upstream commit 59ac276f22270fb2094910f9a734c17f41c25e70 ]

Let's make the raw NAND API consistent by patching all helpers to
take a nand_chip object instead of an mtd_info one.

Now is nand_release()'s turn.

Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
49 files changed:
Documentation/driver-api/mtdnand.rst
drivers/mtd/nand/raw/ams-delta.c
drivers/mtd/nand/raw/au1550nd.c
drivers/mtd/nand/raw/bcm47xxnflash/main.c
drivers/mtd/nand/raw/brcmnand/brcmnand.c
drivers/mtd/nand/raw/cafe_nand.c
drivers/mtd/nand/raw/cmx270_nand.c
drivers/mtd/nand/raw/cs553x_nand.c
drivers/mtd/nand/raw/davinci_nand.c
drivers/mtd/nand/raw/denali.c
drivers/mtd/nand/raw/diskonchip.c
drivers/mtd/nand/raw/docg4.c
drivers/mtd/nand/raw/fsl_elbc_nand.c
drivers/mtd/nand/raw/fsl_ifc_nand.c
drivers/mtd/nand/raw/fsl_upm.c
drivers/mtd/nand/raw/fsmc_nand.c
drivers/mtd/nand/raw/gpio.c
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c
drivers/mtd/nand/raw/hisi504_nand.c
drivers/mtd/nand/raw/jz4740_nand.c
drivers/mtd/nand/raw/jz4780_nand.c
drivers/mtd/nand/raw/lpc32xx_mlc.c
drivers/mtd/nand/raw/lpc32xx_slc.c
drivers/mtd/nand/raw/marvell_nand.c
drivers/mtd/nand/raw/mpc5121_nfc.c
drivers/mtd/nand/raw/mtk_nand.c
drivers/mtd/nand/raw/mxc_nand.c
drivers/mtd/nand/raw/nand_base.c
drivers/mtd/nand/raw/nandsim.c
drivers/mtd/nand/raw/ndfc.c
drivers/mtd/nand/raw/nuc900_nand.c
drivers/mtd/nand/raw/omap2.c
drivers/mtd/nand/raw/orion_nand.c
drivers/mtd/nand/raw/oxnas_nand.c
drivers/mtd/nand/raw/pasemi_nand.c
drivers/mtd/nand/raw/plat_nand.c
drivers/mtd/nand/raw/qcom_nandc.c
drivers/mtd/nand/raw/r852.c
drivers/mtd/nand/raw/s3c2410.c
drivers/mtd/nand/raw/sh_flctl.c
drivers/mtd/nand/raw/sharpsl.c
drivers/mtd/nand/raw/socrates_nand.c
drivers/mtd/nand/raw/sunxi_nand.c
drivers/mtd/nand/raw/tango_nand.c
drivers/mtd/nand/raw/tmio_nand.c
drivers/mtd/nand/raw/txx9ndfmc.c
drivers/mtd/nand/raw/vf610_nfc.c
drivers/mtd/nand/raw/xway_nand.c
include/linux/mtd/rawnand.h

index 1ab6f35b6410822b3c1166b83ba841991dc54e4b..5470a3d6bd9ea19877d51f263f07361c2af212d6 100644 (file)
@@ -277,7 +277,7 @@ unregisters the partitions in the MTD layer.
     static void __exit board_cleanup (void)
     {
         /* Release resources, unregister device */
-        nand_release (board_mtd);
+        nand_release (mtd_to_nand(board_mtd));
 
         /* unmap physical address */
         iounmap(baseaddr);
index 24ba7296ec08c7abb48a871bef47984415cf9e59..acf7971e815dfb5548ef91809ed8dc861e2bc980 100644 (file)
@@ -264,7 +264,7 @@ static int ams_delta_cleanup(struct platform_device *pdev)
        void __iomem *io_base = platform_get_drvdata(pdev);
 
        /* Release resources, unregister device */
-       nand_release(ams_delta_mtd);
+       nand_release(mtd_to_nand(ams_delta_mtd));
 
        gpio_free_array(_mandatory_gpio, ARRAY_SIZE(_mandatory_gpio));
        gpio_free(AMS_DELTA_GPIO_PIN_NAND_RB);
index afc1e812e80d9221762f03092385eac377a13a85..b45fb36537e7ec782f7571aeb46952943c373258 100644 (file)
@@ -492,7 +492,7 @@ static int au1550nd_remove(struct platform_device *pdev)
        struct au1550nd_ctx *ctx = platform_get_drvdata(pdev);
        struct resource *r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
-       nand_release(nand_to_mtd(&ctx->chip));
+       nand_release(&ctx->chip);
        iounmap(ctx->base);
        release_mem_region(r->start, 0x1000);
        kfree(ctx);
index fb31429b70a9a2428d45daee8e9c3c45b3f2b542..d79694160845760f03fa59a40173e348756e3418 100644 (file)
@@ -65,7 +65,7 @@ static int bcm47xxnflash_remove(struct platform_device *pdev)
 {
        struct bcm47xxnflash *nflash = platform_get_drvdata(pdev);
 
-       nand_release(nand_to_mtd(&nflash->nand_chip));
+       nand_release(&nflash->nand_chip);
 
        return 0;
 }
index edf7447a0cd545113a9a88781092eb2d3a6135b8..bd20f4521036f2f02ea695380470b7b087bbffc9 100644 (file)
@@ -2619,7 +2619,7 @@ int brcmnand_remove(struct platform_device *pdev)
        struct brcmnand_host *host;
 
        list_for_each_entry(host, &ctrl->host_list, node)
-               nand_release(nand_to_mtd(&host->chip));
+               nand_release(&host->chip);
 
        clk_disable_unprepare(ctrl->clk);
 
index e497b95d624e22d953f577e200866e83a8a77909..3304594177c6dfda1d8becac7c217da06651d81d 100644 (file)
@@ -819,7 +819,7 @@ static void cafe_nand_remove(struct pci_dev *pdev)
        /* Disable NAND IRQ in global IRQ mask register */
        cafe_writel(cafe, ~1 & cafe_readl(cafe, GLOBAL_IRQ_MASK), GLOBAL_IRQ_MASK);
        free_irq(pdev->irq, mtd);
-       nand_release(mtd);
+       nand_release(chip);
        free_rs(cafe->rs);
        pci_iounmap(pdev, cafe->mmio);
        dma_free_coherent(&cafe->pdev->dev, 2112, cafe->dmabuf, cafe->dmaaddr);
index e92c0f113eb3483cd4f1d998e3dd84c5d0cfe8e1..2eb933a8f99eb77028cafcf9194e28ced5b95f31 100644 (file)
@@ -228,7 +228,7 @@ module_init(cmx270_init);
 static void __exit cmx270_cleanup(void)
 {
        /* Release resources, unregister device */
-       nand_release(cmx270_nand_mtd);
+       nand_release(mtd_to_nand(cmx270_nand_mtd));
 
        gpio_free(GPIO_NAND_RB);
        gpio_free(GPIO_NAND_CS);
index 4065bcd12e64f7d4d6ff27385dd0b9c96e9740ed..d4be416bb2faacbd9eaa2d7014996c8097233c34 100644 (file)
@@ -336,7 +336,7 @@ static void __exit cs553x_cleanup(void)
                mmio_base = this->IO_ADDR_R;
 
                /* Release resources, unregister device */
-               nand_release(mtd);
+               nand_release(this);
                kfree(mtd->name);
                cs553x_mtd[i] = NULL;
 
index 1021624195f7ac6b9e114c58eafadd0db33aeba3..66d3d596601389bfd5a27dc5f06a20be50653a4b 100644 (file)
@@ -841,7 +841,7 @@ static int nand_davinci_remove(struct platform_device *pdev)
                ecc4_busy = false;
        spin_unlock_irq(&davinci_nand_lock);
 
-       nand_release(nand_to_mtd(&info->chip));
+       nand_release(&info->chip);
 
        return 0;
 }
index d16581b117ce97ba41ba19603b9549ec8208cb2e..277e84aa6166a050695ab2fb8e17f2086be865a1 100644 (file)
@@ -1407,9 +1407,7 @@ EXPORT_SYMBOL(denali_init);
 
 void denali_remove(struct denali_nand_info *denali)
 {
-       struct mtd_info *mtd = nand_to_mtd(&denali->nand);
-
-       nand_release(mtd);
+       nand_release(&denali->nand);
        denali_disable_irq(denali);
 }
 EXPORT_SYMBOL(denali_remove);
index 9159748a2ef0c001123659b48f64d46d0fb0c55d..43d1e08133ceb221f11208baead1f4d61bc005a8 100644 (file)
@@ -1627,7 +1627,7 @@ static int __init doc_probe(unsigned long physadr)
                /* nand_release will call mtd_device_unregister, but we
                   haven't yet added it.  This is handled without incident by
                   mtd_device_unregister, as far as I can tell. */
-               nand_release(mtd);
+               nand_release(nand);
                goto fail;
        }
 
@@ -1662,7 +1662,7 @@ static void release_nanddoc(void)
                doc = nand_get_controller_data(nand);
 
                nextmtd = doc->nextdoc;
-               nand_release(mtd);
+               nand_release(nand);
                iounmap(doc->virtadr);
                release_mem_region(doc->physadr, DOC_IOREMAP_LEN);
                free_rs(doc->rs_decoder);
index 69f60755f38a40ddadfe9654690a7daaf515f8e1..2d86bc5a886df4e870b7dfcc595a5d3e97ebf991 100644 (file)
@@ -1420,7 +1420,7 @@ static int __init probe_docg4(struct platform_device *pdev)
 static int __exit cleanup_docg4(struct platform_device *pdev)
 {
        struct docg4_priv *doc = platform_get_drvdata(pdev);
-       nand_release(doc->mtd);
+       nand_release(mtd_to_nand(doc->mtd));
        kfree(mtd_to_nand(doc->mtd));
        iounmap(doc->virtadr);
        return 0;
index 541343d142e06035d8ceb2af689afbffed92c166..22bcd64a66c824a7c4fe739123a9f25f200de955 100644 (file)
@@ -942,9 +942,8 @@ static int fsl_elbc_nand_remove(struct platform_device *pdev)
 {
        struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = fsl_lbc_ctrl_dev->nand;
        struct fsl_elbc_mtd *priv = dev_get_drvdata(&pdev->dev);
-       struct mtd_info *mtd = nand_to_mtd(&priv->chip);
 
-       nand_release(mtd);
+       nand_release(&priv->chip);
        fsl_elbc_chip_remove(priv);
 
        mutex_lock(&fsl_elbc_nand_mutex);
index ad010c72df789f11a119eb9ac0408df926ef5312..70bf8e1552a5a23b50f228909979cf55bcd33ac0 100644 (file)
@@ -1105,9 +1105,8 @@ static int fsl_ifc_nand_probe(struct platform_device *dev)
 static int fsl_ifc_nand_remove(struct platform_device *dev)
 {
        struct fsl_ifc_mtd *priv = dev_get_drvdata(&dev->dev);
-       struct mtd_info *mtd = nand_to_mtd(&priv->chip);
 
-       nand_release(mtd);
+       nand_release(&priv->chip);
        fsl_ifc_chip_remove(priv);
 
        mutex_lock(&fsl_ifc_nand_mutex);
index b45c9940f9c05c98b5c109f1ea65add420ef4f47..2763fd3ad512248361d8c67cb38a51555b10f2c7 100644 (file)
@@ -326,7 +326,7 @@ static int fun_remove(struct platform_device *ofdev)
        struct mtd_info *mtd = nand_to_mtd(&fun->chip);
        int i;
 
-       nand_release(mtd);
+       nand_release(&fun->chip);
        kfree(mtd->name);
 
        for (i = 0; i < fun->mchip_count; i++) {
index 9991e3b8e2376516244b94e9e776be9540e333b0..25d354e9448ec73ff14ec635e6de40df481597f5 100644 (file)
@@ -1161,7 +1161,7 @@ static int fsmc_nand_remove(struct platform_device *pdev)
        struct fsmc_nand_data *host = platform_get_drvdata(pdev);
 
        if (host) {
-               nand_release(nand_to_mtd(&host->nand));
+               nand_release(&host->nand);
 
                if (host->mode == USE_DMA_ACCESS) {
                        dma_release_channel(host->write_dma_chan);
index 983d3be4801935246b83551f550fc885472dd3b9..0e7d00faf33ca89df99358aea8a95c7010a89fec 100644 (file)
@@ -194,7 +194,7 @@ static int gpio_nand_remove(struct platform_device *pdev)
 {
        struct gpiomtd *gpiomtd = platform_get_drvdata(pdev);
 
-       nand_release(nand_to_mtd(&gpiomtd->nand_chip));
+       nand_release(&gpiomtd->nand_chip);
 
        /* Enable write protection and disable the chip */
        if (gpiomtd->nwp && !IS_ERR(gpiomtd->nwp))
index 7af207bc3ab5f11db3c8e06eba7eb0f91fc9619a..fe99d9323d4acbe7622fd6e8ee30796a4aad3f9e 100644 (file)
@@ -2026,7 +2026,7 @@ static int gpmi_nand_remove(struct platform_device *pdev)
 {
        struct gpmi_nand_data *this = platform_get_drvdata(pdev);
 
-       nand_release(nand_to_mtd(&this->nand));
+       nand_release(&this->nand);
        gpmi_free_dma_buffer(this);
        release_resources(this);
        return 0;
index 76885dbf9c1bab017a30091a4b4db2d5cd62d4d6..6833fc82e6b1d079acb7c2be19ea9046693b1def 100644 (file)
@@ -828,9 +828,8 @@ static int hisi_nfc_probe(struct platform_device *pdev)
 static int hisi_nfc_remove(struct platform_device *pdev)
 {
        struct hinfc_host *host = platform_get_drvdata(pdev);
-       struct mtd_info *mtd = nand_to_mtd(&host->chip);
 
-       nand_release(mtd);
+       nand_release(&host->chip);
 
        return 0;
 }
index 75bb26645c8201aaf55e33493787336dbcb4027b..27603d78b157bc0c6b6b0528b9e3c2210819cbd1 100644 (file)
@@ -507,7 +507,7 @@ static int jz_nand_remove(struct platform_device *pdev)
        struct jz_nand *nand = platform_get_drvdata(pdev);
        size_t i;
 
-       nand_release(nand_to_mtd(&nand->chip));
+       nand_release(&nand->chip);
 
        /* Deassert and disable all chips */
        writel(0, nand->base + JZ_REG_NAND_CTRL);
index 2122a7f3c4847f3e3cfe366ea14485ba8548ccce..b072bd5dd7a036d8abd8f6d7427c848ff93a0b5d 100644 (file)
@@ -292,7 +292,7 @@ static int jz4780_nand_init_chip(struct platform_device *pdev,
 
        ret = mtd_device_register(mtd, NULL, 0);
        if (ret) {
-               nand_release(mtd);
+               nand_release(chip);
                return ret;
        }
 
@@ -307,7 +307,7 @@ static void jz4780_nand_cleanup_chips(struct jz4780_nand_controller *nfc)
 
        while (!list_empty(&nfc->chips)) {
                chip = list_first_entry(&nfc->chips, struct jz4780_nand_chip, chip_list);
-               nand_release(nand_to_mtd(&chip->chip));
+               nand_release(&chip->chip);
                list_del(&chip->chip_list);
        }
 }
index 453a83b82d73bf3aaf097cbd258be6f09730e5b8..d240b8ff40cad27274a9db181e976c40910444fd 100644 (file)
@@ -839,9 +839,8 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
 static int lpc32xx_nand_remove(struct platform_device *pdev)
 {
        struct lpc32xx_nand_host *host = platform_get_drvdata(pdev);
-       struct mtd_info *mtd = nand_to_mtd(&host->nand_chip);
 
-       nand_release(mtd);
+       nand_release(&host->nand_chip);
        free_irq(host->irq, host);
        if (use_dma)
                dma_release_channel(host->dma_chan);
index ad6eff0591d2c11020d5b1fa227c64c66ff28bc1..607e4bdfae0309ce8aac13d27e7e3bb666c8f923 100644 (file)
@@ -956,9 +956,8 @@ static int lpc32xx_nand_remove(struct platform_device *pdev)
 {
        uint32_t tmp;
        struct lpc32xx_nand_host *host = platform_get_drvdata(pdev);
-       struct mtd_info *mtd = nand_to_mtd(&host->nand_chip);
 
-       nand_release(mtd);
+       nand_release(&host->nand_chip);
        dma_release_channel(host->dma_chan);
 
        /* Force CE high */
index e0e21a7fc8e7e7d51fecb88aa942637853a1c224..3e542224dd1150ba8156cbb1d5436290c03fb5cd 100644 (file)
@@ -2564,7 +2564,7 @@ static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc,
                ret = mtd_device_register(mtd, NULL, 0);
        if (ret) {
                dev_err(dev, "failed to register mtd device: %d\n", ret);
-               nand_release(mtd);
+               nand_release(chip);
                return ret;
        }
 
@@ -2619,7 +2619,7 @@ static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc)
        struct marvell_nand_chip *entry, *temp;
 
        list_for_each_entry_safe(entry, temp, &nfc->chips, node) {
-               nand_release(nand_to_mtd(&entry->chip));
+               nand_release(&entry->chip);
                list_del(&entry->node);
        }
 }
index bc99064c8ca984f8794c1de2b27a378aea0c5d86..b3d6effb34865a504edb9ab43d99506fa67ac0a1 100644 (file)
@@ -828,7 +828,7 @@ static int mpc5121_nfc_remove(struct platform_device *op)
        struct device *dev = &op->dev;
        struct mtd_info *mtd = dev_get_drvdata(dev);
 
-       nand_release(mtd);
+       nand_release(mtd_to_nand(mtd));
        mpc5121_nfc_free(dev, mtd);
 
        return 0;
index 6cc2845a5ff25d06880c7cba3ab07fb92b89ae0f..9c2ae8e873478f966a1e61b097cbb428e5dabb7a 100644 (file)
@@ -1389,7 +1389,7 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc,
        ret = mtd_device_register(mtd, NULL, 0);
        if (ret) {
                dev_err(dev, "mtd parse partition error\n");
-               nand_release(mtd);
+               nand_release(nand);
                return ret;
        }
 
@@ -1555,7 +1555,7 @@ static int mtk_nfc_remove(struct platform_device *pdev)
        while (!list_empty(&nfc->chips)) {
                chip = list_first_entry(&nfc->chips, struct mtk_nfc_nand_chip,
                                        node);
-               nand_release(nand_to_mtd(&chip->nand));
+               nand_release(&chip->nand);
                list_del(&chip->node);
        }
 
index 72bdd2767a4c0b5faec14875ea302fda542b89f6..334578d9f4a85cb0c4b20331ca4443e49dfb2948 100644 (file)
@@ -1928,7 +1928,7 @@ static int mxcnd_remove(struct platform_device *pdev)
 {
        struct mxc_nand_host *host = platform_get_drvdata(pdev);
 
-       nand_release(nand_to_mtd(&host->nand));
+       nand_release(&host->nand);
        if (host->clk_act)
                clk_disable_unprepare(host->clk);
 
index 2800520dd44d99f14fbe5f256d273bb76b0ab71c..de3926eaec133b229dbddebd793491f8eca26684 100644 (file)
@@ -6846,12 +6846,12 @@ EXPORT_SYMBOL_GPL(nand_cleanup);
 /**
  * nand_release - [NAND Interface] Unregister the MTD device and free resources
  *               held by the NAND device
- * @mtd: MTD device structure
+ * @chip: NAND chip object
  */
-void nand_release(struct mtd_info *mtd)
+void nand_release(struct nand_chip *chip)
 {
-       mtd_device_unregister(mtd);
-       nand_cleanup(mtd_to_nand(mtd));
+       mtd_device_unregister(nand_to_mtd(chip));
+       nand_cleanup(chip);
 }
 EXPORT_SYMBOL_GPL(nand_release);
 
index 7a461ea8abf933571c758b58b0d106c6533e2ffc..6e908e4fa8e85eba39b56216fd6cd9d936bb9444 100644 (file)
@@ -2364,7 +2364,7 @@ static int __init ns_init_module(void)
 
 err_exit:
        free_nandsim(nand);
-       nand_release(nsmtd);
+       nand_release(chip);
        for (i = 0;i < ARRAY_SIZE(nand->partitions); ++i)
                kfree(nand->partitions[i].name);
 error:
@@ -2386,7 +2386,7 @@ static void __exit ns_cleanup_module(void)
        int i;
 
        free_nandsim(ns);    /* Free nandsim private resources */
-       nand_release(nsmtd); /* Unregister driver */
+       nand_release(chip); /* Unregister driver */
        for (i = 0;i < ARRAY_SIZE(ns->partitions); ++i)
                kfree(ns->partitions[i].name);
        kfree(mtd_to_nand(nsmtd));        /* Free other structures */
index cfe31c78482a1dbb9668cde65c9181925fd788a4..6e96c633ac290460826848169eff06ddb59ca3db 100644 (file)
@@ -258,7 +258,7 @@ static int ndfc_remove(struct platform_device *ofdev)
        struct ndfc_controller *ndfc = dev_get_drvdata(&ofdev->dev);
        struct mtd_info *mtd = nand_to_mtd(&ndfc->chip);
 
-       nand_release(mtd);
+       nand_release(&ndfc->chip);
        kfree(mtd->name);
 
        return 0;
index 41ed993b9523b22924f6caf26ff20a24cd908fcc..0c675b6c0b6ef92bc062b10497a1e99f2a2ebc63 100644 (file)
@@ -284,7 +284,7 @@ static int nuc900_nand_remove(struct platform_device *pdev)
 {
        struct nuc900_nand *nuc900_nand = platform_get_drvdata(pdev);
 
-       nand_release(nand_to_mtd(&nuc900_nand->chip));
+       nand_release(&nuc900_nand->chip);
        clk_disable(nuc900_nand->clk);
 
        return 0;
index 49fc60a790ea018d71d4f7871f2947627a37622f..7a4af5f3e3d36e9aac47532a84f8e7b1cc15d35c 100644 (file)
@@ -2290,7 +2290,7 @@ static int omap_nand_remove(struct platform_device *pdev)
        }
        if (info->dma)
                dma_release_channel(info->dma);
-       nand_release(mtd);
+       nand_release(nand_chip);
        return 0;
 }
 
index 256a6b018bdc50d77a808dde57575571e7fb0d0f..5c58d91ffaee62f8a2ebdf9e7cdf8e8d55bca67f 100644 (file)
@@ -181,7 +181,7 @@ static int __init orion_nand_probe(struct platform_device *pdev)
        mtd->name = "orion_nand";
        ret = mtd_device_register(mtd, board->parts, board->nr_parts);
        if (ret) {
-               nand_release(mtd);
+               nand_release(nc);
                goto no_dev;
        }
 
@@ -196,9 +196,8 @@ static int orion_nand_remove(struct platform_device *pdev)
 {
        struct orion_nand_info *info = platform_get_drvdata(pdev);
        struct nand_chip *chip = &info->chip;
-       struct mtd_info *mtd = nand_to_mtd(chip);
 
-       nand_release(mtd);
+       nand_release(chip);
 
        clk_disable_unprepare(info->clk);
 
index 9aeb024c2a0ed00e90e76cc3b192e8f4100caba5..5bc180536320da2bf02b0247331a26ab2447ace7 100644 (file)
@@ -148,7 +148,7 @@ static int oxnas_nand_probe(struct platform_device *pdev)
 
                err = mtd_device_register(mtd, NULL, 0);
                if (err) {
-                       nand_release(mtd);
+                       nand_release(chip);
                        goto err_clk_unprepare;
                }
 
@@ -176,7 +176,7 @@ static int oxnas_nand_remove(struct platform_device *pdev)
        struct oxnas_nand_ctrl *oxnas = platform_get_drvdata(pdev);
 
        if (oxnas->chips[0])
-               nand_release(nand_to_mtd(oxnas->chips[0]));
+               nand_release(oxnas->chips[0]);
 
        clk_disable_unprepare(oxnas->clk);
 
index 8979ff248a31b416eedc7e6febc0795397366d26..8713ea770006eef0d784dd8f6b692b78da691ff2 100644 (file)
@@ -193,7 +193,7 @@ static int pasemi_nand_remove(struct platform_device *ofdev)
        chip = mtd_to_nand(pasemi_nand_mtd);
 
        /* Release resources, unregister device */
-       nand_release(pasemi_nand_mtd);
+       nand_release(chip);
 
        release_region(lpcctl, 4);
 
index deefe2136282efda0315f1d735148bceb36ea291..d65e4084dea48a473202dfac92af0d1fca9532a3 100644 (file)
@@ -97,7 +97,7 @@ static int plat_nand_probe(struct platform_device *pdev)
        if (!err)
                return err;
 
-       nand_release(mtd);
+       nand_release(&data->chip);
 out:
        if (pdata->ctrl.remove)
                pdata->ctrl.remove(pdev);
@@ -112,7 +112,7 @@ static int plat_nand_remove(struct platform_device *pdev)
        struct plat_nand_data *data = platform_get_drvdata(pdev);
        struct platform_nand_data *pdata = dev_get_platdata(&pdev->dev);
 
-       nand_release(nand_to_mtd(&data->chip));
+       nand_release(&data->chip);
        if (pdata->ctrl.remove)
                pdata->ctrl.remove(pdev);
 
index 87dc21df1c9836640ecca581eb07e2a1838fc352..1f9d64aeb863e2b4e1cfdde76855bf5458f5988a 100644 (file)
@@ -2999,7 +2999,7 @@ static int qcom_nandc_remove(struct platform_device *pdev)
        struct qcom_nand_host *host;
 
        list_for_each_entry(host, &nandc->host_list, node)
-               nand_release(nand_to_mtd(&host->chip));
+               nand_release(&host->chip);
 
 
        qcom_nandc_unalloc(nandc);
index dcdeb0660e5e394b02c4cb5e3b207fb33470878a..bb74a0ac697e88d19bf7278a94882f903dd2d94e 100644 (file)
@@ -656,7 +656,7 @@ static int r852_register_nand_device(struct r852_device *dev)
        dev->card_registred = 1;
        return 0;
 error3:
-       nand_release(mtd);
+       nand_release(dev->chip);
 error1:
        /* Force card redetect */
        dev->card_detected = 0;
@@ -675,7 +675,7 @@ static void r852_unregister_nand_device(struct r852_device *dev)
                return;
 
        device_remove_file(&mtd->dev, &dev_attr_media_type);
-       nand_release(mtd);
+       nand_release(dev->chip);
        r852_engine_disable(dev);
        dev->card_registred = 0;
 }
index 7f30d801d6420c7ffefdc6a88d796f560bb38c35..cf045813c160a2c776e95da850a2cca5fbadeffa 100644 (file)
@@ -781,7 +781,7 @@ static int s3c24xx_nand_remove(struct platform_device *pdev)
 
                for (mtdno = 0; mtdno < info->mtd_count; mtdno++, ptr++) {
                        pr_debug("releasing mtd %d (%p)\n", mtdno, ptr);
-                       nand_release(nand_to_mtd(&ptr->chip));
+                       nand_release(&ptr->chip);
                }
        }
 
index 1675ff254b7a17b5d8d0854d8ace239934877e15..683df1a12989c2bec1d0d7b97382fc172ccc70f7 100644 (file)
@@ -1226,7 +1226,7 @@ static int flctl_remove(struct platform_device *pdev)
        struct sh_flctl *flctl = platform_get_drvdata(pdev);
 
        flctl_release_dma(flctl);
-       nand_release(nand_to_mtd(&flctl->chip));
+       nand_release(&flctl->chip);
        pm_runtime_disable(&pdev->dev);
 
        return 0;
index 4afacb0dcf001ad279eb8b2e662c39b262aeba8a..c8eb4654bb1c773da9b9ab0c622471422741de59 100644 (file)
@@ -187,7 +187,7 @@ static int sharpsl_nand_probe(struct platform_device *pdev)
        return 0;
 
 err_add:
-       nand_release(mtd);
+       nand_release(this);
 
 err_scan:
        iounmap(sharpsl->io);
@@ -205,7 +205,7 @@ static int sharpsl_nand_remove(struct platform_device *pdev)
        struct sharpsl_nand *sharpsl = platform_get_drvdata(pdev);
 
        /* Release resources, unregister device */
-       nand_release(nand_to_mtd(&sharpsl->chip));
+       nand_release(&sharpsl->chip);
 
        iounmap(sharpsl->io);
 
index 976b6f30d67fb6970984104c094891ca62294a64..74fdb8402dbdeae5a290cfac9329707f4f971505 100644 (file)
@@ -193,7 +193,7 @@ static int socrates_nand_probe(struct platform_device *ofdev)
        if (!res)
                return res;
 
-       nand_release(mtd);
+       nand_release(nand_chip);
 
 out:
        iounmap(host->io_base);
@@ -206,9 +206,8 @@ static int socrates_nand_probe(struct platform_device *ofdev)
 static int socrates_nand_remove(struct platform_device *ofdev)
 {
        struct socrates_nand_host *host = dev_get_drvdata(&ofdev->dev);
-       struct mtd_info *mtd = nand_to_mtd(&host->nand_chip);
 
-       nand_release(mtd);
+       nand_release(&host->nand_chip);
 
        iounmap(host->io_base);
 
index bd9084f1964bea83043e1e79e07a46b5e4af6002..5b8502fd50cbc681be0207327aa5dde0775ee771 100644 (file)
@@ -1947,7 +1947,7 @@ static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc,
        ret = mtd_device_register(mtd, NULL, 0);
        if (ret) {
                dev_err(dev, "failed to register mtd device: %d\n", ret);
-               nand_release(mtd);
+               nand_release(nand);
                return ret;
        }
 
@@ -1986,7 +1986,7 @@ static void sunxi_nand_chips_cleanup(struct sunxi_nfc *nfc)
        while (!list_empty(&nfc->chips)) {
                chip = list_first_entry(&nfc->chips, struct sunxi_nand_chip,
                                        node);
-               nand_release(nand_to_mtd(&chip->nand));
+               nand_release(&chip->nand);
                sunxi_nand_ecc_cleanup(&chip->nand.ecc);
                list_del(&chip->node);
        }
index 45beb87aec937513b087c355082fbf35d500c08d..1061eb60ee60119531ca50548e02a87057c576c9 100644 (file)
@@ -617,7 +617,7 @@ static int tango_nand_remove(struct platform_device *pdev)
 
        for (cs = 0; cs < MAX_CS; ++cs) {
                if (nfc->chips[cs])
-                       nand_release(nand_to_mtd(&nfc->chips[cs]->nand_chip));
+                       nand_release(&nfc->chips[cs]->nand_chip);
        }
 
        return 0;
index 6df499a239ae27bd0b6b84f1c19bd9915b7e5886..39594910e6f04d9915e98d4a09ff69682f329b6a 100644 (file)
@@ -449,7 +449,7 @@ static int tmio_probe(struct platform_device *dev)
        if (!retval)
                return retval;
 
-       nand_release(mtd);
+       nand_release(nand_chip);
 
 err_irq:
        tmio_hw_stop(dev, tmio);
@@ -460,7 +460,7 @@ static int tmio_remove(struct platform_device *dev)
 {
        struct tmio_nand *tmio = platform_get_drvdata(dev);
 
-       nand_release(nand_to_mtd(&tmio->chip));
+       nand_release(&tmio->chip);
        tmio_hw_stop(dev, tmio);
        return 0;
 }
index 169e8bcee61ecb47ec118238956bf8818634663a..f722aae2b2449f20380bfa5bec63d64e35c490bf 100644 (file)
@@ -390,7 +390,7 @@ static int __exit txx9ndfmc_remove(struct platform_device *dev)
                chip = mtd_to_nand(mtd);
                txx9_priv = nand_get_controller_data(chip);
 
-               nand_release(mtd);
+               nand_release(chip);
                kfree(txx9_priv->mtdname);
                kfree(txx9_priv);
        }
index 3b486f4ce8682527cb9ba35c2f9e697c61eac187..a73213c835a504b167efda7c58e8d8b9aa5b9926 100644 (file)
@@ -916,7 +916,7 @@ static int vf610_nfc_remove(struct platform_device *pdev)
        struct mtd_info *mtd = platform_get_drvdata(pdev);
        struct vf610_nfc *nfc = mtd_to_nfc(mtd);
 
-       nand_release(mtd);
+       nand_release(mtd_to_nand(mtd));
        clk_disable_unprepare(nfc->clk);
        return 0;
 }
index e670d3b5a646309a5987d630312cf9cbae6d508b..1adb41acebfc3558ff779bc6b7a45c2ef3f5da2b 100644 (file)
@@ -211,7 +211,7 @@ static int xway_nand_probe(struct platform_device *pdev)
 
        err = mtd_device_register(mtd, NULL, 0);
        if (err)
-               nand_release(mtd);
+               nand_release(&data->chip);
 
        return err;
 }
@@ -223,7 +223,7 @@ static int xway_nand_remove(struct platform_device *pdev)
 {
        struct xway_nand_data *data = platform_get_drvdata(pdev);
 
-       nand_release(nand_to_mtd(&data->chip));
+       nand_release(&data->chip);
 
        return 0;
 }
index 890cd7488aca7f7a80681a710f790c0c95385bbc..a4be6b2bcc35a45a541516be2dc6c5389ba3a840 100644 (file)
@@ -1741,7 +1741,7 @@ int nand_write_data_op(struct nand_chip *chip, const void *buf,
  */
 void nand_cleanup(struct nand_chip *chip);
 /* Unregister the MTD device and calls nand_cleanup() */
-void nand_release(struct mtd_info *mtd);
+void nand_release(struct nand_chip *chip);
 
 /* Default extended ID decoding function */
 void nand_decode_ext_id(struct nand_chip *chip);