Re: MTD EEPROM support and driver integration

From: Maxime Ripard
Date: Mon Jul 08 2013 - 16:25:50 EST


On Mon, Jul 08, 2013 at 09:34:26AM +0100, Mark Brown wrote:
> On Sat, Jul 06, 2013 at 09:06:49PM +0200, Arnd Bergmann wrote:
> > On Saturday 06 July 2013 14:01:12 Maxime Ripard wrote:
>
> > > > > > a) like interrupts, regs, dmas, clocks, pinctrl, reset, pwm: fixed property names
>
> > > > > > regmap = <&at25 0xstart 0xlen>;
> > > > > > regmap-names = "mac-address";
>
> > > > > > b) like gpio, regulator: variable property names
>
> > > > > > mac-storage = <&at25 0xstart 0xlen>;
>
> > > > > > It's unfortunate that we already have examples of both. They are largely
> > > > > > equivalent, but the tendency is towards the first.
>
> > > > > I don't have a strong feeling for one against another, so whatever works
> > > > > best. Both solutions will be a huge improvement anyway
>
> > > > > Just out of curiosity, is there any advantages besides having a fixed
> > > > > property name to the first solution?
>
> > > > I think it's mostly for consistency: trying to get most subsystems to
> > > > do it the same way to make it easier for people to write dts files.
>
> > > > A lesser point is that it simplifies the driver code if you don't
> > > > have to pass a name.
>
> On the other hand something with human readable names is much more
> legible if humans ever have to read or write the DT bindings. This
> mostly applies when there are many instances of the property (for
> example, many devices have lots of power supplies) or when some
> instances of the property are optional (for example, many devices can
> use GPIOs for many different functions but usually not all of them are
> connected and there's no particular order in which they might get
> connected).

I guess we would have only a few of these in our cases, so it doesn't
really qualify for the "many instances" I guess, but I do find the
GPIO/regulator-like properties more intuitive and more readable as
well.

> > > So that leave us with mainly one path to achieve this goal:
> > > - Add a regmap-mtd backend
> > > - Add DT parsing code for regmap
> > > - Move the EEPROM drivers from misc to mtd
>
> > Yes, I think that would be good. For the last step, we definitely need
> > buy-in from Wolfgand and Jean, as they are maintaining the current eeprom
> > drivers.
>
> I'd really like to see more discussion of this "DT parsing code for
> regmap" idea... I've missed almost all the context here.

The context was that I found we lack a way to simply express the need
for one driver to get a value from an EEPROM-like device, for example to
get a MAC Address, or a serial number, in a generic way, without having
to poke directly with some custom function that would be exported by the
EEPROM driver.

And the lack of infrastructure/framework to handle the EEPROM right now
only make the thing a bit harder.

What we've been discussing so far is that:
- To have a common framework we could base our work on, we could move
the EEPROM drivers from drivers/misc/eeprom to MTD
- To declare the ranges that needed to be used by a driver that was
needing a value from one of those MTD drivers, we would use regmap
with a MTD backend
- And since we actually need to declare which ranges and in which
device one driver would have to retrieve this value from, we were
actually in need of DT bindings.

This is pretty much the only context involved, and we are at the early
stage of the discussion, so any comment is very welcome :)

Thanks!
Maxime

--
Maxime Ripard, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

Attachment: signature.asc
Description: Digital signature