Re: [RFC] Per-subdev, host-specific data

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

 



On Friday 23 July 2010 15:01:29 Laurent Pinchart wrote:
> Hi everybody,
> 
> Trying to implement support for multiple sensors connected to the same OMAP3 
> ISP input (all but one of the sensors need to be kept in reset obviously), I 
> need to associate host-specific data to the sensor subdevs.
> 
> The terms host and bridge are considered as synonyms in the rest of this e-
> mail.
> 
> The OMAP3 ISP platform data has interface configuration parameters for the two 
> CSI2 (a and c), CCP2 and parallel interfaces. The parameters are used to 
> configure the bus when a sensor is selected. To support multiple sensors on 
> the same input, the parameters need to be specified per-sensor, and not ISP-
> wide.
> 
> No issue in the platform data. Board codes declare an array of structures that 
> embed a struct v4l2_subdev_i2c_board_info instance and an OMAP3 ISP-specific 
> interface configuration structure.
> 
> At runtime, when a sensor is selected, I need to access the OMAP3 ISP-specific 
> interface configuration structure for the selected sensor. At that point all I 
> have is a v4l2_subdev structure pointer, without a way to get back to the 
> interface configuration structure.
> 
> The only point in the code where the v4l2_subdev and the interface 
> configuration data are both known and could be linked together is in the host 
> driver's probe function, where the v4l2_subdev instances are created. I have 
> two solutions there:
> 
> - store the v4l2_subdev pointer and the interface configuration data pointer 
> in a host-specific array, and perform a an array lookup operation at runtime 
> with the v4l2_subdev pointer as a key
> 
> - add a void *host_priv field to the v4l2_subdev structure, store the 
> interface configuration data pointer in that field, and use the field at 
> runtime
> 
> The second solution seems cleaner but requires an additional field in 
> v4l2_subdev. Opinions and other comments will be appreciated.

There is a third option: the grp_id field is owned by the host driver, so you
could make that an index into a host specific array.

That said, I think having a host_priv field isn't a bad idea. Although if we
do this, then I think the existing priv field should be renamed to drv_priv
to prevent confusion.

Regards,

            Hans

-- 
Hans Verkuil - video4linux developer - sponsored by TANDBERG, part of Cisco
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux