From patchwork Wed Jun 10 17:00:50 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: m-karicheri2@ti.com X-Patchwork-Id: 1743 Return-path: Envelope-to: mchehab@infradead.org Delivery-date: Wed, 10 Jun 2009 17:01:34 +0000 Received: from bombadil.infradead.org [18.85.46.34] by pedra.chehab.org with IMAP (fetchmail-6.3.6) for (single-drop); Wed, 10 Jun 2009 14:01:52 -0300 (BRT) Received: from vger.kernel.org ([209.132.176.167]) by bombadil.infradead.org with esmtp (Exim 4.69 #1 (Red Hat Linux)) id 1MERB8-00031r-EN; Wed, 10 Jun 2009 17:01:34 +0000 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759567AbZFJRA5 (ORCPT + 1 other); Wed, 10 Jun 2009 13:00:57 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1758492AbZFJRA5 (ORCPT ); Wed, 10 Jun 2009 13:00:57 -0400 Received: from arroyo.ext.ti.com ([192.94.94.40]:52752 "EHLO arroyo.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759292AbZFJRAz (ORCPT ); Wed, 10 Jun 2009 13:00:55 -0400 Received: from dlep33.itg.ti.com ([157.170.170.112]) by arroyo.ext.ti.com (8.13.7/8.13.7) with ESMTP id n5AH0qMA031750 for ; Wed, 10 Jun 2009 12:00:57 -0500 Received: from legion.dal.design.ti.com (localhost [127.0.0.1]) by dlep33.itg.ti.com (8.13.7/8.13.7) with ESMTP id n5AH0pPa008510; Wed, 10 Jun 2009 12:00:51 -0500 (CDT) Received: from gt516km11.gt.design.ti.com (gt516km11.gt.design.ti.com [158.218.100.179]) by legion.dal.design.ti.com (8.11.7p1+Sun/8.11.7) with ESMTP id n5AH0p929300; Wed, 10 Jun 2009 12:00:51 -0500 (CDT) Received: from gt516km11.gt.design.ti.com (localhost.localdomain [127.0.0.1]) by gt516km11.gt.design.ti.com (8.13.1/8.13.1) with ESMTP id n5AH0oHY004671; Wed, 10 Jun 2009 13:00:50 -0400 Received: (from a0868495@localhost) by gt516km11.gt.design.ti.com (8.13.1/8.13.1/Submit) id n5AH0osb004668; Wed, 10 Jun 2009 13:00:50 -0400 From: m-karicheri2@ti.com To: linux-media@vger.kernel.org Cc: davinci-linux-open-source@linux.davincidsp.com, Muralidharan Karicheri , Muralidharan Karicheri Subject: [RFC PATCH] adding support for setting bus parameters in sub device Date: Wed, 10 Jun 2009 13:00:50 -0400 Message-Id: <1244653250-4640-1-git-send-email-m-karicheri2@ti.com> X-Mailer: git-send-email 1.6.0.4 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org From: Muralidharan Karicheri 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 interface for a specific set of bus parameters through s_bus() function call. Reviewed By "Hans Verkuil". Signed-off-by: Muralidharan Karicheri --- Applies to v4l-dvb repository include/media/v4l2-subdev.h | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-) diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h index 1785608..8e719c4 100644 --- a/include/media/v4l2-subdev.h +++ b/include/media/v4l2-subdev.h @@ -37,6 +37,39 @@ struct v4l2_decode_vbi_line { u32 type; /* VBI service type (V4L2_SLICED_*). 0 if no service found */ }; +/* + * Some sub-devices are connected to the 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 by bridge driver to + * set the desired bus parameters in the sub device to work with it. + */ +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 +}; + +struct v4l2_subdev_bus { + /* yuv or bayer image data bus */ + enum v4l2_subdev_bus_type type; + /* bus width */ + u8 width; + /* embedded sync, set this when sync is embedded in the data stream */ + unsigned embedded_sync: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; + /* 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 +232,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 interface */ struct v4l2_subdev_video_ops { int (*s_routing)(struct v4l2_subdev *sd, u32 input, u32 output, u32 config); @@ -219,6 +254,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_subdev_bus *bus); }; struct v4l2_subdev_ops {