From patchwork Wed Feb 24 16:25:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sakari Ailus X-Patchwork-Id: 8409381 Return-Path: X-Original-To: patchwork-linux-media@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id E1471C0553 for ; Wed, 24 Feb 2016 16:27:46 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F191820376 for ; Wed, 24 Feb 2016 16:27:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 07FF920221 for ; Wed, 24 Feb 2016 16:27:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757270AbcBXQ1m (ORCPT ); Wed, 24 Feb 2016 11:27:42 -0500 Received: from mga09.intel.com ([134.134.136.24]:51989 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757090AbcBXQ1m (ORCPT ); Wed, 24 Feb 2016 11:27:42 -0500 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP; 24 Feb 2016 08:27:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,494,1449561600"; d="scan'208";a="920278623" Received: from paasikivi.fi.intel.com ([10.237.72.42]) by orsmga002.jf.intel.com with ESMTP; 24 Feb 2016 08:27:35 -0800 Received: from nauris.fi.intel.com (nauris.localdomain [192.168.240.2]) by paasikivi.fi.intel.com (Postfix) with ESMTP id 17570210B2; Wed, 24 Feb 2016 18:27:35 +0200 (EET) Received: by nauris.fi.intel.com (Postfix, from userid 1000) id 9ABBB201CA; Wed, 24 Feb 2016 18:25:32 +0200 (EET) From: Sakari Ailus To: linux-media@vger.kernel.org Cc: laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl Subject: [PATCH v5 4/4] media-ctl: List supported media bus formats Date: Wed, 24 Feb 2016 18:25:28 +0200 Message-Id: <1456331128-7036-5-git-send-email-sakari.ailus@linux.intel.com> X-Mailer: git-send-email 2.1.0.231.g7484e3b In-Reply-To: <1456331128-7036-1-git-send-email-sakari.ailus@linux.intel.com> References: <1456331128-7036-1-git-send-email-sakari.ailus@linux.intel.com> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Add a new topic option for -h to allow listing supported media bus codes in conversion functions. This is useful in figuring out which media bus codes are actually supported by the library. The numeric values of the codes are listed as well. Signed-off-by: Sakari Ailus Acked-by: Laurent Pinchart --- utils/media-ctl/options.c | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/utils/media-ctl/options.c b/utils/media-ctl/options.c index 0afc9c2..ac78564 100644 --- a/utils/media-ctl/options.c +++ b/utils/media-ctl/options.c @@ -22,7 +22,9 @@ #include #include #include +#include #include +#include #include @@ -48,6 +50,7 @@ static void usage(const char *argv0) printf("-h, --help Show verbose help and exit\n"); printf("-i, --interactive Modify links interactively\n"); printf("-l, --links links Comma-separated list of link descriptors to setup\n"); + printf(" --known-mbus-fmts List known media bus formats and their numeric values\n"); printf("-p, --print-topology Print the device topology\n"); printf(" --print-dot Print the device topology as a dot graph\n"); printf("-r, --reset Reset all links to inactive\n"); @@ -88,9 +91,10 @@ static void usage(const char *argv0) v4l2_subdev_field_to_string(i)); } -#define OPT_PRINT_DOT 256 -#define OPT_GET_FORMAT 257 -#define OPT_SET_DV 258 +#define OPT_PRINT_DOT 256 +#define OPT_GET_FORMAT 257 +#define OPT_SET_DV 258 +#define OPT_LIST_KNOWN_MBUS_FMTS 259 static struct option opts[] = { {"device", 1, 0, 'd'}, @@ -103,6 +107,7 @@ static struct option opts[] = { {"help", 0, 0, 'h'}, {"interactive", 0, 0, 'i'}, {"links", 1, 0, 'l'}, + {"known-mbus-fmts", 0, 0, OPT_LIST_KNOWN_MBUS_FMTS}, {"print-dot", 0, 0, OPT_PRINT_DOT}, {"print-topology", 0, 0, 'p'}, {"reset", 0, 0, 'r'}, @@ -110,6 +115,27 @@ static struct option opts[] = { { }, }; +static void list_known_mbus_formats(void) +{ + unsigned int ncodes; + const unsigned int *code = v4l2_subdev_pixelcode_list(&ncodes); + + while (ncodes--) { + const char *str = v4l2_subdev_pixelcode_to_string(*code); + int spaces = 30 - (int)strlen(str); + + if (*code == 0) + break; + + if (spaces < 0) + spaces = 0; + + printf("%s %*c 0x%8.8x\n", str, spaces, ' ', *code); + + code++; + } +} + int parse_cmdline(int argc, char **argv) { int opt; @@ -120,7 +146,8 @@ int parse_cmdline(int argc, char **argv) } /* parse options */ - while ((opt = getopt_long(argc, argv, "d:e:f:hil:prvV:", opts, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "d:e:f:hil:prvV:", + opts, NULL)) != -1) { switch (opt) { case 'd': media_opts.devname = optarg; @@ -177,6 +204,10 @@ int parse_cmdline(int argc, char **argv) media_opts.dv_pad = optarg; break; + case OPT_LIST_KNOWN_MBUS_FMTS: + list_known_mbus_formats(); + exit(0); + default: printf("Invalid option -%c\n", opt); printf("Run %s -h for help.\n", argv[0]);