linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/11] mtd: migrate 'of_node' handling to core, not in mtd_part_parser_data
@ 2015-10-31  3:33 Brian Norris
  2015-10-31  3:33 ` [PATCH v2 01/11] mtd: add get/set of_node/flash_node helpers Brian Norris
                   ` (13 more replies)
  0 siblings, 14 replies; 32+ messages in thread
From: Brian Norris @ 2015-10-31  3:33 UTC (permalink / raw)
  To: linux-mtd
  Cc: linux-kernel, Brian Norris, Boris Brezillon, Ezequiel Garcia,
	Marek Vasut, Scott Wood, Josh Wu, Robert Jarzmik, Kyungmin Park,
	Han Xu

Hi,

I noticed that, for MTD drivers that want to support DT partition parsing
(essentially all recent ones), it's a bit awkward to set the tell MTD which DT
node to use. I also noticed that this info is duplicated in a few places;
namely, some sub-subsystems (like SPI NOR and NAND) need their own field to
track the DT node, so let's have the propagate the 'MTD' DT node down for us.

Besides simplifying the boilerplate throughout MTD, this series also has the
side effect of producing 'of_node' symlinks in sysfs. e.g.:

  # ls -al /sys/class/mtd/mtd0/of_node
  lrwxrwxrwx 1 root root 0 Oct 26 19:17 /sys/class/mtd/mtd0/of_node -> ../../../../firmware/devicetree/base/spi@ff130000/flash@0

For NAND, this potentially has some other bigger initial side effects, since
nand_dt_init() handles a bit more automagically for drivers that defined their
->flash_node. But these drivers should probably convert anyway. So, please test
your favorite driver!

v1 -> v2:
 * add helper functions for getting/setting the MTD/SPI-NOR/NAND DT node
 * fix some build errors
 * drop spi_nor's flash_node field (just use the MTD of_node)

Regards,
Brian

Brian Norris (11):
  mtd: add get/set of_node/flash_node helpers
  mtd: ofpart: grab device tree node directly from master device node
  mtd: {nand,spi-nor}: assign MTD of_node
  mtd: nand: convert to nand_set_flash_node()
  mtd: spi-nor: convert to spi_nor_{get,set}_flash_node()
  mtd: nand: drop unnecessary partition parser data
  mtd: spi-nor: drop unnecessary partition parser data
  mtd: spi-nor: drop flash_node field
  mtd: drop unnecessary partition parser data
  mtd: ofpart: drop 'of_node' partition parser data
  mtd: physmap_of: assign parent for the concatenated MTD

 drivers/mtd/devices/m25p80.c                  | 10 +++-------
 drivers/mtd/devices/mtd_dataflash.c           |  5 ++---
 drivers/mtd/devices/spear_smi.c               |  6 ++----
 drivers/mtd/devices/st_spi_fsm.c              |  5 ++---
 drivers/mtd/maps/lantiq-flash.c               |  5 ++---
 drivers/mtd/maps/physmap_of.c                 |  6 +++---
 drivers/mtd/nand/atmel_nand.c                 |  7 +++----
 drivers/mtd/nand/brcmnand/brcmnand.c          |  5 ++---
 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                  |  9 ++++-----
 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/nand_base.c                  |  3 +++
 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                 |  6 ++----
 drivers/mtd/nand/vf610_nfc.c                  |  8 ++------
 drivers/mtd/ofpart.c                          | 12 ++++--------
 drivers/mtd/onenand/omap2.c                   |  8 +++-----
 drivers/mtd/spi-nor/fsl-quadspi.c             |  6 ++----
 drivers/mtd/spi-nor/nxp-spifi.c               |  6 ++----
 drivers/mtd/spi-nor/spi-nor.c                 |  2 +-
 drivers/staging/mt29f_spinand/mt29f_spinand.c |  5 ++---
 include/linux/mtd/mtd.h                       | 11 +++++++++++
 include/linux/mtd/nand.h                      | 11 +++++++++++
 include/linux/mtd/partitions.h                |  2 --
 include/linux/mtd/spi-nor.h                   | 13 +++++++++++--
 40 files changed, 120 insertions(+), 141 deletions(-)

-- 
2.6.0.rc2.230.g3dd15c0


^ permalink raw reply	[flat|nested] 32+ messages in thread
* [PATCH v2 12/11] mtd: nand: convert to nand_get_flash_node()
@ 2015-11-01 23:02 Boris Brezillon
  2015-11-01 23:05 ` Boris Brezillon
  0 siblings, 1 reply; 32+ messages in thread
From: Boris Brezillon @ 2015-11-01 23:02 UTC (permalink / raw)
  To: David Woodhouse, Brian Norris, linux-mtd
  Cc: Ezequiel Garcia, Marek Vasut, Scott Wood, Josh Wu,
	Robert Jarzmik, Kyungmin Park, Han Xu, Stefan Agner,
	linux-kernel, Boris Brezillon

Used semantic patch with 'make coccicheck MODE=patch COCCI=script.cocci':

---8<----
virtual patch

@@
struct nand_chip c;
struct nand_chip *cp;
@@
(
-(cp)->flash_node
+nand_get_flash_node(cp)
|
-(c).flash_node
+nand_get_flash_node(&c)
)
---8<----

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
---
Hi Brian,

I think this patch could be part of your series too.

Best Regards,

Boris

 drivers/mtd/nand/brcmnand/brcmnand.c | 2 +-
 drivers/mtd/nand/nand_base.c         | 6 +++---
 drivers/mtd/nand/vf610_nfc.c         | 6 +++---
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/mtd/nand/brcmnand/brcmnand.c b/drivers/mtd/nand/brcmnand/brcmnand.c
index a37659d..2a437c7 100644
--- a/drivers/mtd/nand/brcmnand/brcmnand.c
+++ b/drivers/mtd/nand/brcmnand/brcmnand.c
@@ -1816,7 +1816,7 @@ static int brcmnand_setup_dev(struct brcmnand_host *host)
 
 	memset(cfg, 0, sizeof(*cfg));
 
-	ret = of_property_read_u32(chip->flash_node,
+	ret = of_property_read_u32(nand_get_flash_node(chip),
 				   "brcm,nand-oob-sector-size",
 				   &oob_sector);
 	if (ret) {
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 939ab3d..4ac4efe 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -3989,11 +3989,11 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips,
 	struct nand_flash_dev *type;
 	int ret;
 
-	if (chip->flash_node) {
+	if (nand_get_flash_node(chip)) {
 		/* MTD can automatically handle DT partitions, etc. */
-		mtd_set_of_node(mtd, chip->flash_node);
+		mtd_set_of_node(mtd, nand_get_flash_node(chip));
 
-		ret = nand_dt_init(mtd, chip, chip->flash_node);
+		ret = nand_dt_init(mtd, chip, nand_get_flash_node(chip));
 		if (ret)
 			return ret;
 	}
diff --git a/drivers/mtd/nand/vf610_nfc.c b/drivers/mtd/nand/vf610_nfc.c
index b6df4c6..1c86c6b 100644
--- a/drivers/mtd/nand/vf610_nfc.c
+++ b/drivers/mtd/nand/vf610_nfc.c
@@ -707,7 +707,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
 	for_each_available_child_of_node(nfc->dev->of_node, child) {
 		if (of_device_is_compatible(child, "fsl,vf610-nfc-nandcs")) {
 
-			if (chip->flash_node) {
+			if (nand_get_flash_node(chip)) {
 				dev_err(nfc->dev,
 					"Only one NAND chip supported!\n");
 				err = -EINVAL;
@@ -718,7 +718,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
 		}
 	}
 
-	if (!chip->flash_node) {
+	if (!nand_get_flash_node(chip)) {
 		dev_err(nfc->dev, "NAND chip sub-node missing!\n");
 		err = -ENODEV;
 		goto err_clk;
@@ -814,7 +814,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
 	return mtd_device_register(mtd, NULL, 0);
 
 error:
-	of_node_put(chip->flash_node);
+	of_node_put(nand_get_flash_node(chip));
 err_clk:
 	clk_disable_unprepare(nfc->clk);
 	return err;
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2015-11-20  2:58 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-31  3:33 [PATCH v2 00/11] mtd: migrate 'of_node' handling to core, not in mtd_part_parser_data Brian Norris
2015-10-31  3:33 ` [PATCH v2 01/11] mtd: add get/set of_node/flash_node helpers Brian Norris
2015-11-01 23:27   ` Boris Brezillon
2015-11-02 21:12     ` Brian Norris
2015-11-11 21:46   ` Brian Norris
2015-10-31  3:33 ` [PATCH v2 02/11] mtd: ofpart: grab device tree node directly from master device node Brian Norris
2015-10-31  3:33 ` [PATCH v2 03/11] mtd: {nand,spi-nor}: assign MTD of_node Brian Norris
2015-10-31  3:33 ` [PATCH v2 04/11] mtd: nand: convert to nand_set_flash_node() Brian Norris
2015-10-31 15:17   ` Marek Vasut
2015-10-31  3:33 ` [PATCH v2 05/11] mtd: spi-nor: convert to spi_nor_{get,set}_flash_node() Brian Norris
2015-10-31  3:33 ` [PATCH v2 06/11] mtd: nand: drop unnecessary partition parser data Brian Norris
2015-11-01 22:32   ` Boris Brezillon
2015-11-02 21:00     ` Brian Norris
2015-11-11 23:46       ` Brian Norris
2015-10-31  3:33 ` [PATCH v2 07/11] mtd: spi-nor: " Brian Norris
2015-10-31  3:33 ` [PATCH v2 08/11] mtd: spi-nor: drop flash_node field Brian Norris
2015-10-31  3:33 ` [PATCH v2 09/11] mtd: drop unnecessary partition parser data Brian Norris
2015-10-31 15:26   ` Marek Vasut
2015-11-01  0:11     ` Brian Norris
2015-11-05  8:49   ` Boris Brezillon
2015-11-11 23:47     ` Brian Norris
2015-10-31  3:33 ` [PATCH v2 10/11] mtd: ofpart: drop 'of_node' " Brian Norris
2015-10-31  3:33 ` [PATCH v2 11/11] mtd: physmap_of: assign parent for the concatenated MTD Brian Norris
2015-11-01  7:59 ` [PATCH v2 00/11] mtd: migrate 'of_node' handling to core, not in mtd_part_parser_data Boris Brezillon
2015-11-01 23:03 ` [PATCH v2 12/11] mtd: nand: convert to nand_get_flash_node() Boris Brezillon
2015-11-11 23:55   ` Brian Norris
2015-11-02  0:38 ` [PATCH v2 13/11] mtd: assign mtd->dev.of_node when creating partition devices Boris Brezillon
2015-11-12  0:15   ` Brian Norris
2015-11-12 13:22     ` Boris Brezillon
2015-11-20  2:58       ` Brian Norris
2015-11-01 23:02 [PATCH v2 12/11] mtd: nand: convert to nand_get_flash_node() Boris Brezillon
2015-11-01 23:05 ` Boris Brezillon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).