On Wednesday 17 June 2009 17:43:42 [email protected] wrote:
> From: Muralidharan Karicheri <[email protected]>
>
> This patch adds support for setting bus parameters such as bus type
> (Raw Bayer or Raw YUV image data bus), bus width (example 10 bit raw
> image data bus, 10 bit BT.656 etc.), and polarities (vsync, hsync, field
> etc) in sub device. This allows bridge driver to configure the sub device
> bus for a specific set of bus parameters through s_bus() function call.
> This also can be used to define platform specific bus parameters for
> host and sub-devices.
>
> Reviewed by: Hans Verkuil <[email protected]>
> Signed-off-by: Murali Karicheri <[email protected]>
> ---
> Applies to v4l-dvb repository
>
> include/media/v4l2-subdev.h | 40
> ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 40
> insertions(+), 0 deletions(-)
>
> diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
> index 1785608..2f5ec98 100644
> --- a/include/media/v4l2-subdev.h
> +++ b/include/media/v4l2-subdev.h
> @@ -37,6 +37,43 @@ struct v4l2_decode_vbi_line {
> u32 type; /* VBI service type (V4L2_SLICED_*). 0 if no
> service found
> */ };
>
> +/*
> + * Some sub-devices are connected to the host/bridge device through a
> bus that + * carries the clock, vsync, hsync and data. Some interfaces
> such as BT.656 + * carries the sync embedded in the data where as others
> have separate line + * carrying the sync signals. The structure below is
> used to define bus + * configuration parameters for host as well as
> sub-device
> + */
> +enum v4l2_subdev_bus_type {
> + /* Raw YUV image data bus */
> + V4L2_SUBDEV_BUS_RAW_YUV,
> + /* Raw Bayer image data bus */
> + V4L2_SUBDEV_BUS_RAW_BAYER
> +};
Remove the _subdev prefix from the enum above.
> +
> +struct v4l2_bus_settings {
> + /* yuv or bayer image data bus */
> + enum v4l2_subdev_bus_type type;
> + /* subdev bus width */
> + u8 subdev_width;
> + /* host bus width */
> + u8 host_width;
> + /* embedded sync, set this when sync is embedded in the data stream */
> + unsigned embedded_sync:1;
> + /* master or slave */
> + unsigned host_is_master:1;
> + /* 0 - active low, 1 - active high */
> + unsigned pol_vsync:1;
> + /* 0 - active low, 1 - active high */
> + unsigned pol_hsync:1;
> + /* 0 - low to high , 1 - high to low */
> + unsigned pol_field:1;
> + /* 0 - sample at falling edge , 1 - sample at rising edge */
> + unsigned pol_pclock:1;
I'm not sure whether the pol_ prefix is correct here. Perhaps edge_pclock is
a more appropriate name.
Regards,
Hans
> + /* 0 - active low , 1 - active high */
> + unsigned pol_data:1;
> +};
> +
> /* Sub-devices are devices that are connected somehow to the main bridge
> device. These devices are usually audio/video
> muxers/encoders/decoders or sensors and webcam controllers.
> @@ -199,6 +236,8 @@ struct v4l2_subdev_audio_ops {
>
> s_routing: see s_routing in audio_ops, except this version is for
> video devices.
> +
> + s_bus: set bus parameters in sub device to configure the bus
> */
> struct v4l2_subdev_video_ops {
> int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32
> config); @@ -219,6 +258,7 @@ struct v4l2_subdev_video_ops {
> int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
> int (*enum_framesizes)(struct v4l2_subdev *sd, struct v4l2_frmsizeenum
> *fsize); int (*enum_frameintervals)(struct v4l2_subdev *sd, struct
> v4l2_frmivalenum *fival); + int (*s_bus)(struct v4l2_subdev *sd, const
> struct v4l2_bus_settings *bus); };
>
> struct v4l2_subdev_ops {
--
Hans Verkuil - video4linux developer - sponsored by TANDBERG Telecom
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source