From patchwork Tue Dec 8 15:15:16 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sakari Ailus X-Patchwork-Id: 7798671 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 4485EBEEE5 for ; Tue, 8 Dec 2015 15:18:39 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5D73020523 for ; Tue, 8 Dec 2015 15:18:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3B05120527 for ; Tue, 8 Dec 2015 15:18:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965178AbbLHPS2 (ORCPT ); Tue, 8 Dec 2015 10:18:28 -0500 Received: from mga01.intel.com ([192.55.52.88]:58637 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S965176AbbLHPS0 (ORCPT ); Tue, 8 Dec 2015 10:18:26 -0500 Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga101.fm.intel.com with ESMTP; 08 Dec 2015 07:16:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,400,1444719600"; d="scan'208";a="856483133" Received: from paasikivi.fi.intel.com ([10.237.72.42]) by fmsmga001.fm.intel.com with ESMTP; 08 Dec 2015 07:16:22 -0800 Received: from nauris.fi.intel.com (nauris.localdomain [192.168.240.2]) by paasikivi.fi.intel.com (Postfix) with ESMTP id 0E1FC20B82; Tue, 8 Dec 2015 17:16:22 +0200 (EET) Received: by nauris.fi.intel.com (Postfix, from userid 1000) id 4106D2008A; Tue, 8 Dec 2015 17:15:18 +0200 (EET) From: Sakari Ailus To: linux-media@vger.kernel.org Cc: laurent.pinchart@ideasonboard.com, hverkuil@xs4all.nl Subject: [v4l-utils PATCH v2 3/3] media-ctl: List supported media bus formats Date: Tue, 8 Dec 2015 17:15:16 +0200 Message-Id: <1449587716-22954-4-git-send-email-sakari.ailus@linux.intel.com> X-Mailer: git-send-email 2.1.0.231.g7484e3b In-Reply-To: <1449587716-22954-1-git-send-email-sakari.ailus@linux.intel.com> References: <1449587716-22954-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, T_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 --- utils/media-ctl/options.c | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/utils/media-ctl/options.c b/utils/media-ctl/options.c index 0afc9c2..5902aed 100644 --- a/utils/media-ctl/options.c +++ b/utils/media-ctl/options.c @@ -22,7 +22,9 @@ #include #include #include +#include #include +#include #include @@ -45,7 +47,8 @@ static void usage(const char *argv0) printf("-V, --set-v4l2 v4l2 Comma-separated list of formats to setup\n"); printf(" --get-v4l2 pad Print the active format on a given pad\n"); printf(" --set-dv pad Configure DV timings on a given pad\n"); - printf("-h, --help Show verbose help and exit\n"); + printf("-h, --help[=topic] Show verbose help and exit\n"); + printf(" topics: mbus-fmt: List supported media bus pixel codes\n"); printf("-i, --interactive Modify links interactively\n"); printf("-l, --links links Comma-separated list of link descriptors to setup\n"); printf("-p, --print-topology Print the device topology\n"); @@ -100,7 +103,7 @@ static struct option opts[] = { {"get-format", 1, 0, OPT_GET_FORMAT}, {"get-v4l2", 1, 0, OPT_GET_FORMAT}, {"set-dv", 1, 0, OPT_SET_DV}, - {"help", 0, 0, 'h'}, + {"help", 2, 0, 'h'}, {"interactive", 0, 0, 'i'}, {"links", 1, 0, 'l'}, {"print-dot", 0, 0, OPT_PRINT_DOT}, @@ -110,6 +113,27 @@ static struct option opts[] = { { }, }; +void list_mbus_formats(void) +{ + unsigned int i; + + printf("Supported media bus pixel codes\n"); + + for (i = 0; ; i++) { + unsigned int code = v4l2_subdev_pixelcode_list(i); + const char *str = v4l2_subdev_pixelcode_to_string(code); + int spaces = 30 - (int)strlen(str); + + if (code == -1) + break; + + if (spaces < 0) + spaces = 0; + + printf("\t%s %*c (0x%8.8x)\n", str, spaces, ' ', code); + } +} + int parse_cmdline(int argc, char **argv) { int opt; @@ -120,7 +144,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:h::il:prvV:", + opts, NULL)) != -1) { switch (opt) { case 'd': media_opts.devname = optarg; @@ -142,7 +167,16 @@ int parse_cmdline(int argc, char **argv) break; case 'h': - usage(argv[0]); + if (optarg) { + if (!strcmp(optarg, "mbus-fmt")) + list_mbus_formats(); + else + fprintf(stderr, + "Unknown topic \"%s\"\n", + optarg); + } else { + usage(argv[0]); + } exit(0); case 'i':