On Wed, 03 Jun 2009 10:53:10 +0200, Richard R?öjfors wrote: > Peter Korsgaard wrote: > >>>>>> "Jean" == Jean Delvare <khali@xxxxxxxxxxxx> writes: > > > > Hi, > > > > Jean> I don't like the idea much either, nor the implementation. > > > > Jean> Firstly, I don't understand why this would be needed. I can understand > > Jean> that in some cases you don't know the I2C bus number in advance, but > > Jean> then some code must still instantiate the I2C bus, and the same code > > Jean> should be able to call i2c_new_device() directly to instantiate the > > Jean> devices on that bus. Richard, did you try to just do this? If it > > Jean> doesn't work, please explain why. > > > > Indeed. Isn't it just a matter of using i2c_add_numbered_adapter - > > E.G.: > > Let say there are several PCI boards which have I2C busses, connected in let say > a standard PC. The PCI drivers could be MFD:s which exposes some platform > devices for the I2C busses. This doesn't make any sense to me to start with. PCI boards have PCI drivers, not platform drivers. If you have an I2C bus on a PCI board, the PCI driver simply registers it using i2c_add_adapter(), there is no platform driver or device involved. If you happen to have a PCI device which implements an I2C adapter compatible with i2c-ocores, then what you want is to abstract the I2C controller logic to a separate module, and have the current i2c-ocores driver (which would become a simple glue module, and may be renamed to i2c-ocores-platform) depend on it. Then add your i2c-ocores-pci driver for the PCI implementation, also using the abstracted logic module as its backend. It might make sense to consider ocores an "I2C algorithm" and have i2c-algo-ocores for the abstracted implementation. > How should those drivers know which bus numbers that are free? > Let say there are 2 boards of one type and two of an other. > > The MFD:s might register there platform devices before there are I2C bus drivers available. > So a call to i2c_get_adapter, won't return any adapter, so AFAIK there is no > way to check if a bus number is "free" for use(?) Should those drivers talk to each other > and try to coordinate the bus number usage? > > But even if it was possible to figure out bus numbers to use, the bus drivers might > not be available when the MFD registers the platform device, so when should it call > i2c_new_device? Start a timer and call i2c_get_adapter until it returns something? I don't think you need to answer these questions any longer with the model I proposed above. -- Jean Delvare -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html