aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/bcm47xxnflash
diff options
context:
space:
mode:
authorBrian Norris <computersforpeace@gmail.com>2015-12-08 17:04:59 -0800
committerBrian Norris <computersforpeace@gmail.com>2015-12-14 10:11:09 -0800
commit665d2c2848f14c0c2a2e89192bde9073c4d352f7 (patch)
treee1189b714c9def12adfb5d6dc4540549583a4b55 /drivers/mtd/nand/bcm47xxnflash
parentmtd: nand: denali: add missing nand_release() call in denali_remove() (diff)
downloadlinux-dev-665d2c2848f14c0c2a2e89192bde9073c4d352f7.tar.xz
linux-dev-665d2c2848f14c0c2a2e89192bde9073c4d352f7.zip
mtd: bcm47xxnflash: really unregister NAND on device removal
The field bcma_nflash::mtd is never set to be non-zero anywhere, but we test for it in the removal path. So the MTD is never unregistered. Also, we should use nand_release(), not mtd_device_unregister(). Finally, we don't need to use the 'platdata' for stashing/retrieving our *driver* data -- that's what *_{get,set}_drvdata() are for. So, kill off bcm_nflash::mtd, and stash the struct bcm47xxnflash in drvdata instead. Also move the forward declaration of mtd_info up a bit, since struct bcma_sflash should be using it. Caught while inspecting other changes being made to this driver. Compile tested only. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Cc: "Rafał Miłecki" <zajec5@gmail.com> Cc: linux-wireless@vger.kernel.org Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Diffstat (limited to 'drivers/mtd/nand/bcm47xxnflash')
-rw-r--r--drivers/mtd/nand/bcm47xxnflash/main.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/mtd/nand/bcm47xxnflash/main.c b/drivers/mtd/nand/bcm47xxnflash/main.c
index 9ba0c0f2cd9b..0b3acc439181 100644
--- a/drivers/mtd/nand/bcm47xxnflash/main.c
+++ b/drivers/mtd/nand/bcm47xxnflash/main.c
@@ -49,6 +49,8 @@ static int bcm47xxnflash_probe(struct platform_device *pdev)
return err;
}
+ platform_set_drvdata(pdev, b47n);
+
err = mtd_device_parse_register(&b47n->mtd, probes, NULL, NULL, 0);
if (err) {
pr_err("Failed to register MTD device: %d\n", err);
@@ -60,10 +62,9 @@ static int bcm47xxnflash_probe(struct platform_device *pdev)
static int bcm47xxnflash_remove(struct platform_device *pdev)
{
- struct bcma_nflash *nflash = dev_get_platdata(&pdev->dev);
+ struct bcm47xxnflash *nflash = platform_get_drvdata(pdev);
- if (nflash->mtd)
- mtd_device_unregister(nflash->mtd);
+ nand_release(&nflash->mtd);
return 0;
}