Re: [PATCH] I2C: ocores can add I2C devices to the bus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux