mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
mtd: rawnand: Pass a nand_chip object to nand_release()
[ 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>
This commit is contained in:
parent
5bc796dcac
commit
5bcfcbfc40
@ -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);
|
||||
|
@ -263,7 +263,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);
|
||||
|
@ -496,7 +496,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);
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -688,7 +688,7 @@ static int bf5xx_nand_remove(struct platform_device *pdev)
|
||||
* and their partitions, then go through freeing the
|
||||
* resources used
|
||||
*/
|
||||
nand_release(nand_to_mtd(&info->chip));
|
||||
nand_release(&info->chip);
|
||||
|
||||
peripheral_free_list(bfin_nfc_pin_req);
|
||||
bf5xx_nand_dma_remove(info);
|
||||
|
@ -2597,7 +2597,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);
|
||||
|
||||
|
@ -826,7 +826,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,
|
||||
|
@ -230,7 +230,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);
|
||||
|
@ -338,7 +338,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;
|
||||
|
||||
|
@ -854,7 +854,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);
|
||||
|
||||
clk_disable_unprepare(info->clk);
|
||||
|
||||
|
@ -1444,9 +1444,7 @@ EXPORT_SYMBOL(denali_init);
|
||||
/* driver exit point */
|
||||
void denali_remove(struct denali_nand_info *denali)
|
||||
{
|
||||
struct mtd_info *mtd = nand_to_mtd(&denali->nand);
|
||||
|
||||
nand_release(mtd);
|
||||
nand_release(&denali->nand);
|
||||
kfree(denali->buf);
|
||||
denali_disable_irq(denali);
|
||||
}
|
||||
|
@ -1611,7 +1611,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);
|
||||
kfree(nand);
|
||||
goto fail;
|
||||
}
|
||||
@ -1644,7 +1644,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);
|
||||
kfree(nand);
|
||||
|
@ -1376,7 +1376,7 @@ static int __init probe_docg4(struct platform_device *pdev)
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
nand_release(mtd); /* deletes partitions and mtd devices */
|
||||
nand_release(nand); /* deletes partitions and mtd devices */
|
||||
free_bch(doc->bch);
|
||||
kfree(nand);
|
||||
|
||||
@ -1389,7 +1389,7 @@ fail_unmap:
|
||||
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));
|
||||
free_bch(doc->bch);
|
||||
kfree(mtd_to_nand(doc->mtd));
|
||||
iounmap(doc->virtadr);
|
||||
|
@ -813,7 +813,7 @@ static int fsl_elbc_chip_remove(struct fsl_elbc_mtd *priv)
|
||||
struct fsl_elbc_fcm_ctrl *elbc_fcm_ctrl = priv->ctrl->nand;
|
||||
struct mtd_info *mtd = nand_to_mtd(&priv->chip);
|
||||
|
||||
nand_release(mtd);
|
||||
nand_release(&priv->chip);
|
||||
|
||||
kfree(mtd->name);
|
||||
|
||||
|
@ -927,7 +927,7 @@ static int fsl_ifc_chip_remove(struct fsl_ifc_mtd *priv)
|
||||
{
|
||||
struct mtd_info *mtd = nand_to_mtd(&priv->chip);
|
||||
|
||||
nand_release(mtd);
|
||||
nand_release(&priv->chip);
|
||||
|
||||
kfree(mtd->name);
|
||||
|
||||
|
@ -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++) {
|
||||
|
@ -1118,7 +1118,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);
|
||||
|
@ -199,7 +199,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);
|
||||
|
||||
if (gpio_is_valid(gpiomtd->plat.gpio_nwp))
|
||||
gpio_set_value(gpiomtd->plat.gpio_nwp, 0);
|
||||
|
@ -2135,7 +2135,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;
|
||||
|
@ -823,7 +823,7 @@ static int hisi_nfc_probe(struct platform_device *pdev)
|
||||
return 0;
|
||||
|
||||
err_mtd:
|
||||
nand_release(mtd);
|
||||
nand_release(chip);
|
||||
err_res:
|
||||
return ret;
|
||||
}
|
||||
@ -831,9 +831,8 @@ err_res:
|
||||
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;
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ static int jz_nand_probe(struct platform_device *pdev)
|
||||
return 0;
|
||||
|
||||
err_nand_release:
|
||||
nand_release(mtd);
|
||||
nand_release(chip);
|
||||
err_unclaim_banks:
|
||||
while (chipnr--) {
|
||||
unsigned char bank = nand->banks[chipnr];
|
||||
@ -500,7 +500,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);
|
||||
|
@ -293,7 +293,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;
|
||||
}
|
||||
|
||||
@ -308,7 +308,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);
|
||||
}
|
||||
}
|
||||
|
@ -805,7 +805,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
|
||||
if (!res)
|
||||
return res;
|
||||
|
||||
nand_release(mtd);
|
||||
nand_release(nand_chip);
|
||||
|
||||
err_exit4:
|
||||
free_irq(host->irq, host);
|
||||
@ -829,9 +829,8 @@ err_exit1:
|
||||
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);
|
||||
|
@ -935,7 +935,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev)
|
||||
if (!res)
|
||||
return res;
|
||||
|
||||
nand_release(mtd);
|
||||
nand_release(chip);
|
||||
|
||||
err_exit3:
|
||||
dma_release_channel(host->dma_chan);
|
||||
@ -954,9 +954,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 */
|
||||
|
@ -829,7 +829,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;
|
||||
|
@ -1357,7 +1357,7 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc,
|
||||
ret = mtd_device_parse_register(mtd, NULL, NULL, NULL, 0);
|
||||
if (ret) {
|
||||
dev_err(dev, "mtd parse partition error\n");
|
||||
nand_release(mtd);
|
||||
nand_release(nand);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1514,7 +1514,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);
|
||||
}
|
||||
|
||||
|
@ -1834,7 +1834,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);
|
||||
|
||||
|
@ -5046,12 +5046,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);
|
||||
|
||||
|
@ -2356,7 +2356,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:
|
||||
@ -2378,7 +2378,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 */
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -2306,7 +2306,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;
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,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;
|
||||
}
|
||||
|
||||
@ -201,9 +201,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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -99,7 +99,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);
|
||||
@ -114,7 +114,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);
|
||||
|
||||
|
@ -1915,7 +1915,7 @@ static int pxa3xx_nand_remove(struct platform_device *pdev)
|
||||
clk_disable_unprepare(info->clk);
|
||||
|
||||
for (cs = 0; cs < pdata->num_cs; cs++)
|
||||
nand_release(nand_to_mtd(&info->host[cs]->chip));
|
||||
nand_release(&info->host[cs]->chip);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -2760,7 +2760,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);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -784,7 +784,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1231,7 +1231,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;
|
||||
|
@ -192,7 +192,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);
|
||||
@ -210,7 +210,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);
|
||||
|
||||
|
@ -195,7 +195,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);
|
||||
@ -208,9 +208,8 @@ out:
|
||||
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);
|
||||
|
||||
|
@ -2125,7 +2125,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;
|
||||
}
|
||||
|
||||
@ -2164,7 +2164,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);
|
||||
}
|
||||
|
@ -619,7 +619,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;
|
||||
|
@ -448,7 +448,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);
|
||||
@ -459,7 +459,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;
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -794,7 +794,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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include <linux/mtd/flashchip.h>
|
||||
#include <linux/mtd/bbm.h>
|
||||
|
||||
struct nand_chip;
|
||||
struct mtd_info;
|
||||
struct nand_flash_dev;
|
||||
struct device_node;
|
||||
@ -37,7 +38,7 @@ int nand_scan_ident(struct mtd_info *mtd, int max_chips,
|
||||
int nand_scan_tail(struct mtd_info *mtd);
|
||||
|
||||
/* Unregister the MTD device and free resources held by the NAND device */
|
||||
void nand_release(struct mtd_info *mtd);
|
||||
void nand_release(struct nand_chip *chip);
|
||||
|
||||
/* Internal helper for board drivers which need to override command function */
|
||||
void nand_wait_ready(struct mtd_info *mtd);
|
||||
@ -227,9 +228,6 @@ enum nand_ecc_algo {
|
||||
#define NAND_CI_CELLTYPE_MSK 0x0C
|
||||
#define NAND_CI_CELLTYPE_SHIFT 2
|
||||
|
||||
/* Keep gcc happy */
|
||||
struct nand_chip;
|
||||
|
||||
/* ONFI features */
|
||||
#define ONFI_FEATURE_16_BIT_BUS (1 << 0)
|
||||
#define ONFI_FEATURE_EXT_PARAM_PAGE (1 << 7)
|
||||
|
Loading…
x
Reference in New Issue
Block a user