[i2c] [PATCH 3/3] Add device tree compatible aliases to i2c drivers

Jon Smirl jonsmirl at gmail.com
Fri Jan 25 11:38:01 EST 2008

On 1/24/08, Olof Johansson <olof at lixom.net> wrote:
> On Tue, Jan 22, 2008 at 09:09:16PM -0500, Jon Smirl wrote:
> > PowerPC device trees use a different naming convention than the Linux
> > kernel.  Provide alias names for i2c drivers in order to allow them to
> > be loaded by device tree name. The OF_ID macro ensures that the aliases
> > are only present in powerpc builds and separated into their own namespace.
> Hmm. I just realized that there's yet another twist to the PPC device
> bindings that's not yet considered:
> Currently the device tree only contains one compatible field for most of
> the devices. But it's perfectly legal (actually, recommended) to have more
> than one compatible field -- they go from the specific to the generic.
> For example, for an eeprom I might have: "MCHP,24lc128est",
> "MCHP,24xx128", "24c128". The at24 driver (not in mainline yet :) would
> likely match with "24c128", and it would normally not make sense to have
> to list all specific vendors and models of the device type in question
> in the driver.
> I can't register a board_info for each of the compatible fields without
> changing the way the i2c drivers are registered, since the creation of
> the duplicate entries will start reporting errors. I also shouldn't
> (reasonably) have to register every single possible first (i.e. most
> specific) compatible-field -- that goes against the whole concept of
> having more than one compatible string.
> So it seems that the solution would be to make i2c_board_info take a
> list of names for the device, and each of them has to be matched with
> all drivers, taking the first match.
> Sounds reasonable to everyone? I can provide a patch to go on top of
> what's already proposed.

I was aware that this was missing but I'm having enough trouble
getting the base code in so I hadn't addressed this problem yet. A
patch would be fine, I haven't written any code.

Can you put the support somewhere in powerpc common code? When I get
my dynamically loadable audio codec patch ready it is going to have
the same problem.

Also note that all of this only works for new style i2c drivers, if
you want to dynamically load an old style one your will have to
convert it to new style first (not hard to do).

Jon Smirl
jonsmirl at gmail.com

More information about the Linuxppc-dev mailing list