From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Brian Norris <computersforpeace@gmail.com>
Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
Ezequiel Garcia <ezequiel.garcia@free-electrons.com>,
Marek Vasut <marex@denx.de>, Scott Wood <scottwood@freescale.com>,
Josh Wu <josh.wu@atmel.com>,
Robert Jarzmik <robert.jarzmik@free.fr>,
Kyungmin Park <kyungmin.park@samsung.com>,
Han Xu <han.xu@freescale.com>,
Huang Shijie <shijie.huang@arm.com>
Subject: Re: [PATCH 1/5] mtd: ofpart: grab device tree node directly from master device node
Date: Wed, 28 Oct 2015 08:58:13 +0100 [thread overview]
Message-ID: <20151028085813.4b0b3ac8@bbrezillon> (raw)
In-Reply-To: <20151027175446.GT13239@google.com>
Hi Brian,
On Tue, 27 Oct 2015 10:54:46 -0700
Brian Norris <computersforpeace@gmail.com> wrote:
> Hi Boris,
>
> On Tue, Oct 27, 2015 at 08:42:00AM +0100, Boris Brezillon wrote:
> > On Mon, 26 Oct 2015 19:31:06 -0700
> > Brian Norris <computersforpeace@gmail.com> wrote:
> >
> > > It seems more logical to use a device node directly associated with the
> > > MTD master device (i.e., mtd->dev.of_node field) rather than requiring
> > > auxiliary partition parser information to be passed in by the driver in
> > > a separate struct.
> > >
> > > This patch supports the mtd->dev.of_node field, deprecates the parser
> > > data 'of_node' field, and begins using the new convention for nand_base.
> > > Other NAND driver conversions may now follow.
> > >
> > > Additional side benefit to assigning mtd->dev.of_node rather than using
> > > parser data: the driver core will automatically create a device -> node
> > > symlink for us.
> >
> > I like the idea, but how about pushing the solution even further and
> > killing the ->flash_node field which AFAICT is rendered useless by
> > your patch?
>
> I suppose we could do that. I do think there's something to be said for
> layering, though. Historically, we haven't done a very good job of
> layering in MTD, so low-level drivers often have to poke around in the
> MTD structures, even if they really should only have to know a few
> things about their helper subsystem/library, like NAND or SPI NOR. So
> with that in mind, I think the ->flash_node serves some purpose --
> drivers can just initialize struct nand_chip/spi_nor and be assured that
> the NAND/SPI-NOR subsystems will take care of things.
>
> Now, I don't think there's much reason to suspect that we'd have a more
> complex mapping than 1:1 between struct mtd_info and struct nand_chip or
> struct spi_nor, so maybe we don't actually need duplicate storage
> (mtd.dev.of_node and {spi_nor,nand_chip}.flash_node), and the layering
> is just have these APIs:
>
> nand_set_flash_node()
> spi_nor_set_flash_node()
>
> which just call mtd_set_of_node()?
I'm fine with that, but as you stated in your next answer this is not
that simple for the NAND subsystem since a lot of drivers are doing
their own custom initialization.
I'll try to come up with something to address that soon (I'll probably
revive the nand_chip nand_controller separation series too) based on
other subsystems like SPI or I2C.
How about providing several simple functions and progressively migrating
all NAND controller drivers to it:
struct nand_controller *nand_controller_alloc(struct device *dev, ...);
struct nand_chip *nand_alloc(struct nand_controller *ctrl, ...);
...
>
> Speaking of layering: why do we have NAND drivers initializing mtd->priv
> for us, yet nand_base just assumes that it points to a struct nand_chip?
I guess it's been like this from the beginning, and nobody bothered
moving this boilerplate into a function provided by the NAND subsystem.
> And why isn't struct mtd_info just embedded in struct nand_chip?
I always wondered the same thing.
> Are
> there ever cases we want more than one (master) MTD per nand_chip? Or
> vice versa?
Nope, I'd say that you always have a 1:1 relationship between a master
MTD device and a NAND device.
Best Regards,
Boris
--
Boris Brezillon, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
next prev parent reply other threads:[~2015-10-28 7:58 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-27 2:31 [PATCH 0/5] mtd: migrate 'of_node' handling to core, not in mtd_part_parser_data Brian Norris
2015-10-27 2:31 ` [PATCH 1/5] mtd: ofpart: grab device tree node directly from master device node Brian Norris
2015-10-27 7:42 ` Boris Brezillon
2015-10-27 17:54 ` Brian Norris
2015-10-28 1:01 ` Brian Norris
2015-10-28 8:02 ` Boris Brezillon
2015-10-28 7:58 ` Boris Brezillon [this message]
2015-10-28 16:11 ` Marek Vasut
2015-10-28 16:32 ` Boris Brezillon
2015-10-28 17:14 ` Brian Norris
2015-10-28 20:55 ` Robert Jarzmik
2015-10-28 22:47 ` Marek Vasut
2015-10-29 6:32 ` Robert Jarzmik
2015-10-29 7:24 ` Boris Brezillon
2015-10-29 17:23 ` Marek Vasut
2015-10-29 17:34 ` Boris Brezillon
2015-10-29 20:28 ` Robert Jarzmik
2015-10-28 20:38 ` Marek Vasut
2015-10-27 2:31 ` [PATCH 2/5] mtd: nand: drop unnecessary partition parser data Brian Norris
2015-10-27 7:52 ` Boris Brezillon
2015-10-28 0:45 ` Brian Norris
2015-10-27 2:31 ` [PATCH 3/5] mtd: spi-nor: " Brian Norris
2015-10-27 2:31 ` [PATCH 4/5] mtd: " Brian Norris
2015-10-27 2:31 ` [PATCH 5/5] mtd: drop 'of_node' " Brian Norris
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151028085813.4b0b3ac8@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=computersforpeace@gmail.com \
--cc=ezequiel.garcia@free-electrons.com \
--cc=han.xu@freescale.com \
--cc=josh.wu@atmel.com \
--cc=kyungmin.park@samsung.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=marex@denx.de \
--cc=robert.jarzmik@free.fr \
--cc=scottwood@freescale.com \
--cc=shijie.huang@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.