From patchwork Sun Nov 1 22:32:37 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Boris Brezillon X-Patchwork-Id: 538824 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2001:1868:205::9]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id BC5AC141302 for ; Mon, 2 Nov 2015 09:35:45 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Zt1Bd-000770-23; Sun, 01 Nov 2015 22:33:17 +0000 Received: from down.free-electrons.com ([37.187.137.238] helo=mail.free-electrons.com) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1Zt1BZ-00076H-Ml for linux-mtd@lists.infradead.org; Sun, 01 Nov 2015 22:33:15 +0000 Received: by mail.free-electrons.com (Postfix, from userid 110) id 8C8B9B4E; Sun, 1 Nov 2015 23:32:50 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.free-electrons.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT shortcircuit=ham autolearn=disabled version=3.4.0 Received: from bbrezillon (unknown [88.188.80.5]) by mail.free-electrons.com (Postfix) with ESMTPSA id 9228C2C6; Sun, 1 Nov 2015 23:32:49 +0100 (CET) Date: Sun, 1 Nov 2015 23:32:37 +0100 From: Boris Brezillon To: Brian Norris Subject: Re: [PATCH v2 06/11] mtd: nand: drop unnecessary partition parser data Message-ID: <20151101233237.21155d9e@bbrezillon> In-Reply-To: <1446262410-45754-7-git-send-email-computersforpeace@gmail.com> References: <1446262410-45754-1-git-send-email-computersforpeace@gmail.com> <1446262410-45754-7-git-send-email-computersforpeace@gmail.com> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.27; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20151101_143314_072771_52F69086 X-CRM114-Status: GOOD ( 23.88 ) X-Spam-Score: -2.6 (--) X-Spam-Report: SpamAssassin version 3.4.0 on bombadil.infradead.org summary: Content analysis details: (-2.6 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [37.187.137.238 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -0.0 T_RP_MATCHES_RCVD Envelope sender domain matches handover relay domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Marek Vasut , linux-kernel@vger.kernel.org, Josh Wu , Kyungmin Park , linux-mtd@lists.infradead.org, Ezequiel Garcia , Scott Wood , Robert Jarzmik , Han Xu Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org On Fri, 30 Oct 2015 20:33:25 -0700 Brian Norris wrote: > All of these drivers set up a parser data struct just to communicate DT > partition data. This field has been deprecated and is instead supported > by telling nand_scan_ident() about the 'flash_node'. > > This patch: > * sets chip->flash_node for those drivers that didn't already (but used > OF partitioning) > * drops the parser data > * switches to the simpler mtd_device_register() where possible, now > that we've eliminated one of the auxiliary parameters > > Now that we've assigned chip->flash_node for these drivers, we can > probably rely on nand_dt_init() to do more of the DT parsing for us, but > for now, I don't want to fiddle with each of these drivers. The parsing > is done in duplicate for now on some drivers. I don't think this should > break things. (Famous last words.) > > Signed-off-by: Brian Norris > Acked-by: Boris Brezillon > --- > v2: fix compile errors, use new helpers to set the DT node > > drivers/mtd/nand/atmel_nand.c | 7 +++---- > drivers/mtd/nand/brcmnand/brcmnand.c | 3 +-- > drivers/mtd/nand/davinci_nand.c | 10 +++------- > drivers/mtd/nand/fsl_elbc_nand.c | 5 ++--- > drivers/mtd/nand/fsl_ifc_nand.c | 5 ++--- > drivers/mtd/nand/fsl_upm.c | 5 ++--- > drivers/mtd/nand/fsmc_nand.c | 7 +++---- > drivers/mtd/nand/gpio.c | 8 +++----- > drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 5 ++--- > drivers/mtd/nand/hisi504_nand.c | 5 ++--- > drivers/mtd/nand/lpc32xx_mlc.c | 7 +++---- > drivers/mtd/nand/lpc32xx_slc.c | 7 +++---- > drivers/mtd/nand/mpc5121_nfc.c | 5 ++--- > drivers/mtd/nand/mxc_nand.c | 5 ++--- > drivers/mtd/nand/ndfc.c | 5 ++--- > drivers/mtd/nand/omap2.c | 6 ++---- > drivers/mtd/nand/orion_nand.c | 6 ++---- > drivers/mtd/nand/plat_nand.c | 5 ++--- > drivers/mtd/nand/pxa3xx_nand.c | 10 +++++----- > drivers/mtd/nand/sh_flctl.c | 6 ++---- > drivers/mtd/nand/socrates_nand.c | 5 ++--- > drivers/mtd/nand/sunxi_nand.c | 4 +--- > drivers/mtd/nand/vf610_nfc.c | 6 +----- > drivers/staging/mt29f_spinand/mt29f_spinand.c | 5 ++--- > 24 files changed, 54 insertions(+), 88 deletions(-) > > diff --git a/drivers/mtd/nand/atmel_nand.c b/drivers/mtd/nand/atmel_nand.c > index 583cdd9bb971..6ecc1c1ab437 100644 > --- a/drivers/mtd/nand/atmel_nand.c > +++ b/drivers/mtd/nand/atmel_nand.c > @@ -2093,7 +2093,6 @@ static int atmel_nand_probe(struct platform_device *pdev) > struct mtd_info *mtd; > struct nand_chip *nand_chip; > struct resource *mem; > - struct mtd_part_parser_data ppdata = {}; > int res, irq; > > /* Allocate memory for the device structure (and zero it) */ > @@ -2117,6 +2116,7 @@ static int atmel_nand_probe(struct platform_device *pdev) > nand_chip = &host->nand_chip; > host->dev = &pdev->dev; > if (IS_ENABLED(CONFIG_OF) && pdev->dev.of_node) { > + nand_set_flash_node(nand_chip, pdev->dev.of_node); > /* Only when CONFIG_OF is enabled of_node can be parsed */ > res = atmel_of_init_port(host, pdev->dev.of_node); > if (res) > @@ -2259,9 +2259,8 @@ static int atmel_nand_probe(struct platform_device *pdev) > } > > mtd->name = "atmel_nand"; > - ppdata.of_node = pdev->dev.of_node; > - res = mtd_device_parse_register(mtd, NULL, &ppdata, > - host->board.parts, host->board.num_parts); > + res = mtd_device_register(mtd, host->board.parts, > + host->board.num_parts); > if (!res) > return res; > > diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c > index 7bd4102fde42..a37659de025c 100644 > --- a/drivers/mtd/nand/brcmnand/brcmnand.c > +++ b/drivers/mtd/nand/brcmnand/brcmnand.c > @@ -1914,7 +1914,6 @@ static int brcmnand_init_cs(struct brcmnand_host *host) > struct nand_chip *chip; > int ret; > u16 cfg_offs; > - struct mtd_part_parser_data ppdata = { .of_node = dn }; > > ret = of_property_read_u32(dn, "reg", &host->cs); > if (ret) { > @@ -1993,7 +1992,7 @@ static int brcmnand_init_cs(struct brcmnand_host *host) > if (nand_scan_tail(mtd)) > return -ENXIO; > > - return mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0); > + return mtd_device_register(mtd, NULL, 0); > } > > static void brcmnand_save_restore_cs_config(struct brcmnand_host *host, > diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c > index c72313d66cf6..8e351af31e53 100644 > --- a/drivers/mtd/nand/davinci_nand.c > +++ b/drivers/mtd/nand/davinci_nand.c > @@ -684,6 +684,7 @@ static int nand_davinci_probe(struct platform_device *pdev) > > info->mtd.priv = &info->chip; > info->mtd.dev.parent = &pdev->dev; > + nand_set_flash_node(&info->chip, pdev->dev.of_node); > > info->chip.IO_ADDR_R = vaddr; > info->chip.IO_ADDR_W = vaddr; > @@ -839,13 +840,8 @@ syndrome_done: > if (pdata->parts) > ret = mtd_device_parse_register(&info->mtd, NULL, NULL, > pdata->parts, pdata->nr_parts); > - else { > - struct mtd_part_parser_data ppdata; > - > - ppdata.of_node = pdev->dev.of_node; > - ret = mtd_device_parse_register(&info->mtd, NULL, &ppdata, > - NULL, 0); > - } > + else > + ret = mtd_device_register(&info->mtd, NULL, 0); > if (ret < 0) > goto err; > > diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c > index dcb1f7f4873f..850546dc98c8 100644 > --- a/drivers/mtd/nand/fsl_elbc_nand.c > +++ b/drivers/mtd/nand/fsl_elbc_nand.c > @@ -748,6 +748,7 @@ static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv) > /* Fill in fsl_elbc_mtd structure */ > priv->mtd.priv = chip; > priv->mtd.dev.parent = priv->dev; > + chip->flash_node = priv->dev->of_node; Shouldn't we use the nand_set_flash_node() helper here? Here is a diff replacing all 'chip->flash_node =' occurrences by nand_set_flash_node(): ---->8---- diff --git a/drivers/mtd/nand/fsl_elbc_nand.c b/drivers/mtd/nand/fsl_elbc_nand.c index 850546d..bd6d493 100644 --- a/drivers/mtd/nand/fsl_elbc_nand.c +++ b/drivers/mtd/nand/fsl_elbc_nand.c @@ -748,7 +748,7 @@ static int fsl_elbc_chip_init(struct fsl_elbc_mtd *priv) /* Fill in fsl_elbc_mtd structure */ priv->mtd.priv = chip; priv->mtd.dev.parent = priv->dev; - chip->flash_node = priv->dev->of_node; + nand_set_flash_node(chip, priv->dev->of_node); /* set timeout to maximum */ priv->fmr = 15 << FMR_CWTO_SHIFT; diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c index 8ae2a23..f260831 100644 --- a/drivers/mtd/nand/fsl_ifc_nand.c +++ b/drivers/mtd/nand/fsl_ifc_nand.c @@ -883,7 +883,7 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv) /* Fill in fsl_ifc_mtd structure */ priv->mtd.priv = chip; priv->mtd.dev.parent = priv->dev; - chip->flash_node = priv->dev->of_node; + nand_set_flash_node(chip, priv->dev->of_node); /* fill in nand_chip structure */ /* set up function call table */ diff --git a/drivers/mtd/nand/fsl_upm.c b/drivers/mtd/nand/fsl_upm.c index ffe416c..b3f4a01 100644 --- a/drivers/mtd/nand/fsl_upm.c +++ b/drivers/mtd/nand/fsl_upm.c @@ -181,7 +181,7 @@ static int fun_chip_init(struct fsl_upm_nand *fun, if (!flash_np) return -ENODEV; - fun->chip.flash_node = flash_np; + nand_set_flash_node(&fun->chip, flash_np); fun->mtd.name = kasprintf(GFP_KERNEL, "0x%llx.%s", (u64)io_res->start, flash_np->name); if (!fun->mtd.name) { diff --git a/drivers/mtd/nand/gpio.c b/drivers/mtd/nand/gpio.c index 289a48c..d57a07a 100644 --- a/drivers/mtd/nand/gpio.c +++ b/drivers/mtd/nand/gpio.c @@ -267,7 +267,7 @@ static int gpio_nand_probe(struct platform_device *pdev) chip->dev_ready = gpio_nand_devready; } - chip->flash_node = pdev->dev.of_node; + nand_set_flash_node(chip, pdev->dev.of_node); chip->IO_ADDR_W = chip->IO_ADDR_R; chip->ecc.mode = NAND_ECC_SOFT; chip->options = gpiomtd->plat.options; diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c index 90e49cc..5a9b696 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -1900,7 +1900,7 @@ static int gpmi_nand_init(struct gpmi_nand_data *this) /* init the nand_chip{}, we don't support a 16-bit NAND Flash bus. */ chip->priv = this; - chip->flash_node = this->pdev->dev.of_node; + nand_set_flash_node(chip, this->pdev->dev.of_node); chip->select_chip = gpmi_select_chip; chip->cmd_ctrl = gpmi_cmd_ctrl; chip->dev_ready = gpmi_dev_ready; diff --git a/drivers/mtd/nand/lpc32xx_mlc.c b/drivers/mtd/nand/lpc32xx_mlc.c index 3ccad8c..57c4b71 100644 --- a/drivers/mtd/nand/lpc32xx_mlc.c +++ b/drivers/mtd/nand/lpc32xx_mlc.c @@ -681,7 +681,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev) host->pdata = dev_get_platdata(&pdev->dev); nand_chip->priv = host; /* link the private data structures */ - nand_chip->flash_node = pdev->dev.of_node; + nand_set_flash_node(nand_chip, pdev->dev.of_node); mtd->priv = nand_chip; mtd->dev.parent = &pdev->dev; diff --git a/drivers/mtd/nand/lpc32xx_slc.c b/drivers/mtd/nand/lpc32xx_slc.c index 9cb8206..277626e 100644 --- a/drivers/mtd/nand/lpc32xx_slc.c +++ b/drivers/mtd/nand/lpc32xx_slc.c @@ -802,7 +802,7 @@ static int lpc32xx_nand_probe(struct platform_device *pdev) mtd = &host->mtd; chip = &host->nand_chip; chip->priv = host; - chip->flash_node = pdev->dev.of_node; + nand_set_flash_node(chip, pdev->dev.of_node); mtd->priv = chip; mtd->owner = THIS_MODULE; mtd->dev.parent = &pdev->dev; diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c index 0fc4f3a..7922d31 100644 --- a/drivers/mtd/nand/mxc_nand.c +++ b/drivers/mtd/nand/mxc_nand.c @@ -1524,7 +1524,7 @@ static int mxcnd_probe(struct platform_device *pdev) this->chip_delay = 5; this->priv = host; - this->flash_node = pdev->dev.of_node, + nand_set_flash_node(this, pdev->dev.of_node), this->dev_ready = mxc_nand_dev_ready; this->cmdfunc = mxc_nand_command; this->read_byte = mxc_nand_read_byte; diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c index 33718dc..e307576 100644 --- a/drivers/mtd/nand/omap2.c +++ b/drivers/mtd/nand/omap2.c @@ -1687,7 +1687,7 @@ static int omap_nand_probe(struct platform_device *pdev) mtd->dev.parent = &pdev->dev; nand_chip = &info->nand; nand_chip->ecc.priv = NULL; - nand_chip->flash_node = pdata->of_node; + nand_set_flash_node(nand_chip, pdata->of_node); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); nand_chip->IO_ADDR_R = devm_ioremap_resource(&pdev->dev, res); diff --git a/drivers/mtd/nand/orion_nand.c b/drivers/mtd/nand/orion_nand.c index 0728ddc..5c21416 100644 --- a/drivers/mtd/nand/orion_nand.c +++ b/drivers/mtd/nand/orion_nand.c @@ -126,7 +126,7 @@ static int __init orion_nand_probe(struct platform_device *pdev) mtd->dev.parent = &pdev->dev; nc->priv = board; - nc->flash_node = pdev->dev.of_node; + nand_set_flash_node(nc, pdev->dev.of_node); nc->IO_ADDR_R = nc->IO_ADDR_W = io_base; nc->cmd_ctrl = orion_nand_cmd_ctrl; nc->read_buf = orion_nand_read_buf; diff --git a/drivers/mtd/nand/plat_nand.c b/drivers/mtd/nand/plat_nand.c index 034becc..06ac6c6 100644 --- a/drivers/mtd/nand/plat_nand.c +++ b/drivers/mtd/nand/plat_nand.c @@ -57,7 +57,7 @@ static int plat_nand_probe(struct platform_device *pdev) return PTR_ERR(data->io_base); data->chip.priv = &data; - data->chip.flash_node = pdev->dev.of_node; + nand_set_flash_node(&data->chip, pdev->dev.of_node); data->mtd.priv = &data->chip; data->mtd.dev.parent = &pdev->dev; diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c index ec2ade9..57dc525 100644 --- a/drivers/mtd/nand/sh_flctl.c +++ b/drivers/mtd/nand/sh_flctl.c @@ -1122,7 +1122,7 @@ static int flctl_probe(struct platform_device *pdev) platform_set_drvdata(pdev, flctl); flctl_mtd = &flctl->mtd; nand = &flctl->chip; - nand->flash_node = pdev->dev.of_node; + nand_set_flash_node(nand, pdev->dev.of_node); flctl_mtd->priv = nand; flctl_mtd->dev.parent = &pdev->dev; flctl->pdev = pdev; diff --git a/drivers/mtd/nand/socrates_nand.c b/drivers/mtd/nand/socrates_nand.c index f935985..bde4043 100644 --- a/drivers/mtd/nand/socrates_nand.c +++ b/drivers/mtd/nand/socrates_nand.c @@ -164,7 +164,7 @@ static int socrates_nand_probe(struct platform_device *ofdev) host->dev = &ofdev->dev; nand_chip->priv = host; /* link the private data structures */ - nand_chip->flash_node = ofdev->dev.of_node; + nand_set_flash_node(nand_chip, ofdev->dev.of_node); mtd->priv = nand_chip; mtd->name = "socrates_nand"; mtd->dev.parent = &ofdev->dev; diff --git a/drivers/staging/mt29f_spinand/mt29f_spinand.c b/drivers/staging/mt29f_spinand/mt29f_spinand.c index bd9b5b0..49807de 100644 --- a/drivers/staging/mt29f_spinand/mt29f_spinand.c +++ b/drivers/staging/mt29f_spinand/mt29f_spinand.c @@ -896,7 +896,7 @@ static int spinand_probe(struct spi_device *spi_nand) pr_info("%s: disable ecc failed!\n", __func__); #endif - chip->flash_node = spi_nand->dev.of_node; + nand_set_flash_node(chip, spi_nand->dev.of_node); chip->priv = info; chip->read_buf = spinand_read_buf; chip->write_buf = spinand_write_buf;