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

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

 



Jean Delvare wrote:
>>>
>>> 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.

We have a PCIe device, actually a FPGA with a lot of different IP:s in it.
For instance an UART, I2C, SPI controller, ethernet controller,
radio tuner, video grabber, SDHCI, etc etc. And we only get one single
interrupt from the device.

The PCI driver for this device implements an MFD
(multi function device, check drivers/mfd). The idea of MFD:s is to
register platform devices for all cells. And to multiplex IRQ:s to the
platform devices. And by doing this all existing platform drivers
can be reused.

> 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.

Problem here is that our PCI device implements _a lot_ of stuff,
not only I2C.
That's what the MFD is all about, split it into multiple
platform devices. So in my case the MFD driver has to call the algo
directly.

I don't see the bad thing about my idea. I mean the MFD driver knows
that it have an ocores I2C hardware, and that there are a couple of
devices on the I2C bus.
Why not pass a table of devices when registering the I2C platform device?
I think that's nicer than having the MFD register a lot of platform
devices, but when it comes I2C it has to implement it by itself.
This more or less breaks the whole MFD idea :-(


Btw SPI does something like I do, some of the SPI drivers calls
of_register_spi_devices, which registers devices to the newly created
master.

--Richard
--
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