From patchwork Mon Jul 30 22:16:00 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sakari Ailus X-Patchwork-Id: 1256701 Return-Path: X-Original-To: patchwork-linux-media@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id AD0BDDFFBF for ; Mon, 30 Jul 2012 22:16:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755067Ab2G3WQG (ORCPT ); Mon, 30 Jul 2012 18:16:06 -0400 Received: from nblzone-211-213.nblnetworks.fi ([83.145.211.213]:54585 "EHLO hillosipuli.retiisi.org.uk" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1755016Ab2G3WQE (ORCPT ); Mon, 30 Jul 2012 18:16:04 -0400 Received: from salottisipuli.retiisi.org.uk (salottisipuli.retiisi.org.uk [IPv6:2001:1bc8:102:6d9a::83:2]) by hillosipuli.retiisi.org.uk (Postfix) with ESMTP id ABE2560099; Tue, 31 Jul 2012 01:16:01 +0300 (EEST) Received: by salottisipuli.retiisi.org.uk (Postfix, from userid 1000) id 2AFEC20A6D; Tue, 31 Jul 2012 01:16:00 +0300 (EEST) From: Sakari Ailus To: laurent.pinchart@ideasonboard.com Cc: linux-media@vger.kernel.org Subject: [media-ctl PATCH 1/1] libv4l2subdev: Add v4l2_subdev_enum_mbus_code() Date: Tue, 31 Jul 2012 01:16:00 +0300 Message-Id: <1343686560-31983-1-git-send-email-sakari.ailus@iki.fi> X-Mailer: git-send-email 1.7.2.5 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org v4l2_subdev_enum_mbus_code() enumerates over supported media bus formats on a pad. Signed-off-by: Sakari Ailus --- src/v4l2subdev.c | 23 +++++++++++++++++++++++ src/v4l2subdev.h | 14 ++++++++++++++ 2 files changed, 37 insertions(+), 0 deletions(-) diff --git a/src/v4l2subdev.c b/src/v4l2subdev.c index d60bd7e..6b6df0a 100644 --- a/src/v4l2subdev.c +++ b/src/v4l2subdev.c @@ -58,6 +58,29 @@ void v4l2_subdev_close(struct media_entity *entity) entity->fd = -1; } +int v4l2_subdev_enum_mbus_code(struct media_entity *entity, + uint32_t *code, uint32_t pad, uint32_t index) +{ + struct v4l2_subdev_mbus_code_enum c; + int ret; + + ret = v4l2_subdev_open(entity); + if (ret < 0) + return ret; + + memset(&c, 0, sizeof(c)); + c.pad = pad; + c.index = index; + + ret = ioctl(entity->fd, VIDIOC_SUBDEV_ENUM_MBUS_CODE, &c); + if (ret < 0) + return -errno; + + *code = c.code; + + return 0; +} + int v4l2_subdev_get_format(struct media_entity *entity, struct v4l2_mbus_framefmt *format, unsigned int pad, enum v4l2_subdev_format_whence which) diff --git a/src/v4l2subdev.h b/src/v4l2subdev.h index 5d55482..1cca7b9 100644 --- a/src/v4l2subdev.h +++ b/src/v4l2subdev.h @@ -22,6 +22,7 @@ #ifndef __SUBDEV_H__ #define __SUBDEV_H__ +#include #include struct media_entity; @@ -47,6 +48,19 @@ int v4l2_subdev_open(struct media_entity *entity); void v4l2_subdev_close(struct media_entity *entity); /** + * @brief Enumerate mbus pixel codes. + * @param entity - subdev-device media entity. + * @param code - mbus pixel code + * + * Enumerate media bus pixel codes. This is just a wrapper for + * VIDIOC_SUBDEV_ENUM_MBUS_CODE IOCTL. + * + * @return 0 on success, or a negative error code on failure. + */ +int v4l2_subdev_enum_mbus_code(struct media_entity *entity, + uint32_t *code, uint32_t pad, uint32_t index); + +/** * @brief Retrieve the format on a pad. * @param entity - subdev-device media entity. * @param format - format to be filled.