From patchwork Wed Jan 17 13:08:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Scally X-Patchwork-Id: 13521723 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DE971EA7A for ; Wed, 17 Jan 2024 13:08:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705496915; cv=none; b=D4SuKg8Zn0mdub5ztdf/oDfVAi2b+12IXCqbmaOOTVq6QdFaMog1ogxuiefa8lPGi/8Wc84eOEz6FSEfaAS+GEzjGv/nzoemyo56lejTcFVMEvSbM+CwuiHwvkAHRGrXVHgS1Uqmfc7zt7kmU5clZjcTm6Kuslcqzd4yZuF0Aj4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705496915; c=relaxed/simple; bh=/p83iaZdiqKmAfE8XubGCRMyqdWZmwn4C+uvXc/xl8g=; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-Id: X-Mailer:MIME-Version:Content-Transfer-Encoding; b=ib7e1lN39cmfAdTr8UN7lGkNfDbkiJUi/7jn8Sem/JmEBKqr1PlvwPWwxgaCjF8z6z6hyEzdUCS5++/dMu6myfCNIofDo2yY+JE9N7RtcjpigYrX1rzLEyEmcoelUJZZRCJUqtTYq5gqShvl3NoJsGYTWXqLF0uUAkwOmj2ES/E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=KhD+56zX; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="KhD+56zX" Received: from mail.ideasonboard.com (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 865CC7E2; Wed, 17 Jan 2024 14:07:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1705496841; bh=/p83iaZdiqKmAfE8XubGCRMyqdWZmwn4C+uvXc/xl8g=; h=From:To:Cc:Subject:Date:From; b=KhD+56zXPyPHZeJiAp41rfJnvClsUJatKq9h976LTpL9iv5EWNb+1sFEF85zsY87k 4YKU0HgvMXM2c4MGmmXex4pLTFV7DpHDXpf+xdRQW1WA81yHPojJrzcCr+Ht4Nun01 PgZBvgrBTWTUF8Er4P85+sJOcgC90Z0YzbTK88hg= From: Daniel Scally To: linux-media@vger.kernel.org Cc: sakari.ailus@linux.intel.com, tomi.valkeinen@ideasonboard.com, laurent.pinchart@ideasonboard.com, Daniel Scally Subject: [PATCH 1/2] v4l2-ctl: Add --try-routing option Date: Wed, 17 Jan 2024 13:08:04 +0000 Message-Id: <20240117130805.939312-1-dan.scally@ideasonboard.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 v4l2-ctl's --list-subdev-mbus-codes option sets the which flag to V4L2_SUBDEV_FORMAT_TRY, which is an entirely reasonable choice, but means it's currently impossible to list mbus codes for pads that are only part of inactive routes as the --set-routing option sets ACTIVE routing rather than TRY. Add a --try-routing option that has identical functionality to the existing --set-routing but which uses the TRY format instead. Signed-off-by: Daniel Scally Reviewed-by: Laurent Pinchart Reviewed-by: Sakari Ailus --- utils/v4l2-ctl/v4l2-ctl-subdev.cpp | 11 +++++++---- utils/v4l2-ctl/v4l2-ctl.cpp | 1 + utils/v4l2-ctl/v4l2-ctl.h | 1 + 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/utils/v4l2-ctl/v4l2-ctl-subdev.cpp b/utils/v4l2-ctl/v4l2-ctl-subdev.cpp index 86e6c689..48b79288 100644 --- a/utils/v4l2-ctl/v4l2-ctl-subdev.cpp +++ b/utils/v4l2-ctl/v4l2-ctl-subdev.cpp @@ -96,7 +96,8 @@ void subdev_usage() " --set-subdev-fps pad=,stream=,fps= (for testing only, otherwise use media-ctl)\n" " set the frame rate [VIDIOC_SUBDEV_S_FRAME_INTERVAL]\n" " --get-routing Print the route topology\n" - " --set-routing \n" + " --set-routing (for testing only, otherwise use media-ctl)\n" + " --try-routing \n" " Comma-separated list of route descriptors to setup\n" "\n" "Routes are defined as\n" @@ -458,14 +459,16 @@ void subdev_cmd(int ch, char *optarg) } } break; - case OptSetRouting: { + case OptSetRouting: + case OptTryRouting: { struct v4l2_subdev_route *r; char *end, *ref, *tok; unsigned int flags; memset(&routing, 0, sizeof(routing)); memset(routes, 0, sizeof(routes[0]) * NUM_ROUTES_MAX); - routing.which = V4L2_SUBDEV_FORMAT_ACTIVE; + routing.which = ch == OptSetRouting ? V4L2_SUBDEV_FORMAT_ACTIVE : + V4L2_SUBDEV_FORMAT_TRY; routing.num_routes = 0; routing.routes = (__u64)routes; @@ -683,7 +686,7 @@ void subdev_set(cv4l_fd &_fd) fival.interval.denominator, fival.interval.numerator); } } - if (options[OptSetRouting]) { + if (options[OptSetRouting] || options[OptTryRouting]) { if (!_fd.has_streams()) { printf("Streams API not supported.\n"); return; diff --git a/utils/v4l2-ctl/v4l2-ctl.cpp b/utils/v4l2-ctl/v4l2-ctl.cpp index e195ad8e..f9121284 100644 --- a/utils/v4l2-ctl/v4l2-ctl.cpp +++ b/utils/v4l2-ctl/v4l2-ctl.cpp @@ -65,6 +65,7 @@ static struct option long_options[] = { {"set-fmt-video-out", required_argument, nullptr, OptSetVideoOutFormat}, {"try-fmt-video-out", required_argument, nullptr, OptTryVideoOutFormat}, {"get-routing", no_argument, 0, OptGetRouting}, + {"try-routing", required_argument, 0, OptTryRouting}, {"set-routing", required_argument, 0, OptSetRouting}, {"help", no_argument, nullptr, OptHelp}, {"help-tuner", no_argument, nullptr, OptHelpTuner}, diff --git a/utils/v4l2-ctl/v4l2-ctl.h b/utils/v4l2-ctl/v4l2-ctl.h index cc7f1184..6382619c 100644 --- a/utils/v4l2-ctl/v4l2-ctl.h +++ b/utils/v4l2-ctl/v4l2-ctl.h @@ -193,6 +193,7 @@ enum Option { OptShowEdid, OptFixEdidChecksums, OptGetRouting, + OptTryRouting, OptSetRouting, OptFreqSeek, OptEncoderCmd, From patchwork Wed Jan 17 13:08:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dan Scally X-Patchwork-Id: 13521724 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A293C1EA95 for ; Wed, 17 Jan 2024 13:08:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705496915; cv=none; b=V6s0CX8zJjWy8zntn7AZHHV7S44ZU3IAIesb9BwYTnqrxJBGQWZMVet+0y+JkjYRCENIOkhiYt8LuSFzkOQfgcu2RRPq0TxV5kxWTuvur4KJsSOupHN3Q+FOdp5fg3+23u6yl6sayoM0gPG+xVREziqetfE7zJH9kbsoqDoMU8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1705496915; c=relaxed/simple; bh=jAfmmaS8Bclp4ZJmZZ4/lxERktgwTfSi5kYAVWyHrLI=; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-Id: X-Mailer:In-Reply-To:References:MIME-Version: Content-Transfer-Encoding; b=KiJgX4/Uxiu8dXSJ+BGkGG/FaYu2LnJHRsqDq2abnUsdUQAr7b2oCv/tnGXvlSWLTwxjFlxb7+puYhWA5ZtRjk9Y5PR0+u3g9wgOtB/1+RBnyFFdQ4dGF0yk6V+4g9kmpVv3Vyc+r6iQ5qyFHK2KrcxpKowG/ibrV+ZScYsA15U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=M4qOZW3/; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="M4qOZW3/" Received: from mail.ideasonboard.com (cpc141996-chfd3-2-0-cust928.12-3.cable.virginm.net [86.13.91.161]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id DCC3014F6; Wed, 17 Jan 2024 14:07:21 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1705496842; bh=jAfmmaS8Bclp4ZJmZZ4/lxERktgwTfSi5kYAVWyHrLI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=M4qOZW3/rKjkvitw9FKcheiAUzUfS4GNSEKKibNIspXqsNO9rJ7HjHokro8M6O200 flrv5/oC3uXVtkKLaIQvMMo9Vm0ZMGBCEE4ucNz7DUtmgGyx3FXmoyb+HiRru/pnq6 AO3404el8C6KstGenltRSHJRxUXP7gkGj1iB4H/M= From: Daniel Scally To: linux-media@vger.kernel.org Cc: sakari.ailus@linux.intel.com, tomi.valkeinen@ideasonboard.com, laurent.pinchart@ideasonboard.com, Daniel Scally Subject: [PATCH 2/2] media-ctl: Re-order setting format and routes Date: Wed, 17 Jan 2024 13:08:05 +0000 Message-Id: <20240117130805.939312-2-dan.scally@ideasonboard.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240117130805.939312-1-dan.scally@ideasonboard.com> References: <20240117130805.939312-1-dan.scally@ideasonboard.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Currently media-ctl attempts to set formats that are passed to it with -V _before_ setting routes passed to it with -R. This is a problem, because the formats that one wants may not be valid until routing has been configured (for example, if the format is for a route that is inactive by default). Reorder things so that setting routes comes before setting formats. Signed-off-by: Daniel Scally Reviewed-by: Laurent Pinchart Reviewed-by: Sakari Ailus --- utils/media-ctl/media-ctl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/utils/media-ctl/media-ctl.c b/utils/media-ctl/media-ctl.c index 961d10c8..2081f111 100644 --- a/utils/media-ctl/media-ctl.c +++ b/utils/media-ctl/media-ctl.c @@ -751,20 +751,20 @@ int main(int argc, char **argv) } } - if (media_opts.formats) { - ret = v4l2_subdev_parse_setup_formats(media, - media_opts.formats); + if (media_opts.routes) { + ret = v4l2_subdev_parse_setup_routes(media, media_opts.routes); if (ret) { - printf("Unable to setup formats: %s (%d)\n", + printf("Unable to setup routes: %s (%d)\n", strerror(-ret), -ret); goto out; } } - if (media_opts.routes) { - ret = v4l2_subdev_parse_setup_routes(media, media_opts.routes); + if (media_opts.formats) { + ret = v4l2_subdev_parse_setup_formats(media, + media_opts.formats); if (ret) { - printf("Unable to setup routes: %s (%d)\n", + printf("Unable to setup formats: %s (%d)\n", strerror(-ret), -ret); goto out; }