Hi Patrick, On 04/10/2017 10:13 PM, Patrick Doyle wrote: > I am looking for advice regarding the construction of a device driver > for a MIPI CSI2 imager (a Sony IMX241) that is connected to a > MIPI<->Parallel converter (Toshiba TC358748) wired into a parallel > interface on a Soc (a Microchip/Atmel SAMAD2x device.) > > The Sony imager is controlled and configured via I2C, as is the > Toshiba converter. I could write a single driver that configures both > devices and treats them as a single device that just happens to use 2 > i2c addresses. I could use the i2c_new_dummy() API to construct the > device abstraction for the second physical device at probe time for > the first physical device. > > Or I could do something smarter (or at least different), specifying > the two devices independently via my device tree file, perhaps linking > them together via "port" nodes. Currently, I use the "port" node > concept to link an i2c imager to the Image System Controller (isc) > node in the SAMA5 device. Perhaps that generalizes to a chain of > nodes linked together... I don't know. That would be the right solution. Unfortunately the atmel-isc.c driver (at least the version in the mainline kernel) only supports a single subdev device. At least, as far as I can see. What you have is a video pipeline of 2 subdevs and the atmel-isc as DMA engine: imx241 -> tc358748 -> atmel-isc connected in the device tree by ports. Looking at the code I think both subdev drivers would be loaded, but the atmel-isc driver would only call ops from the tc358748. The v4l2_subdev_call functions in atmel-isc should most likely be replaced by v4l2_device_call_all(). But I don't have the tc358748 datasheet with the register information, so I am not sure if this is sufficient. > I'm also not sure how these two devices might play into V4L2's > "subdev" concept. Are they separate, independent sub devices of the > ISC, or are they a single sub device. subdev drivers are standalone drivers for, among others, i2c devices. The top-level driver (atmel-isc + the device tree) is what pulls everything together. This allows us to reuse such subdev drivers on other devices. Regards, Hans > > Any thoughts, intuition, pointers to existing code that addresses > questions such as these, would be welcome. > > Thanks. > > --wpd >