Re: [PATCH v2 12/25] mtd: nand: use the mtd instance embedded in struct nand_chip
Hi Boris, On Tue, Dec 01, 2015 at 12:03:09PM +0100, Boris Brezillon wrote: > struct nand_chip now embeds an mtd device. Patch all drivers to make use > of this mtd instance instead of using the instance embedded in their > private struct or dynamically allocated. > > Signed-off-by: Boris Brezillon> Cc: Julia Lawall > --- > Most of those changes were generated with the coccinelle script added > in commit c671312 "coccinelle: nand: detect and correct drivers embedding > an mtd_info object" > --- > drivers/mtd/nand/ams-delta.c | 13 ++-- > drivers/mtd/nand/atmel_nand.c | 13 ++-- > drivers/mtd/nand/au1550nd.c| 19 ++--- > drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h | 1 - > drivers/mtd/nand/bcm47xxnflash/main.c | 8 ++- > drivers/mtd/nand/bcm47xxnflash/ops_bcm4706.c | 2 +- > drivers/mtd/nand/bf5xx_nand.c | 12 ++-- > drivers/mtd/nand/brcmnand/brcmnand.c | 13 ++-- > drivers/mtd/nand/cafe_nand.c | 8 +-- > drivers/mtd/nand/cmx270_nand.c | 11 ++- > drivers/mtd/nand/cs553x_nand.c | 13 ++-- > drivers/mtd/nand/davinci_nand.c| 30 > drivers/mtd/nand/denali.c | 68 ++ > drivers/mtd/nand/denali.h | 1 - > drivers/mtd/nand/diskonchip.c | 11 ++- > drivers/mtd/nand/docg4.c | 16 ++--- > drivers/mtd/nand/fsl_elbc_nand.c | 26 --- > drivers/mtd/nand/fsl_ifc_nand.c| 28 > drivers/mtd/nand/fsl_upm.c | 28 > drivers/mtd/nand/fsmc_nand.c | 56 --- > drivers/mtd/nand/gpio.c| 20 +++--- > drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 2 +- > drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 20 +++--- > drivers/mtd/nand/gpmi-nand/gpmi-nand.h | 1 - > drivers/mtd/nand/hisi504_nand.c| 13 ++-- > drivers/mtd/nand/jz4740_nand.c | 9 ++- > drivers/mtd/nand/lpc32xx_mlc.c | 7 +- > drivers/mtd/nand/lpc32xx_slc.c | 7 +- > drivers/mtd/nand/mpc5121_nfc.c | 3 +- > drivers/mtd/nand/mxc_nand.c| 5 +- > drivers/mtd/nand/nandsim.c | 12 ++-- > drivers/mtd/nand/ndfc.c| 24 --- > drivers/mtd/nand/nuc900_nand.c | 24 +++ > drivers/mtd/nand/omap2.c | 98 > +++--- > drivers/mtd/nand/orion_nand.c | 4 +- > drivers/mtd/nand/pasemi_nand.c | 12 ++-- > drivers/mtd/nand/plat_nand.c | 15 ++-- > drivers/mtd/nand/pxa3xx_nand.c | 33 - > drivers/mtd/nand/r852.c| 34 - > drivers/mtd/nand/r852.h| 1 - > drivers/mtd/nand/s3c2410.c | 23 +++--- ^^ some errors in this one > drivers/mtd/nand/sh_flctl.c| 8 +-- > drivers/mtd/nand/sharpsl.c | 22 +++--- > drivers/mtd/nand/socrates_nand.c | 5 +- > drivers/mtd/nand/sunxi_nand.c | 13 ++-- > drivers/mtd/nand/tmio_nand.c | 10 +-- > drivers/mtd/nand/txx9ndfmc.c | 3 +- > drivers/mtd/nand/vf610_nfc.c | 8 ++- > include/linux/mtd/sh_flctl.h | 3 +- > 49 files changed, 426 insertions(+), 390 deletions(-) > [...] > diff --git a/drivers/mtd/nand/s3c2410.c b/drivers/mtd/nand/s3c2410.c > index e658b29..3f29734 100644 > --- a/drivers/mtd/nand/s3c2410.c > +++ b/drivers/mtd/nand/s3c2410.c > @@ -104,7 +104,6 @@ struct s3c2410_nand_info; > * @scan_res: The result from calling nand_scan_ident(). > */ > struct s3c2410_nand_mtd { > - struct mtd_info mtd; > struct nand_chipchip; > struct s3c2410_nand_set *set; > struct s3c2410_nand_info*info; > @@ -168,7 +167,8 @@ struct s3c2410_nand_info { > > static struct s3c2410_nand_mtd *s3c2410_nand_mtd_toours(struct mtd_info *mtd) > { > - return container_of(mtd, struct s3c2410_nand_mtd, mtd); > + return container_of(mtd_to_nand(mtd), struct s3c2410_nand_mtd, > + chip); > } > > static struct s3c2410_nand_info *s3c2410_nand_mtd_toinfo(struct mtd_info > *mtd) > @@ -745,7 +745,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(>mtd); > + nand_release(nand_to_mtd(>chip)); > } > } > > @@ -762,9 +762,11 @@ static int s3c2410_nand_add_partition(struct >
Re: [PATCH v2 12/25] mtd: nand: use the mtd instance embedded in struct nand_chip
On Tue, Dec 01, 2015 at 12:03:09PM +0100, Boris Brezillon wrote: > struct nand_chip now embeds an mtd device. Patch all drivers to make use > of this mtd instance instead of using the instance embedded in their > private struct or dynamically allocated. > > Signed-off-by: Boris Brezillon> Cc: Julia Lawall > --- > Most of those changes were generated with the coccinelle script added > in commit c671312 "coccinelle: nand: detect and correct drivers embedding > an mtd_info object" > --- > drivers/mtd/nand/ams-delta.c | 13 ++-- > drivers/mtd/nand/atmel_nand.c | 13 ++-- > drivers/mtd/nand/au1550nd.c| 19 ++--- > drivers/mtd/nand/bcm47xxnflash/bcm47xxnflash.h | 1 - > drivers/mtd/nand/bcm47xxnflash/main.c | 8 ++- > drivers/mtd/nand/bcm47xxnflash/ops_bcm4706.c | 2 +- > drivers/mtd/nand/bf5xx_nand.c | 12 ++-- > drivers/mtd/nand/brcmnand/brcmnand.c | 13 ++-- > drivers/mtd/nand/cafe_nand.c | 8 +-- > drivers/mtd/nand/cmx270_nand.c | 11 ++- > drivers/mtd/nand/cs553x_nand.c | 13 ++-- > drivers/mtd/nand/davinci_nand.c| 30 > drivers/mtd/nand/denali.c | 68 ++ > drivers/mtd/nand/denali.h | 1 - > drivers/mtd/nand/diskonchip.c | 11 ++- > drivers/mtd/nand/docg4.c | 16 ++--- ^^ some errors here too > drivers/mtd/nand/fsl_elbc_nand.c | 26 --- > drivers/mtd/nand/fsl_ifc_nand.c| 28 > drivers/mtd/nand/fsl_upm.c | 28 > drivers/mtd/nand/fsmc_nand.c | 56 --- > drivers/mtd/nand/gpio.c| 20 +++--- > drivers/mtd/nand/gpmi-nand/gpmi-lib.c | 2 +- > drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 20 +++--- > drivers/mtd/nand/gpmi-nand/gpmi-nand.h | 1 - > drivers/mtd/nand/hisi504_nand.c| 13 ++-- > drivers/mtd/nand/jz4740_nand.c | 9 ++- > drivers/mtd/nand/lpc32xx_mlc.c | 7 +- > drivers/mtd/nand/lpc32xx_slc.c | 7 +- > drivers/mtd/nand/mpc5121_nfc.c | 3 +- > drivers/mtd/nand/mxc_nand.c| 5 +- > drivers/mtd/nand/nandsim.c | 12 ++-- > drivers/mtd/nand/ndfc.c| 24 --- > drivers/mtd/nand/nuc900_nand.c | 24 +++ > drivers/mtd/nand/omap2.c | 98 > +++--- > drivers/mtd/nand/orion_nand.c | 4 +- > drivers/mtd/nand/pasemi_nand.c | 12 ++-- > drivers/mtd/nand/plat_nand.c | 15 ++-- > drivers/mtd/nand/pxa3xx_nand.c | 33 - > drivers/mtd/nand/r852.c| 34 - > drivers/mtd/nand/r852.h| 1 - > drivers/mtd/nand/s3c2410.c | 23 +++--- > drivers/mtd/nand/sh_flctl.c| 8 +-- > drivers/mtd/nand/sharpsl.c | 22 +++--- > drivers/mtd/nand/socrates_nand.c | 5 +- > drivers/mtd/nand/sunxi_nand.c | 13 ++-- > drivers/mtd/nand/tmio_nand.c | 10 +-- > drivers/mtd/nand/txx9ndfmc.c | 3 +- > drivers/mtd/nand/vf610_nfc.c | 8 ++- > include/linux/mtd/sh_flctl.h | 3 +- > 49 files changed, 426 insertions(+), 390 deletions(-) > ... > diff --git a/drivers/mtd/nand/docg4.c b/drivers/mtd/nand/docg4.c > index da93d7f..f8d5e27 100644 > --- a/drivers/mtd/nand/docg4.c > +++ b/drivers/mtd/nand/docg4.c > @@ -1305,14 +1305,13 @@ static int __init probe_docg4(struct platform_device > *pdev) > return -EIO; > } > > - len = sizeof(struct mtd_info) + sizeof(struct nand_chip) + > - sizeof(struct docg4_priv); > - mtd = kzalloc(len, GFP_KERNEL); > - if (mtd == NULL) { > + len = sizeof(struct nand_chip) + sizeof(struct docg4_priv); > + nand = kzalloc(len, GFP_KERNEL); > + if (nand == NULL) { > retval = -ENOMEM; > goto fail; > } > - nand = (struct nand_chip *) (mtd + 1); > + mtd = nand_to_mtd(nand); > doc = (struct docg4_priv *) (nand + 1); > mtd->priv = nand; > nand->priv = doc; > @@ -1355,13 +1354,12 @@ static int __init probe_docg4(struct platform_device > *pdev) > > fail: > iounmap(virtadr); > - if (mtd) { > + if (nand) { > /* re-declarations avoid compiler warning */ > - struct nand_chip *nand = mtd_to_nand(mtd); > struct docg4_priv *doc = nand->priv; > nand_release(mtd); /* deletes partitions and mtd devices */ drivers/mtd/nand/docg4.c: In function ‘probe_docg4’:
Re: [PATCH v2 12/25] mtd: nand: use the mtd instance embedded in struct nand_chip
Hi Boris, [auto build test ERROR on next-20151127] [cannot apply to mtd/master v4.4-rc3 v4.4-rc2 v4.4-rc1 v4.4-rc3] url: https://github.com/0day-ci/linux/commits/Boris-Brezillon/mtd-nand-refactor-the-NAND-subsystem-part-1/20151201-190822 config: arm-imx_v6_v7_defconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree make.cross ARCH=arm All errors (new ones prefixed by >>): drivers/mtd/nand/gpmi-nand/gpmi-nand.c: In function 'set_geometry_by_ecc_info': >> drivers/mtd/nand/gpmi-nand/gpmi-nand.c:142:39: error: 'mtd' undeclared >> (first use in this function) struct nand_chip *chip = mtd_to_nand(mtd); ^ drivers/mtd/nand/gpmi-nand/gpmi-nand.c:142:39: note: each undeclared identifier is reported only once for each function it appears in drivers/mtd/nand/gpmi-nand/gpmi-nand.c: In function 'gpmi_init_last': drivers/mtd/nand/gpmi-nand/gpmi-nand.c:1840:39: error: 'mtd' undeclared (first use in this function) struct nand_chip *chip = mtd_to_nand(mtd); ^ drivers/mtd/nand/gpmi-nand/gpmi-nand.c:1841:19: warning: unused variable 'mtd' [-Wunused-variable] struct mtd_info *mtd = nand_to_mtd(chip); ^ vim +/mtd +142 drivers/mtd/nand/gpmi-nand/gpmi-nand.c 2febcdf84 Huang Shijie2013-05-17 136 * 2febcdf84 Huang Shijie2013-05-17 137 * We may have available oob space in this case. 2febcdf84 Huang Shijie2013-05-17 138 */ 2febcdf84 Huang Shijie2013-05-17 139 static bool set_geometry_by_ecc_info(struct gpmi_nand_data *this) 2febcdf84 Huang Shijie2013-05-17 140 { 2febcdf84 Huang Shijie2013-05-17 141 struct bch_geometry *geo = >bch_geometry; 6bdedcfa5 Boris Brezillon 2015-12-01 @142 struct nand_chip *chip = mtd_to_nand(mtd); 4864cfd67 Boris Brezillon 2015-12-01 143 struct mtd_info *mtd = nand_to_mtd(chip); 2febcdf84 Huang Shijie2013-05-17 144 struct nand_oobfree *of = gpmi_hw_ecclayout.oobfree; 2febcdf84 Huang Shijie2013-05-17 145 unsigned int block_mark_bit_offset; :: The code at line 142 was first introduced by commit :: 6bdedcfa57b52f471682054a599855677b1b132c mtd: nand: make use of mtd_to_nand() in NAND drivers :: TO: Boris Brezillon:: CC: 0day robot --- 0-DAY kernel test infrastructureOpen Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation .config.gz Description: Binary data