public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
From: Arnd Bergmann <arnd@arndb.de>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Artem Bityutskiy <dedekind1@gmail.com>,
	oliver@schinagl.nl,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
	Shawn Guo <shawn.guo@linaro.org>,
	David Woodhouse <dwmw2@infradead.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: MTD EEPROM support and driver integration
Date: Fri, 5 Jul 2013 23:02:40 +0200	[thread overview]
Message-ID: <201307052302.40588.arnd@arndb.de> (raw)
In-Reply-To: <20130705201118.GM2959@lukather>

On Friday 05 July 2013, Maxime Ripard wrote:
> Hi everyone,
> 
> In the last weeks, we've drivers coming up both about mostly some very
> simple drivers that expose to the userspace a few bytes of memory-mapped
> IO. Both will probably live under drivers/misc/eeprom, where there's
> support already for other kind of what could be assimilated as eeproms
> (AT24, AT25, etc.).
> 
> Now, besides the code duplication every driver has to make to register
> the sysfs attributes, it wouldn't cause much of a problem.
> 
> Except that these EEPROMs could store values useful for other drivers in
> Linux. For example:
>   - imx28 OCOTP (the latest of the two EEPROM drivers recently submitted)
>     use it most of the time to store its MAC addresses
>   - Allwinner SoCs SID (the other latest driver submitted) use it
>     sometime to store a MAC address, and also the SoC ID, which could be
>     useful to implement a SoC bus driver.
>   - Some Allwinner boards (and presumably others) use an AT24 to store
>     the MAC address in it.
> 
> For now, everyone comes up with a different solution:
>   - imx28 has a hook in mach-mxs to patch the device tree at runtime and
>     add the values retrieved from the OCOTP to it.
>   - AT24 seem to have some function exported (at24_macc_(read|write)) so
>     that other part of the kernel can use them to retrieve values from
>     such an EEPROM.
>   - Allwinner SoCs have, well, basically nothing for now, which is why I
>     send this email.
> 
> The current way of working has several flaws imho:
>   - The code is heavily duplicated: the sysfs registering is common to
>     every driver, and at the end of the day, every driver should only
>     give a read/write callback, and that's it.
>   - The "consumer" drivers should not have to worry at all about the
>     EEPROM type it should retrieve the needed value from, let alone
>     dealing with the number of instances of such an EEPROM.
> 
> To solve this issues, I think I have some solution. Would merging this
> drivers into MTD make some sense? It seems like there is already some
> EEPROM drivers into drivers/mtd (such as an AT25 one, which also have a
> drivers under drivers/misc/eeprom), so I guess it does, but I'd like to
> have your opinion on this.

I always felt that we should eventually move the eeprom drivers out of
drivers/misc into their own subsystem. Moving them under drivers/mtd
also seems reasonable.

Having a common API sounds like a good idea, and we should probably
spend some time comparing the options.
 
> If so, would some kind of MTD in-kernel API to retrieve values from MTD
> devices would be acceptable to you? I mostly have DT in mind, so I'm
> thinking of having DT bindings to that API such as
> 
>   mac-storage = <&phandle 0xoffset 0xsize>
> 
> to describe which device to get a value from, and where in that device.
> 
> That would allow consumer drivers to only have to call a function like
> of_mtd_get_value and let the MTD subsystem do the hard work.
> 
> What's your feeling on this?

My first thought is that it should be more generic than that and not
have the mac address hardcoded as the purpose. We could possibly use
regmap as the in-kernel interface, and come up with a more generic
way of referring to registers in another device node.

	Arnd

  reply	other threads:[~2013-07-05 21:02 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-05 20:11 MTD EEPROM support and driver integration Maxime Ripard
2013-07-05 21:02 ` Arnd Bergmann [this message]
2013-07-05 22:23   ` Maxime Ripard
2013-07-05 22:33     ` Arnd Bergmann
2013-07-06  8:28       ` Maxime Ripard
2013-07-06  9:18         ` Arnd Bergmann
2013-07-06 11:43           ` Maxime Ripard
2013-07-06 12:01           ` Maxime Ripard
2013-07-06 19:06             ` Arnd Bergmann
2013-07-06 19:55               ` Jean Delvare
2013-07-07  7:15               ` Maxime Ripard
2013-07-08  8:36                 ` Mark Brown
2013-07-08 21:04                   ` Maxime Ripard
2013-07-08  8:34               ` Mark Brown
2013-07-08 20:25                 ` Maxime Ripard
2013-07-09 14:55                   ` Mark Brown
2013-07-11 17:05                     ` Maxime Ripard

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=201307052302.40588.arnd@arndb.de \
    --to=arnd@arndb.de \
    --cc=dedekind1@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=maxime.ripard@free-electrons.com \
    --cc=oliver@schinagl.nl \
    --cc=shawn.guo@linaro.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox