return 0;
 }
 
-static int mxic_ecc_remove(struct platform_device *pdev)
+static void mxic_ecc_remove(struct platform_device *pdev)
 {
        struct mxic_ecc_engine *mxic = platform_get_drvdata(pdev);
 
        nand_ecc_unregister_on_host_hw_engine(&mxic->external_engine);
-
-       return 0;
 }
 
 static const struct of_device_id mxic_ecc_of_ids[] = {
                .of_match_table = mxic_ecc_of_ids,
        },
        .probe = mxic_ecc_probe,
-       .remove = mxic_ecc_remove,
+       .remove_new = mxic_ecc_remove,
 };
 module_platform_driver(mxic_ecc_driver);
 
 
        return err;
 }
 
-static int generic_onenand_remove(struct platform_device *pdev)
+static void generic_onenand_remove(struct platform_device *pdev)
 {
        struct onenand_info *info = platform_get_drvdata(pdev);
        struct resource *res = pdev->resource;
                iounmap(info->onenand.base);
                kfree(info);
        }
-
-       return 0;
 }
 
 static struct platform_driver generic_onenand_driver = {
                .name           = DRIVER_NAME,
        },
        .probe          = generic_onenand_probe,
-       .remove         = generic_onenand_remove,
+       .remove_new     = generic_onenand_remove,
 };
 
 module_platform_driver(generic_onenand_driver);
 
        return r;
 }
 
-static int omap2_onenand_remove(struct platform_device *pdev)
+static void omap2_onenand_remove(struct platform_device *pdev)
 {
        struct omap2_onenand *c = dev_get_drvdata(&pdev->dev);
 
        if (c->dma_chan)
                dma_release_channel(c->dma_chan);
        omap2_onenand_shutdown(pdev);
-
-       return 0;
 }
 
 static const struct of_device_id omap2_onenand_id_table[] = {
 
 static struct platform_driver omap2_onenand_driver = {
        .probe          = omap2_onenand_probe,
-       .remove         = omap2_onenand_remove,
+       .remove_new     = omap2_onenand_remove,
        .shutdown       = omap2_onenand_shutdown,
        .driver         = {
                .name   = DRIVER_NAME,
 
        return 0;
 }
 
-static int s3c_onenand_remove(struct platform_device *pdev)
+static void s3c_onenand_remove(struct platform_device *pdev)
 {
        struct mtd_info *mtd = platform_get_drvdata(pdev);
 
        onenand_release(mtd);
-
-       return 0;
 }
 
 static int s3c_pm_ops_suspend(struct device *dev)
        },
        .id_table       = s3c_onenand_driver_ids,
        .probe          = s3c_onenand_probe,
-       .remove         = s3c_onenand_remove,
+       .remove_new     = s3c_onenand_remove,
 };
 
 module_platform_driver(s3c_onenand_driver);
 
 /*
  * Clean up routine
  */
-static int gpio_nand_remove(struct platform_device *pdev)
+static void gpio_nand_remove(struct platform_device *pdev)
 {
        struct gpio_nand *priv = platform_get_drvdata(pdev);
        struct mtd_info *mtd = nand_to_mtd(&priv->nand_chip);
        ret = mtd_device_unregister(mtd);
        WARN_ON(ret);
        nand_cleanup(mtd_to_nand(mtd));
-
-       return 0;
 }
 
 #ifdef CONFIG_OF
 
 static struct platform_driver gpio_nand_driver = {
        .probe          = gpio_nand_probe,
-       .remove         = gpio_nand_remove,
+       .remove_new     = gpio_nand_remove,
        .id_table       = gpio_nand_plat_id_table,
        .driver         = {
                .name   = "ams-delta-nand",
 
        return ret;
 }
 
-static int anfc_remove(struct platform_device *pdev)
+static void anfc_remove(struct platform_device *pdev)
 {
        struct arasan_nfc *nfc = platform_get_drvdata(pdev);
 
 
        clk_disable_unprepare(nfc->bus_clk);
        clk_disable_unprepare(nfc->controller_clk);
-
-       return 0;
 }
 
 static const struct of_device_id anfc_ids[] = {
                .of_match_table = anfc_ids,
        },
        .probe = anfc_probe,
-       .remove = anfc_remove,
+       .remove_new = anfc_remove,
 };
 module_platform_driver(anfc_driver);
 
 
        return caps->ops->probe(pdev, caps);
 }
 
-static int atmel_nand_controller_remove(struct platform_device *pdev)
+static void atmel_nand_controller_remove(struct platform_device *pdev)
 {
        struct atmel_nand_controller *nc = platform_get_drvdata(pdev);
 
        WARN_ON(nc->caps->ops->remove(nc));
-
-       return 0;
 }
 
 static __maybe_unused int atmel_nand_controller_resume(struct device *dev)
                .pm = &atmel_nand_controller_pm_ops,
        },
        .probe = atmel_nand_controller_probe,
-       .remove = atmel_nand_controller_remove,
+       .remove_new = atmel_nand_controller_remove,
 };
 module_platform_driver(atmel_nand_controller_driver);
 
 
        return ret;
 }
 
-static int au1550nd_remove(struct platform_device *pdev)
+static void au1550nd_remove(struct platform_device *pdev)
 {
        struct au1550nd_ctx *ctx = platform_get_drvdata(pdev);
        struct resource *r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        iounmap(ctx->base);
        release_mem_region(r->start, 0x1000);
        kfree(ctx);
-       return 0;
 }
 
 static struct platform_driver au1550nd_driver = {
                .name   = "au1550-nand",
        },
        .probe          = au1550nd_probe,
-       .remove         = au1550nd_remove,
+       .remove_new     = au1550nd_remove,
 };
 
 module_platform_driver(au1550nd_driver);
 
        return 0;
 }
 
-static int bcm47xxnflash_remove(struct platform_device *pdev)
+static void bcm47xxnflash_remove(struct platform_device *pdev)
 {
        struct bcm47xxnflash *nflash = platform_get_drvdata(pdev);
        struct nand_chip *chip = &nflash->nand_chip;
        ret = mtd_device_unregister(nand_to_mtd(chip));
        WARN_ON(ret);
        nand_cleanup(chip);
-
-       return 0;
 }
 
 static struct platform_driver bcm47xxnflash_driver = {
        .probe  = bcm47xxnflash_probe,
-       .remove = bcm47xxnflash_remove,
+       .remove_new = bcm47xxnflash_remove,
        .driver = {
                .name = "bcma_nflash",
        },
 
        return 0;
 }
 
-static int cadence_nand_dt_remove(struct platform_device *ofdev)
+static void cadence_nand_dt_remove(struct platform_device *ofdev)
 {
        struct cadence_nand_dt *dt = platform_get_drvdata(ofdev);
 
        cadence_nand_remove(&dt->cdns_ctrl);
-
-       return 0;
 }
 
 static struct platform_driver cadence_nand_dt_driver = {
        .probe          = cadence_nand_dt_probe,
-       .remove         = cadence_nand_dt_remove,
+       .remove_new     = cadence_nand_dt_remove,
        .driver         = {
                .name   = "cadence-nand-controller",
                .of_match_table = cadence_nand_dt_ids,
 
        return ret;
 }
 
-static int nand_davinci_remove(struct platform_device *pdev)
+static void nand_davinci_remove(struct platform_device *pdev)
 {
        struct davinci_nand_info *info = platform_get_drvdata(pdev);
        struct nand_chip *chip = &info->chip;
        ret = mtd_device_unregister(nand_to_mtd(chip));
        WARN_ON(ret);
        nand_cleanup(chip);
-
-       return 0;
 }
 
 static struct platform_driver nand_davinci_driver = {
        .probe          = nand_davinci_probe,
-       .remove         = nand_davinci_remove,
+       .remove_new     = nand_davinci_remove,
        .driver         = {
                .name   = "davinci_nand",
                .of_match_table = of_match_ptr(davinci_nand_of_match),
 
        return ret;
 }
 
-static int denali_dt_remove(struct platform_device *pdev)
+static void denali_dt_remove(struct platform_device *pdev)
 {
        struct denali_dt *dt = platform_get_drvdata(pdev);
 
        clk_disable_unprepare(dt->clk_ecc);
        clk_disable_unprepare(dt->clk_x);
        clk_disable_unprepare(dt->clk);
-
-       return 0;
 }
 
 static struct platform_driver denali_dt_driver = {
        .probe          = denali_dt_probe,
-       .remove         = denali_dt_remove,
+       .remove_new     = denali_dt_remove,
        .driver         = {
                .name   = "denali-nand-dt",
                .of_match_table = denali_nand_dt_ids,
 
        return ret;
 }
 
-static int fsl_elbc_nand_remove(struct platform_device *pdev)
+static void 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);
        }
        mutex_unlock(&fsl_elbc_nand_mutex);
 
-       return 0;
-
 }
 
 static const struct of_device_id fsl_elbc_nand_match[] = {
                .of_match_table = fsl_elbc_nand_match,
        },
        .probe = fsl_elbc_nand_probe,
-       .remove = fsl_elbc_nand_remove,
+       .remove_new = fsl_elbc_nand_remove,
 };
 
 module_platform_driver(fsl_elbc_nand_driver);
 
        return ret;
 }
 
-static int fsl_ifc_nand_remove(struct platform_device *dev)
+static void fsl_ifc_nand_remove(struct platform_device *dev)
 {
        struct fsl_ifc_mtd *priv = dev_get_drvdata(&dev->dev);
        struct nand_chip *chip = &priv->chip;
                kfree(ifc_nand_ctrl);
        }
        mutex_unlock(&fsl_ifc_nand_mutex);
-
-       return 0;
 }
 
 static const struct of_device_id fsl_ifc_nand_match[] = {
                .of_match_table = fsl_ifc_nand_match,
        },
        .probe       = fsl_ifc_nand_probe,
-       .remove      = fsl_ifc_nand_remove,
+       .remove_new  = fsl_ifc_nand_remove,
 };
 
 module_platform_driver(fsl_ifc_nand_driver);
 
        return 0;
 }
 
-static int fun_remove(struct platform_device *ofdev)
+static void fun_remove(struct platform_device *ofdev)
 {
        struct fsl_upm_nand *fun = dev_get_drvdata(&ofdev->dev);
        struct nand_chip *chip = &fun->chip;
        ret = mtd_device_unregister(mtd);
        WARN_ON(ret);
        nand_cleanup(chip);
-
-       return 0;
 }
 
 static const struct of_device_id of_fun_match[] = {
                .of_match_table = of_fun_match,
        },
        .probe          = fun_probe,
-       .remove         = fun_remove,
+       .remove_new     = fun_remove,
 };
 
 module_platform_driver(of_fun_driver);
 
 /*
  * Clean up routine
  */
-static int fsmc_nand_remove(struct platform_device *pdev)
+static void fsmc_nand_remove(struct platform_device *pdev)
 {
        struct fsmc_nand_data *host = platform_get_drvdata(pdev);
 
                }
                clk_disable_unprepare(host->clk);
        }
-
-       return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
 MODULE_DEVICE_TABLE(of, fsmc_nand_id_table);
 
 static struct platform_driver fsmc_nand_driver = {
-       .remove = fsmc_nand_remove,
+       .remove_new = fsmc_nand_remove,
        .driver = {
                .name = "fsmc-nand",
                .of_match_table = fsmc_nand_id_table,
 
        return platform_get_resource(pdev, IORESOURCE_MEM, 1);
 }
 
-static int gpio_nand_remove(struct platform_device *pdev)
+static void gpio_nand_remove(struct platform_device *pdev)
 {
        struct gpiomtd *gpiomtd = platform_get_drvdata(pdev);
        struct nand_chip *chip = &gpiomtd->nand_chip;
                gpiod_set_value(gpiomtd->nwp, 0);
        if (gpiomtd->nce && !IS_ERR(gpiomtd->nce))
                gpiod_set_value(gpiomtd->nce, 0);
-
-       return 0;
 }
 
 static int gpio_nand_probe(struct platform_device *pdev)
 
 static struct platform_driver gpio_nand_driver = {
        .probe          = gpio_nand_probe,
-       .remove         = gpio_nand_remove,
+       .remove_new     = gpio_nand_remove,
        .driver         = {
                .name   = "gpio-nand",
                .of_match_table = of_match_ptr(gpio_nand_id_table),
 
        return ret;
 }
 
-static int gpmi_nand_remove(struct platform_device *pdev)
+static void gpmi_nand_remove(struct platform_device *pdev)
 {
        struct gpmi_nand_data *this = platform_get_drvdata(pdev);
        struct nand_chip *chip = &this->nand;
        nand_cleanup(chip);
        gpmi_free_dma_buffer(this);
        release_resources(this);
-       return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
                .of_match_table = gpmi_nand_id_table,
        },
        .probe   = gpmi_nand_probe,
-       .remove  = gpmi_nand_remove,
+       .remove_new = gpmi_nand_remove,
 };
 module_platform_driver(gpmi_nand_driver);
 
 
        return 0;
 }
 
-static int hisi_nfc_remove(struct platform_device *pdev)
+static void hisi_nfc_remove(struct platform_device *pdev)
 {
        struct hinfc_host *host = platform_get_drvdata(pdev);
        struct nand_chip *chip = &host->chip;
        ret = mtd_device_unregister(nand_to_mtd(chip));
        WARN_ON(ret);
        nand_cleanup(chip);
-
-       return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
                .pm = &hisi_nfc_pm_ops,
        },
        .probe          = hisi_nfc_probe,
-       .remove         = hisi_nfc_remove,
+       .remove_new     = hisi_nfc_remove,
 };
 
 module_platform_driver(hisi_nfc_driver);
 
        return 0;
 }
 
-static int ingenic_nand_remove(struct platform_device *pdev)
+static void ingenic_nand_remove(struct platform_device *pdev)
 {
        struct ingenic_nfc *nfc = platform_get_drvdata(pdev);
 
                ingenic_ecc_release(nfc->ecc);
 
        ingenic_nand_cleanup_chips(nfc);
-
-       return 0;
 }
 
 static const struct jz_soc_info jz4740_soc_info = {
 
 static struct platform_driver ingenic_nand_driver = {
        .probe          = ingenic_nand_probe,
-       .remove         = ingenic_nand_remove,
+       .remove_new     = ingenic_nand_remove,
        .driver = {
                .name   = DRV_NAME,
                .of_match_table = ingenic_nand_dt_match,
 
        return ret;
 }
 
-static int ebu_nand_remove(struct platform_device *pdev)
+static void ebu_nand_remove(struct platform_device *pdev)
 {
        struct ebu_nand_controller *ebu_host = platform_get_drvdata(pdev);
        int ret;
        ebu_nand_disable(&ebu_host->chip);
        ebu_dma_cleanup(ebu_host);
        clk_disable_unprepare(ebu_host->clk);
-
-       return 0;
 }
 
 static const struct of_device_id ebu_nand_match[] = {
 
 static struct platform_driver ebu_nand_driver = {
        .probe = ebu_nand_probe,
-       .remove = ebu_nand_remove,
+       .remove_new = ebu_nand_remove,
        .driver = {
                .name = "intel-nand-controller",
                .of_match_table = ebu_nand_match,
 
 /*
  * Remove NAND device
  */
-static int lpc32xx_nand_remove(struct platform_device *pdev)
+static void lpc32xx_nand_remove(struct platform_device *pdev)
 {
        struct lpc32xx_nand_host *host = platform_get_drvdata(pdev);
        struct nand_chip *chip = &host->nand_chip;
 
        lpc32xx_wp_enable(host);
        gpiod_put(host->wp_gpio);
-
-       return 0;
 }
 
 static int lpc32xx_nand_resume(struct platform_device *pdev)
 
 static struct platform_driver lpc32xx_nand_driver = {
        .probe          = lpc32xx_nand_probe,
-       .remove         = lpc32xx_nand_remove,
+       .remove_new     = lpc32xx_nand_remove,
        .resume         = pm_ptr(lpc32xx_nand_resume),
        .suspend        = pm_ptr(lpc32xx_nand_suspend),
        .driver         = {
 
 /*
  * Remove NAND device.
  */
-static int lpc32xx_nand_remove(struct platform_device *pdev)
+static void lpc32xx_nand_remove(struct platform_device *pdev)
 {
        uint32_t tmp;
        struct lpc32xx_nand_host *host = platform_get_drvdata(pdev);
 
        clk_disable_unprepare(host->clk);
        lpc32xx_wp_enable(host);
-
-       return 0;
 }
 
 static int lpc32xx_nand_resume(struct platform_device *pdev)
 
 static struct platform_driver lpc32xx_nand_driver = {
        .probe          = lpc32xx_nand_probe,
-       .remove         = lpc32xx_nand_remove,
+       .remove_new     = lpc32xx_nand_remove,
        .resume         = pm_ptr(lpc32xx_nand_resume),
        .suspend        = pm_ptr(lpc32xx_nand_suspend),
        .driver         = {
 
        return ret;
 }
 
-static int marvell_nfc_remove(struct platform_device *pdev)
+static void marvell_nfc_remove(struct platform_device *pdev)
 {
        struct marvell_nfc *nfc = platform_get_drvdata(pdev);
 
 
        clk_disable_unprepare(nfc->reg_clk);
        clk_disable_unprepare(nfc->core_clk);
-
-       return 0;
 }
 
 static int __maybe_unused marvell_nfc_suspend(struct device *dev)
        },
        .id_table = marvell_nfc_platform_ids,
        .probe = marvell_nfc_probe,
-       .remove = marvell_nfc_remove,
+       .remove_new = marvell_nfc_remove,
 };
 module_platform_driver(marvell_nfc_driver);
 
 
        return ret;
 }
 
-static int meson_nfc_remove(struct platform_device *pdev)
+static void meson_nfc_remove(struct platform_device *pdev)
 {
        struct meson_nfc *nfc = platform_get_drvdata(pdev);
 
        meson_nfc_nand_chip_cleanup(nfc);
 
        meson_nfc_disable_clk(nfc);
-
-       return 0;
 }
 
 static struct platform_driver meson_nfc_driver = {
        .probe  = meson_nfc_probe,
-       .remove = meson_nfc_remove,
+       .remove_new = meson_nfc_remove,
        .driver = {
                .name  = "meson-nand",
                .of_match_table = meson_nfc_id_table,
 
        return retval;
 }
 
-static int mpc5121_nfc_remove(struct platform_device *op)
+static void mpc5121_nfc_remove(struct platform_device *op)
 {
        struct device *dev = &op->dev;
        struct mtd_info *mtd = dev_get_drvdata(dev);
        WARN_ON(ret);
        nand_cleanup(mtd_to_nand(mtd));
        mpc5121_nfc_free(dev, mtd);
-
-       return 0;
 }
 
 static const struct of_device_id mpc5121_nfc_match[] = {
 
 static struct platform_driver mpc5121_nfc_driver = {
        .probe          = mpc5121_nfc_probe,
-       .remove         = mpc5121_nfc_remove,
+       .remove_new     = mpc5121_nfc_remove,
        .driver         = {
                .name = DRV_NAME,
                .of_match_table = mpc5121_nfc_match,
 
        return ret;
 }
 
-static int mtk_nfc_remove(struct platform_device *pdev)
+static void mtk_nfc_remove(struct platform_device *pdev)
 {
        struct mtk_nfc *nfc = platform_get_drvdata(pdev);
        struct mtk_nfc_nand_chip *mtk_chip;
 
        mtk_ecc_release(nfc->ecc);
        mtk_nfc_disable_clk(&nfc->clk);
-
-       return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
 
 static struct platform_driver mtk_nfc_driver = {
        .probe  = mtk_nfc_probe,
-       .remove = mtk_nfc_remove,
+       .remove_new = mtk_nfc_remove,
        .driver = {
                .name  = MTK_NAME,
                .of_match_table = mtk_nfc_id_table,
 
        return err;
 }
 
-static int mxcnd_remove(struct platform_device *pdev)
+static void mxcnd_remove(struct platform_device *pdev)
 {
        struct mxc_nand_host *host = platform_get_drvdata(pdev);
        struct nand_chip *chip = &host->nand;
        nand_cleanup(chip);
        if (host->clk_act)
                clk_disable_unprepare(host->clk);
-
-       return 0;
 }
 
 static struct platform_driver mxcnd_driver = {
                   .of_match_table = mxcnd_dt_ids,
        },
        .probe = mxcnd_probe,
-       .remove = mxcnd_remove,
+       .remove_new = mxcnd_remove,
 };
 module_platform_driver(mxcnd_driver);
 
 
        return err;
 }
 
-static int mxic_nfc_remove(struct platform_device *pdev)
+static void mxic_nfc_remove(struct platform_device *pdev)
 {
        struct mxic_nand_ctlr *nfc = platform_get_drvdata(pdev);
        struct nand_chip *chip = &nfc->chip;
        nand_cleanup(chip);
 
        mxic_nfc_clk_disable(nfc);
-       return 0;
 }
 
 static const struct of_device_id mxic_nfc_of_ids[] = {
 
 static struct platform_driver mxic_nfc_driver = {
        .probe = mxic_nfc_probe,
-       .remove = mxic_nfc_remove,
+       .remove_new = mxic_nfc_remove,
        .driver = {
                .name = "mxic-nfc",
                .of_match_table = mxic_nfc_of_ids,
 
        return 0;
 }
 
-static int ndfc_remove(struct platform_device *ofdev)
+static void ndfc_remove(struct platform_device *ofdev)
 {
        struct ndfc_controller *ndfc = dev_get_drvdata(&ofdev->dev);
        struct nand_chip *chip = &ndfc->chip;
        WARN_ON(ret);
        nand_cleanup(chip);
        kfree(mtd->name);
-
-       return 0;
 }
 
 static const struct of_device_id ndfc_match[] = {
                .of_match_table = ndfc_match,
        },
        .probe = ndfc_probe,
-       .remove = ndfc_remove,
+       .remove_new = ndfc_remove,
 };
 
 module_platform_driver(ndfc_driver);
 
        return err;
 }
 
-static int omap_nand_remove(struct platform_device *pdev)
+static void omap_nand_remove(struct platform_device *pdev)
 {
        struct mtd_info *mtd = platform_get_drvdata(pdev);
        struct nand_chip *nand_chip = mtd_to_nand(mtd);
                dma_release_channel(info->dma);
        WARN_ON(mtd_device_unregister(mtd));
        nand_cleanup(nand_chip);
-       return 0;
 }
 
 /* omap_nand_ids defined in linux/platform_data/mtd-nand-omap2.h */
 
 static struct platform_driver omap_nand_driver = {
        .probe          = omap_nand_probe,
-       .remove         = omap_nand_remove,
+       .remove_new     = omap_nand_remove,
        .driver         = {
                .name   = DRIVER_NAME,
                .of_match_table = omap_nand_ids,
 
        return ret;
 }
 
-static int elm_remove(struct platform_device *pdev)
+static void elm_remove(struct platform_device *pdev)
 {
        pm_runtime_put_sync(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
-       return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
                .pm     = &elm_pm_ops,
        },
        .probe  = elm_probe,
-       .remove = elm_remove,
+       .remove_new = elm_remove,
 };
 
 module_platform_driver(elm_driver);
 
        return ret;
 }
 
-static int orion_nand_remove(struct platform_device *pdev)
+static void orion_nand_remove(struct platform_device *pdev)
 {
        struct orion_nand_info *info = platform_get_drvdata(pdev);
        struct nand_chip *chip = &info->chip;
        nand_cleanup(chip);
 
        clk_disable_unprepare(info->clk);
-
-       return 0;
 }
 
 #ifdef CONFIG_OF
 #endif
 
 static struct platform_driver orion_nand_driver = {
-       .remove         = orion_nand_remove,
+       .remove_new     = orion_nand_remove,
        .driver         = {
                .name   = "orion_nand",
                .of_match_table = of_match_ptr(orion_nand_of_match_table),
 
        return err;
 }
 
-static int oxnas_nand_remove(struct platform_device *pdev)
+static void oxnas_nand_remove(struct platform_device *pdev)
 {
        struct oxnas_nand_ctrl *oxnas = platform_get_drvdata(pdev);
        struct nand_chip *chip;
        }
 
        clk_disable_unprepare(oxnas->clk);
-
-       return 0;
 }
 
 static const struct of_device_id oxnas_nand_match[] = {
 
 static struct platform_driver oxnas_nand_driver = {
        .probe  = oxnas_nand_probe,
-       .remove = oxnas_nand_remove,
+       .remove_new = oxnas_nand_remove,
        .driver = {
                .name           = "oxnas_nand",
                .of_match_table = oxnas_nand_match,
 
        return err;
 }
 
-static int pasemi_nand_remove(struct platform_device *ofdev)
+static void pasemi_nand_remove(struct platform_device *ofdev)
 {
        struct pasemi_ddata *ddata = platform_get_drvdata(ofdev);
        struct mtd_info *pasemi_nand_mtd;
 
        /* Free the MTD device structure */
        kfree(ddata);
-
-       return 0;
 }
 
 static const struct of_device_id pasemi_nand_match[] =
                .of_match_table = pasemi_nand_match,
        },
        .probe          = pasemi_nand_probe,
-       .remove         = pasemi_nand_remove,
+       .remove_new     = pasemi_nand_remove,
 };
 
 module_platform_driver(pasemi_nand_driver);
 
        return 0;
 }
 
-static int pl35x_nand_remove(struct platform_device *pdev)
+static void pl35x_nand_remove(struct platform_device *pdev)
 {
        struct pl35x_nandc *nfc = platform_get_drvdata(pdev);
 
        pl35x_nand_chips_cleanup(nfc);
-
-       return 0;
 }
 
 static const struct of_device_id pl35x_nand_of_match[] = {
 
 static struct platform_driver pl35x_nandc_driver = {
        .probe = pl35x_nand_probe,
-       .remove = pl35x_nand_remove,
+       .remove_new = pl35x_nand_remove,
        .driver = {
                .name = PL35X_NANDC_DRIVER_NAME,
                .of_match_table = pl35x_nand_of_match,
 
 /*
  * Remove a NAND device.
  */
-static int plat_nand_remove(struct platform_device *pdev)
+static void 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_cleanup(chip);
        if (pdata->ctrl.remove)
                pdata->ctrl.remove(pdev);
-
-       return 0;
 }
 
 static const struct of_device_id plat_nand_match[] = {
 
 static struct platform_driver plat_nand_driver = {
        .probe  = plat_nand_probe,
-       .remove = plat_nand_remove,
+       .remove_new = plat_nand_remove,
        .driver = {
                .name           = "gen_nand",
                .of_match_table = plat_nand_match,
 
        return ret;
 }
 
-static int qcom_nandc_remove(struct platform_device *pdev)
+static void qcom_nandc_remove(struct platform_device *pdev)
 {
        struct qcom_nand_controller *nandc = platform_get_drvdata(pdev);
        struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 
        dma_unmap_resource(&pdev->dev, nandc->base_dma, resource_size(res),
                           DMA_BIDIRECTIONAL, 0);
-
-       return 0;
 }
 
 static const struct qcom_nandc_props ipq806x_nandc_props = {
                .of_match_table = qcom_nandc_of_match,
        },
        .probe   = qcom_nandc_probe,
-       .remove  = qcom_nandc_remove,
+       .remove_new = qcom_nandc_remove,
 };
 module_platform_driver(qcom_nandc_driver);
 
 
        return ret;
 }
 
-static int rnandc_remove(struct platform_device *pdev)
+static void rnandc_remove(struct platform_device *pdev)
 {
        struct rnandc *rnandc = platform_get_drvdata(pdev);
 
        rnandc_chips_cleanup(rnandc);
 
        pm_runtime_put(&pdev->dev);
-
-       return 0;
 }
 
 static const struct of_device_id rnandc_id_table[] = {
                .of_match_table = rnandc_id_table,
        },
        .probe = rnandc_probe,
-       .remove = rnandc_remove,
+       .remove_new = rnandc_remove,
 };
 module_platform_driver(rnandc_driver);
 
 
        return ret;
 }
 
-static int rk_nfc_remove(struct platform_device *pdev)
+static void rk_nfc_remove(struct platform_device *pdev)
 {
        struct rk_nfc *nfc = platform_get_drvdata(pdev);
 
        kfree(nfc->oob_buf);
        rk_nfc_chips_cleanup(nfc);
        rk_nfc_disable_clks(nfc);
-
-       return 0;
 }
 
 static int __maybe_unused rk_nfc_suspend(struct device *dev)
 
 static struct platform_driver rk_nfc_driver = {
        .probe = rk_nfc_probe,
-       .remove = rk_nfc_remove,
+       .remove_new = rk_nfc_remove,
        .driver = {
                .name = "rockchip-nfc",
                .of_match_table = rk_nfc_id_table,
 
 
 /* device management functions */
 
-static int s3c24xx_nand_remove(struct platform_device *pdev)
+static void s3c24xx_nand_remove(struct platform_device *pdev)
 {
        struct s3c2410_nand_info *info = to_nand_info(pdev);
 
        if (info == NULL)
-               return 0;
+               return;
 
        /* Release all our mtds  and their partitions, then go through
         * freeing the resources used
 
        if (!IS_ERR(info->clk))
                s3c2410_nand_clk_set_state(info, CLOCK_DISABLE);
-
-       return 0;
 }
 
 static int s3c2410_nand_add_partition(struct s3c2410_nand_info *info,
 
 static struct platform_driver s3c24xx_nand_driver = {
        .probe          = s3c24xx_nand_probe,
-       .remove         = s3c24xx_nand_remove,
+       .remove_new     = s3c24xx_nand_remove,
        .suspend        = s3c24xx_nand_suspend,
        .resume         = s3c24xx_nand_resume,
        .id_table       = s3c24xx_driver_ids,
 
        return ret;
 }
 
-static int flctl_remove(struct platform_device *pdev)
+static void flctl_remove(struct platform_device *pdev)
 {
        struct sh_flctl *flctl = platform_get_drvdata(pdev);
        struct nand_chip *chip = &flctl->chip;
        WARN_ON(ret);
        nand_cleanup(chip);
        pm_runtime_disable(&pdev->dev);
-
-       return 0;
 }
 
 static struct platform_driver flctl_driver = {
-       .remove         = flctl_remove,
+       .remove_new     = flctl_remove,
        .driver = {
                .name   = "sh_flctl",
                .of_match_table = of_flctl_match,
 
 /*
  * Clean up routine
  */
-static int sharpsl_nand_remove(struct platform_device *pdev)
+static void sharpsl_nand_remove(struct platform_device *pdev)
 {
        struct sharpsl_nand *sharpsl = platform_get_drvdata(pdev);
        struct nand_chip *chip = &sharpsl->chip;
 
        /* Free the driver's structure */
        kfree(sharpsl);
-
-       return 0;
 }
 
 static struct platform_driver sharpsl_nand_driver = {
                .name   = "sharpsl-nand",
        },
        .probe          = sharpsl_nand_probe,
-       .remove         = sharpsl_nand_remove,
+       .remove_new     = sharpsl_nand_remove,
 };
 
 module_platform_driver(sharpsl_nand_driver);
 
 /*
  * Remove a NAND device.
  */
-static int socrates_nand_remove(struct platform_device *ofdev)
+static void socrates_nand_remove(struct platform_device *ofdev)
 {
        struct socrates_nand_host *host = dev_get_drvdata(&ofdev->dev);
        struct nand_chip *chip = &host->nand_chip;
        nand_cleanup(chip);
 
        iounmap(host->io_base);
-
-       return 0;
 }
 
 static const struct of_device_id socrates_nand_match[] =
                .of_match_table = socrates_nand_match,
        },
        .probe          = socrates_nand_probe,
-       .remove         = socrates_nand_remove,
+       .remove_new     = socrates_nand_remove,
 };
 
 module_platform_driver(socrates_nand_driver);
 
        return ret;
 }
 
-static int stm32_fmc2_nfc_remove(struct platform_device *pdev)
+static void stm32_fmc2_nfc_remove(struct platform_device *pdev)
 {
        struct stm32_fmc2_nfc *nfc = platform_get_drvdata(pdev);
        struct stm32_fmc2_nand *nand = &nfc->nand;
        clk_disable_unprepare(nfc->clk);
 
        stm32_fmc2_nfc_wp_enable(nand);
-
-       return 0;
 }
 
 static int __maybe_unused stm32_fmc2_nfc_suspend(struct device *dev)
 
 static struct platform_driver stm32_fmc2_nfc_driver = {
        .probe  = stm32_fmc2_nfc_probe,
-       .remove = stm32_fmc2_nfc_remove,
+       .remove_new = stm32_fmc2_nfc_remove,
        .driver = {
                .name = "stm32_fmc2_nfc",
                .of_match_table = stm32_fmc2_nfc_match,
 
        return ret;
 }
 
-static int sunxi_nfc_remove(struct platform_device *pdev)
+static void sunxi_nfc_remove(struct platform_device *pdev)
 {
        struct sunxi_nfc *nfc = platform_get_drvdata(pdev);
 
                dma_release_channel(nfc->dmac);
        clk_disable_unprepare(nfc->mod_clk);
        clk_disable_unprepare(nfc->ahb_clk);
-
-       return 0;
 }
 
 static const struct sunxi_nfc_caps sunxi_nfc_a10_caps = {
                .of_match_table = sunxi_nfc_ids,
        },
        .probe = sunxi_nfc_probe,
-       .remove = sunxi_nfc_remove,
+       .remove_new = sunxi_nfc_remove,
 };
 module_platform_driver(sunxi_nfc_driver);
 
 
        return err;
 }
 
-static int tegra_nand_remove(struct platform_device *pdev)
+static void tegra_nand_remove(struct platform_device *pdev)
 {
        struct tegra_nand_controller *ctrl = platform_get_drvdata(pdev);
        struct nand_chip *chip = ctrl->chip;
 
        pm_runtime_put_sync_suspend(ctrl->dev);
        pm_runtime_force_suspend(ctrl->dev);
-
-       return 0;
 }
 
 static int __maybe_unused tegra_nand_runtime_resume(struct device *dev)
                .pm = &tegra_nand_pm,
        },
        .probe = tegra_nand_probe,
-       .remove = tegra_nand_remove,
+       .remove_new = tegra_nand_remove,
 };
 module_platform_driver(tegra_nand_driver);
 
 
        return err;
 }
 
-static int vf610_nfc_remove(struct platform_device *pdev)
+static void vf610_nfc_remove(struct platform_device *pdev)
 {
        struct vf610_nfc *nfc = platform_get_drvdata(pdev);
        struct nand_chip *chip = &nfc->chip;
        WARN_ON(ret);
        nand_cleanup(chip);
        clk_disable_unprepare(nfc->clk);
-       return 0;
 }
 
 #ifdef CONFIG_PM_SLEEP
                .pm     = &vf610_nfc_pm_ops,
        },
        .probe          = vf610_nfc_probe,
-       .remove         = vf610_nfc_remove,
+       .remove_new     = vf610_nfc_remove,
 };
 
 module_platform_driver(vf610_nfc_driver);
 
 /*
  * Remove a NAND device.
  */
-static int xway_nand_remove(struct platform_device *pdev)
+static void xway_nand_remove(struct platform_device *pdev)
 {
        struct xway_nand_data *data = platform_get_drvdata(pdev);
        struct nand_chip *chip = &data->chip;
        ret = mtd_device_unregister(nand_to_mtd(chip));
        WARN_ON(ret);
        nand_cleanup(chip);
-
-       return 0;
 }
 
 static const struct of_device_id xway_nand_match[] = {
 
 static struct platform_driver xway_nand_driver = {
        .probe  = xway_nand_probe,
-       .remove = xway_nand_remove,
+       .remove_new = xway_nand_remove,
        .driver = {
                .name           = "lantiq,nand-xway",
                .of_match_table = xway_nand_match,