From: Boris BREZILLON Date: Thu, 10 Dec 2015 08:00:06 +0000 (+0100) Subject: mtd: nand: gpio: use the mtd instance embedded in struct nand_chip X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=dc2948ca66e4133ccac1948dd7631072e84e996d;p=linux-beck.git mtd: nand: gpio: use the mtd instance embedded in struct nand_chip struct nand_chip now embeds an mtd device. Make use of this mtd instance. Signed-off-by: Boris Brezillon Signed-off-by: Brian Norris --- diff --git a/drivers/mtd/nand/gpio.c b/drivers/mtd/nand/gpio.c index d57a07a597be..99dd74c11038 100644 --- a/drivers/mtd/nand/gpio.c +++ b/drivers/mtd/nand/gpio.c @@ -35,12 +35,14 @@ struct gpiomtd { void __iomem *io_sync; - struct mtd_info mtd_info; struct nand_chip nand_chip; struct gpio_nand_platdata plat; }; -#define gpio_nand_getpriv(x) container_of(x, struct gpiomtd, mtd_info) +static inline struct gpiomtd *gpio_nand_getpriv(struct mtd_info *mtd) +{ + return container_of(mtd_to_nand(mtd), struct gpiomtd, nand_chip); +} #ifdef CONFIG_ARM @@ -195,7 +197,7 @@ static int gpio_nand_remove(struct platform_device *pdev) { struct gpiomtd *gpiomtd = platform_get_drvdata(pdev); - nand_release(&gpiomtd->mtd_info); + nand_release(nand_to_mtd(&gpiomtd->nand_chip)); if (gpio_is_valid(gpiomtd->plat.gpio_nwp)) gpio_set_value(gpiomtd->plat.gpio_nwp, 0); @@ -208,6 +210,7 @@ static int gpio_nand_probe(struct platform_device *pdev) { struct gpiomtd *gpiomtd; struct nand_chip *chip; + struct mtd_info *mtd; struct resource *res; int ret = 0; @@ -274,24 +277,24 @@ static int gpio_nand_probe(struct platform_device *pdev) chip->chip_delay = gpiomtd->plat.chip_delay; chip->cmd_ctrl = gpio_nand_cmd_ctrl; - gpiomtd->mtd_info.priv = chip; - gpiomtd->mtd_info.dev.parent = &pdev->dev; + mtd = nand_to_mtd(chip); + mtd->priv = chip; + mtd->dev.parent = &pdev->dev; platform_set_drvdata(pdev, gpiomtd); if (gpio_is_valid(gpiomtd->plat.gpio_nwp)) gpio_direction_output(gpiomtd->plat.gpio_nwp, 1); - if (nand_scan(&gpiomtd->mtd_info, 1)) { + if (nand_scan(mtd, 1)) { ret = -ENXIO; goto err_wp; } if (gpiomtd->plat.adjust_parts) - gpiomtd->plat.adjust_parts(&gpiomtd->plat, - gpiomtd->mtd_info.size); + gpiomtd->plat.adjust_parts(&gpiomtd->plat, mtd->size); - ret = mtd_device_register(&gpiomtd->mtd_info, gpiomtd->plat.parts, + ret = mtd_device_register(mtd, gpiomtd->plat.parts, gpiomtd->plat.num_parts); if (!ret) return 0;