From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) (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 B93264446FC for ; Mon, 14 Sep 2026 11:42:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789386124; cv=none; b=Dm+Za4C06hKy33+ZPlwq1K+wJJvgKmnRvroQ9H/2BTOxWqY3sNefROw4jY4jcRcURi9jAlModzImYCPtk6CjEdCO4pzpMAhiUXP/RcCA/L0ZJx03k9PQ5ysRAeRmrxUyvZBjEG4FZzw4MwHG8HXcygytAQ3JZRBpzSQUNFaoTIM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789386124; c=relaxed/simple; bh=ewCd5FmMotVlDVXErCEN2I5mc4li/HBmbdZLc0sg3u8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=BI7OdSP59xr+ZeK9iYFnGQT6Uk+7EN3IIyH49GL4HAszOjg//pqvLOKTHaJ8zUCFHiU5vYKfNtcehLfTgXvjWsySFcEBKG3gaQElJjSfUwfkLlgA9/oKJb7/jUURTccU2MvysoC1a9pAwxQVOOqvIMOwwrPlM7ycPHL87YGg33Q= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=pass smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Y4vONupC; arc=none smtp.client-ip=198.175.65.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Y4vONupC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1789386122; x=1820922122; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=ewCd5FmMotVlDVXErCEN2I5mc4li/HBmbdZLc0sg3u8=; b=Y4vONupCclLVqbffqKItPbXzHuyfAtzqbyOG1+1gPIEObP5VTcraVGVN x22wMvZyKvGyKo2zYvT4og/H/dEMqgJ5wsQTKMwF+caXJsxBbEFnFGox1 1cLb9GNyg6zdbmZ1m6vzdDJaT9oX8eS/xGqV1mbXF2a/j72RGi/m8MJ0A KJv0UB/4vH0hm/P18WYr869Pwxz8fb5+j7JY3VsJmIJaNbupG7/9sDZrf jWoR7S0WOnGwh7jL+e/ZSruSW178vXCa6Uws3xQAtO6I+2+S9g4M1FUaX LO4GDu7sK6PQVOG473aYW6vfRpeXlBuqHUieuyqzYVq8+qB0IqCerNvhb g==; X-CSE-ConnectionGUID: hzTGkKOYSje4Yvy+nVAFbA== X-CSE-MsgGUID: Hnt7XLnyRLq7TGXW5cAnqQ== X-IronPort-AV: E=McAfee;i="6800,10657,11904"; a="93431911" X-IronPort-AV: E=Sophos;i="6.27,102,1787036400"; d="scan'208";a="93431911" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2026 04:41:58 -0700 X-CSE-ConnectionGUID: zAEHM3J1TrOOLFoUk/1cmQ== X-CSE-MsgGUID: ZzShL+j3SbagMWO8KCPlLA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.27,102,1787036400"; d="scan'208";a="270812722" Received: from klitkey1-mobl1.ger.corp.intel.com (HELO kekkonen.fi.intel.com) ([10.245.245.61]) by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2026 04:41:51 -0700 Received: from punajuuri.localdomain (unknown [192.168.240.130]) by kekkonen.fi.intel.com (Postfix) with ESMTP id AAD5A121BB8; Mon, 14 Sep 2026 14:41:56 +0300 (EEST) Received: from sailus by punajuuri.localdomain with local (Exim 4.98.2) (envelope-from ) id 1x654D-00000002PXQ-0INI; Mon, 14 Sep 2026 14:41:45 +0300 Organization: Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6 krs, Bertel Jungin Aukio 5, 02600 Espoo From: Sakari Ailus To: linux-media@vger.kernel.org Cc: hans@jjverkuil.nl, laurent.pinchart@ideasonboard.com, Prabhakar , Kate Hsuan , Dave Stevenson , Tommaso Merciai , Benjamin Mugnier , Sylvain Petinot , Christophe JAILLET , Julien Massot , Naushir Patuck , "Yan, Dongcheng" , Stefan Klug , Mirela Rabulea , =?UTF-8?q?Andr=C3=A9=20Apitzsch?= , Heimir Thor Sverrisson , Kieran Bingham , Mehdi Djait , Ricardo Ribalda Delgado , Hans de Goede , Jacopo Mondi , Tomi Valkeinen , David Plowman , "Yu, Ong Hock" , "Ng, Khai Wen" , Jai Luthra , Rishikesh Donadkar , Mattijs Korpershoek , Antti Laakso Subject: [PATCH v8 00/13] Metadata series preparation Date: Mon, 14 Sep 2026 14:41:31 +0300 Message-ID: <20260914114145.574791-1-sakari.ailus@linux.intel.com> X-Mailer: git-send-email 2.47.3 Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Hi folks, This smallish set contains patches that prepare for merging the metadata series. These patches have been out for review for quite a long time so I intend to merge these early, once we have the next rc1 merged in the Media tree. Before doing so however, I'd like to have reviews for the v4l2-subdev changes that haven't been acked yet. There are simple cleanups but also a noteworthy change: the addition of the new struct v4l2_subdev_client_info struct to the set_fmt, get_selection and set_selection pad operation arguments. The series now begins with a set of imx219 patches, fixes and cleanups accrued during the conversion of the imx219 driver to use the common raw sensor model. I wonder if all these should be backported. The new struct v4l2_subdev_client_info enables passing around file handler specific client capability information, which is used to differentiate UAPI between existing users and those that are aware of the new common raw sensor model. This is effectively required if we want to add support for the new model to existing raw sensor drivers: the new model is in a direct conflict with how the imx219 driver in particular worked before the common raw sensor model. There still needs to be a single driver internal state, the different UAPIs simply offer a different view to that state. The get_fmt() pad op does not have the client_info argument as the get_fmt() is called by other drivers inside the kernel so there's no concept of "client info" there nor the format returned by the callback should have depended on it. The Coccinelle spatch used to generate most of the driver changes in the last patch is below, as is a Perl script to generate another Coccinelle patch doing the rest of the job: caps.cocci ------------------8<---------------------- @ fmt @ identifier a1, a2, a3; identifier fn =~ ".*_set.*"; @@ fn(struct v4l2_subdev *a1, + const struct v4l2_subdev_client_info *ci, struct v4l2_subdev_state *a2, struct v4l2_subdev_format *a3) {...} @ sel @ identifier a1, a2, a3; identifier fn2; @@ fn2(struct v4l2_subdev *a1, + const struct v4l2_subdev_client_info *ci, struct v4l2_subdev_state *a2, struct v4l2_subdev_selection *a3) {...} @ fmt_call @ expression a1, a2, a3; identifier fmt.fn; @@ fn(a1 + , NULL , a2, a3); @ fmt_call2 @ expression a1, a2, a3; identifier fmt.fn; @@ return fn(a1 + , NULL , a2, a3); @ fmt_call3 @ expression ret, a1, a2, a3; identifier fmt.fn; @@ ret = fn(a1 + , NULL , a2, a3); @ fmt_call4 @ expression a1, a2, a3; identifier sel.fn2; @@ fn2(a1 + , NULL , a2, a3); @ fmt_call5 @ expression a1, a2, a3; identifier sel.fn2; @@ return fn2(a1 + , NULL , a2, a3); @ fmt_call6 @ expression ret, a1, a2, a3; identifier sel.fn2; @@ ret = fn2(a1 + , NULL , a2, a3); ------------------8<---------------------- mk-caps2.pl ------------------8<---------------------- #!/usr/bin/perl -w my @prefix = ( "(void)", "", "ret = ", "return " ); my $state_args = [ [ "sd", "state", "fmt" ] ]; my $pad_active_args = [ #[ "sd", "pad", "get_fmt", "fmt" ], [ "sd", "pad", "set_fmt", "fmt" ], [ "sd", "pad", "get_selection", "fmt" ], [ "sd", "pad", "set_selection", "fmt" ], ]; my $pad_args = [ #[ "sd", "pad", "get_fmt", "state", "fmt" ], [ "sd", "pad", "set_fmt", "state", "fmt" ], [ "sd", "pad", "get_selection", "state", "fmt" ], [ "sd", "pad", "set_selection", "state", "fmt" ], ]; my $group_args = [ #[ "dev", "group", "pad", "get_fmt", "state", "fmt" ], [ "dev", "group", "pad", "set_fmt", "state", "fmt" ], [ "dev", "group", "pad", "get_selection", "state", "fmt" ], [ "dev", "group", "pad", "set_selection", "state", "fmt" ], ]; my %funcs = ( # "function_name" => [ arg ref, new arg position from the end ], "v4l2_subdev_call" => { args => $pad_args, pos => 1 }, "v4l2_device_call_all" => { args => $group_args, pos => 1 }, #"v4l2_subdev_get_fmt" => { args => $state_args, pos => 1 }, "sensor_call" => { args => $pad_args, pos => 1 }, "saa_call_all" => { args => $pad_args, pos => 1 }, "call_all" => { args => $pad_args, pos => 1 }, "v4l2_subdev_call_state_active" => { args => $pad_active_args, newname => "v4l2_subdev_call_ci_state_active" }, ); my $rule; foreach my $p (@prefix) { foreach my $f (keys %funcs) { my $aref = $funcs{$f}; foreach my $i (@{$aref->{args}}) { my $newname = $aref->{newname}; print "@ rule" . $rule++ . " @\n"; print "symbol $f;\n"; print map { ((/_/ || /^pad$/) ? "symbol" : "expression") . " $_;\n"; } @$i; my @pre = @$i; my @post = splice @pre, $#pre - ($aref->{pos} // 0); print "identifier ret;\n" if $p =~ "ret ="; print "@@\n"; if (! defined $newname) { print " $p$f(" . join(", ", @pre) . "\n"; print "+ , NULL\n"; print " , " . join(", ", @post) . ");\n"; } else { print " $p\n"; print "- $f(\n"; print "+ $newname(\n"; print " " . join(", ", (@pre, @post)) . ");\n"; } } } } ------------------8<---------------------- since v7: - Take new drivers (hm1246, it6625, os02g10, dcmipp, imx95) into account in KAPI changes. - Drop the patch adding v4l2_subdev_call_ci_state_try() and v4l2_subdev_call_ci_state_active() in favour of moving the required code to drivers, of which there are one for each (stm32-dcmi and ti cal). - Move dropping set_fmt() in imx678 and ml86v7667 drivers from patch 14 to patch 13. since v6: - imx219: Drop the change of using fll_def of 1762 for a non-binned mode. Having an even value is only relevant for configurations binned by 2 vertically (very special binning). - Add v4l2_subdev_client_info *ci argument get_selection and set_fmt callbacks in imx355 and relevant changes for two newly added drivers (imx471 and imx678). - Introduce check_which_pad_state() helper for checking arguments instead of using funky here-functions for the do_subdev_call() macro in v4l2-subdev.c. - Call the client_caps field in struct v4l2_subdev_client_info caps; the client is already given in the name of the struct. - Prepend the name of the v4l2_subdev_call_drop_fourth() macro with two underscores and so suggest it's for internal, or at least for unusual, use. - Introduce a new patch "media: v4l2-subdev: Don't assign set_fmt where it's equivalent to get_fmt" to drop set_fmt pad op assignments where trivial. - Rewrap the description of "media: v4l2-subdev: Move subdev client capabilities into a new struct". since v5: - Drop imx219 patches changing the vertical blanking margin and the removal of the rate factor. - Introduce new patches for imx219 to fix exposure margin and set blanking control (both HBLANK and VBLANK) step. - Add a wrapper to always call get_fmt() pad op if set_fmt() pad op isn't defined. To enable this, nove the ops NULL-ness check from sub-device call wrapper callers to the call wrappers themselves. Also drop the patch "media: v4l2-subdev: Add v4l2_subdev_get_fmt_ci()" as it is now redundant. - Use client_info pointer whenever available (was often NULL in v5) even when not required, in mali-c55, bcm2835-unicam, ccs, mt9m001, camss-vfe, rzg2l and ti cal drivers. - Separate the frame descriptor patches from the metadata patches -- they'll need more time and likely will be merged later on. since v4: - Merge mergeable patches that have received acks in time. - Drop the VALIDATE_LATE MC link flag from this set. - Move the frame descriptor patches out of the set. - Do not add the client_info argument to the get_fmt() pad op. - Introduce v4l2_subdev_get_fmt_ci() which returns the pad format but uses the same arguments (i.e. also the client info argument) as the set_fmt() pad op. - Call the VISIBLE area in v4 as ACTIVE_AREA (imx219 driver; patch merged). - Set the pixel_rate control's ops to NULL (the control is read-only and not applied on device). - Fix imx219 driver's limits for VBLANK, HBLANK and EXPOSURE controls. - Postpone the patch bumping the STREAMS capability bit. - Fix stopping streams documentation in patch "media: Improve enable_streams and disable_streams documentation". since v3: - Include the patch adding v4l2_subdev_get_frame_desc(); compared to the version posted earlier, this one uses get_fmt() pad op. - Removed kernel-doc documentation from sub-device ops in drivers. These comments are redundant. - Include v4l2_subdev_client_info changes for ov2732 and t4ka3 drivers. - Fix setting media link flags. - Fix the condition for skipping early validation (and doing it later). The old condition sometimes caused the link being validated too early. since v2: - Include imx219 driver fixes accrued during imx219 Common Raw Sensor Model support implementation. This includes fixes to control ranges and the removal of the rate_factor, among other things. - Reword documentation of the VALIDATE_LATE link flag. - Require that VALIDATE_LATE links sink (origin entity in this case) may have a single pad only. - Drop the pipe argument from __media_pipeline_validate_one() as the function doesn't use it. - Fix MUST_CONNECT flag validation for links that also have VALIDATE_LATE flag. - Rename the macros to create wrapper functions, define one for "! defined CONFIG_MEDIA_CONTROLLER" case as well. - Call v4l2_subdev_call_waive_fourth() v4l2_subdev_call_drop_fourth() now. - Comment the link validation code a little better. - Fix copying the routes in the routing cleanup patch (copy the same number of routes as before), rename the function doing it well. Make the new function copy_routes_state_to_routing() to take just routing and state arguments, for all callers have this information. - Add a patch bumping the STREAMS sub-device capability bit and document that bit 0x2 is reserved. since v1: - Address compilation issues. I had only tested on arm64 previously. - Introduce v4l2_subdev_call_ci_state_active(), to call pad ops with client info argument with active state. Getting around needing a new function doesn't seem easy (probably requires one more layer of indirection I'd like to do without). Sakari Ailus (13): media: Documentation: Improve pixel rate calculation documentation media: imx219: Account rate_factor in setting upper exposure limit media: imx219: Account for rate_factor in control steps media: imx219: The horizontal blanking step is 8 media: imx219: Rename "binning" as "bin_hv" in imx219_set_pad_format media: Improve enable_streams and disable_streams documentation media: v4l2-subdev: Move subdev client capabilities into a new struct media: v4l2-subdev: Move op check to sub-device op wrappers media: v4l2-subdev: Always call get_fmt() if set_fmt() is unavailable media: v4l2-subdev: Don't assign set_fmt where it's equivalent to get_fmt media: mt9m001: Pass sub-device state to set_selection() callback media: cvs: Drop comments on sub-device operations media: v4l2-subdev: Add struct v4l2_subdev_client_info pointer to pad ops Documentation/driver-api/media/tx-rx.rst | 6 +- drivers/media/i2c/adv7170.c | 1 + drivers/media/i2c/adv7175.c | 1 + drivers/media/i2c/adv7180.c | 3 +- drivers/media/i2c/adv7183.c | 3 +- drivers/media/i2c/adv748x/adv748x-afe.c | 1 + drivers/media/i2c/adv748x/adv748x-csi2.c | 1 + drivers/media/i2c/adv748x/adv748x-hdmi.c | 1 + drivers/media/i2c/adv7511-v4l2.c | 1 + drivers/media/i2c/adv7604.c | 2 + drivers/media/i2c/adv7842.c | 1 + drivers/media/i2c/ak881x.c | 2 +- drivers/media/i2c/alvium-csi2.c | 3 + drivers/media/i2c/ar0521.c | 1 + drivers/media/i2c/ccs/ccs-core.c | 12 +- drivers/media/i2c/cvs/v4l2.c | 83 +-------- drivers/media/i2c/cx25840/cx25840-core.c | 1 + drivers/media/i2c/ds90ub913.c | 1 + drivers/media/i2c/ds90ub953.c | 1 + drivers/media/i2c/ds90ub960.c | 1 + drivers/media/i2c/et8ek8/et8ek8_driver.c | 1 + drivers/media/i2c/gc0308.c | 1 + drivers/media/i2c/gc0310.c | 2 +- drivers/media/i2c/gc05a2.c | 4 +- drivers/media/i2c/gc08a3.c | 4 +- drivers/media/i2c/gc2145.c | 2 + drivers/media/i2c/hi556.c | 2 + drivers/media/i2c/hi846.c | 2 + drivers/media/i2c/hi847.c | 1 + drivers/media/i2c/hm1246.c | 4 +- drivers/media/i2c/imx111.c | 1 + drivers/media/i2c/imx208.c | 1 + drivers/media/i2c/imx214.c | 4 +- drivers/media/i2c/imx219.c | 42 +++-- drivers/media/i2c/imx258.c | 2 + drivers/media/i2c/imx274.c | 3 + drivers/media/i2c/imx283.c | 2 + drivers/media/i2c/imx290.c | 4 +- drivers/media/i2c/imx296.c | 7 +- drivers/media/i2c/imx319.c | 1 + drivers/media/i2c/imx334.c | 3 +- drivers/media/i2c/imx335.c | 4 +- drivers/media/i2c/imx355.c | 4 +- drivers/media/i2c/imx412.c | 3 +- drivers/media/i2c/imx415.c | 4 +- drivers/media/i2c/imx471.c | 4 +- drivers/media/i2c/imx678.c | 2 +- drivers/media/i2c/isl7998x.c | 1 + drivers/media/i2c/it6625.c | 1 + drivers/media/i2c/lt6911uxe.c | 5 +- drivers/media/i2c/max9286.c | 1 + drivers/media/i2c/max96714.c | 1 + drivers/media/i2c/max96717.c | 1 + drivers/media/i2c/ml86v7667.c | 1 - drivers/media/i2c/mt9m001.c | 9 +- drivers/media/i2c/mt9m111.c | 3 + drivers/media/i2c/mt9m114.c | 6 + drivers/media/i2c/mt9p031.c | 3 + drivers/media/i2c/mt9t112.c | 3 + drivers/media/i2c/mt9v011.c | 1 + drivers/media/i2c/mt9v032.c | 3 + drivers/media/i2c/mt9v111.c | 1 + drivers/media/i2c/og01a1b.c | 3 +- drivers/media/i2c/og0ve1b.c | 3 +- drivers/media/i2c/os02g10.c | 4 +- drivers/media/i2c/os05b10.c | 2 + drivers/media/i2c/ov01a10.c | 3 + drivers/media/i2c/ov02a10.c | 3 +- drivers/media/i2c/ov02c10.c | 1 + drivers/media/i2c/ov02e10.c | 1 + drivers/media/i2c/ov08d10.c | 1 + drivers/media/i2c/ov08x40.c | 1 + drivers/media/i2c/ov13858.c | 1 + drivers/media/i2c/ov13b10.c | 1 + drivers/media/i2c/ov2640.c | 2 + drivers/media/i2c/ov2659.c | 1 + drivers/media/i2c/ov2680.c | 3 + drivers/media/i2c/ov2685.c | 2 + drivers/media/i2c/ov2732.c | 4 +- drivers/media/i2c/ov2735.c | 4 +- drivers/media/i2c/ov2740.c | 1 + drivers/media/i2c/ov4689.c | 2 + drivers/media/i2c/ov5640.c | 2 + drivers/media/i2c/ov5645.c | 4 +- drivers/media/i2c/ov5647.c | 2 + drivers/media/i2c/ov5648.c | 1 + drivers/media/i2c/ov5670.c | 2 + drivers/media/i2c/ov5675.c | 2 + drivers/media/i2c/ov5693.c | 3 + drivers/media/i2c/ov5695.c | 1 + drivers/media/i2c/ov6211.c | 3 +- drivers/media/i2c/ov64a40.c | 2 + drivers/media/i2c/ov7251.c | 4 +- drivers/media/i2c/ov7670.c | 1 + drivers/media/i2c/ov772x.c | 2 + drivers/media/i2c/ov7740.c | 1 + drivers/media/i2c/ov8856.c | 1 + drivers/media/i2c/ov8858.c | 3 +- drivers/media/i2c/ov8865.c | 2 + drivers/media/i2c/ov9282.c | 4 +- drivers/media/i2c/ov9640.c | 2 + drivers/media/i2c/ov9650.c | 1 + drivers/media/i2c/ov9734.c | 1 + drivers/media/i2c/rdacm20.c | 1 - drivers/media/i2c/rdacm21.c | 1 - drivers/media/i2c/rj54n1cb0c.c | 3 + drivers/media/i2c/s5c73m3/s5c73m3-core.c | 2 + drivers/media/i2c/s5k3m5.c | 4 +- drivers/media/i2c/s5k5baf.c | 3 + drivers/media/i2c/s5k6a3.c | 1 + drivers/media/i2c/s5kjn1.c | 4 +- drivers/media/i2c/saa6752hs.c | 1 + drivers/media/i2c/saa7115.c | 1 + drivers/media/i2c/saa717x.c | 1 + drivers/media/i2c/st-mipid02.c | 1 + drivers/media/i2c/t4ka3.c | 3 + drivers/media/i2c/tc358743.c | 1 + drivers/media/i2c/tc358746.c | 1 + drivers/media/i2c/tda1997x.c | 1 + drivers/media/i2c/thp7312.c | 1 + drivers/media/i2c/tvp514x.c | 1 + drivers/media/i2c/tvp5150.c | 3 +- drivers/media/i2c/tvp7002.c | 1 + drivers/media/i2c/tw9900.c | 1 + drivers/media/i2c/tw9910.c | 2 + drivers/media/i2c/vd55g1.c | 4 +- drivers/media/i2c/vd56g3.c | 4 +- drivers/media/i2c/vgxy61.c | 4 +- drivers/media/pci/cobalt/cobalt-driver.c | 8 +- drivers/media/pci/cobalt/cobalt-v4l2.c | 10 +- drivers/media/pci/cx18/cx18-av-core.c | 1 + drivers/media/pci/cx18/cx18-controls.c | 2 +- drivers/media/pci/cx18/cx18-ioctl.c | 2 +- drivers/media/pci/cx23885/cx23885-video.c | 4 +- drivers/media/pci/intel/ipu3/ipu3-cio2.c | 1 + drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c | 2 + .../media/pci/intel/ipu6/ipu6-isys-subdev.c | 1 + .../media/pci/intel/ipu6/ipu6-isys-subdev.h | 1 + drivers/media/pci/intel/ivsc/mei_csi.c | 1 + drivers/media/pci/ivtv/ivtv-controls.c | 2 +- drivers/media/pci/ivtv/ivtv-ioctl.c | 2 +- drivers/media/pci/saa7134/saa7134-empress.c | 4 +- drivers/media/platform/amd/isp4/isp4_subdev.c | 1 + drivers/media/platform/amd/isp4/isp4_video.c | 2 +- .../platform/amlogic/c3/isp/c3-isp-core.c | 1 + .../platform/amlogic/c3/isp/c3-isp-resizer.c | 3 + .../amlogic/c3/mipi-adapter/c3-mipi-adap.c | 1 + .../amlogic/c3/mipi-csi2/c3-mipi-csi2.c | 1 + .../platform/arm/mali-c55/mali-c55-isp.c | 3 + .../platform/arm/mali-c55/mali-c55-resizer.c | 15 +- .../platform/arm/mali-c55/mali-c55-tpg.c | 1 + drivers/media/platform/atmel/atmel-isi.c | 4 +- .../media/platform/broadcom/bcm2835-unicam.c | 1 + drivers/media/platform/cadence/cdns-csi2rx.c | 1 + drivers/media/platform/cadence/cdns-csi2tx.c | 1 + drivers/media/platform/intel/pxa_camera.c | 6 +- drivers/media/platform/marvell/mcam-core.c | 4 +- .../platform/microchip/microchip-csi2dc.c | 1 + .../platform/microchip/microchip-isc-scaler.c | 2 + drivers/media/platform/nxp/imx-mipi-csis.c | 3 +- drivers/media/platform/nxp/imx7-media-csi.c | 1 + .../platform/nxp/imx8-isi/imx8-isi-crossbar.c | 1 + .../platform/nxp/imx8-isi/imx8-isi-pipe.c | 3 + drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 1 + .../media/platform/nxp/imx95-csi-formatter.c | 1 + .../media/platform/qcom/camss/camss-csid.c | 3 +- .../media/platform/qcom/camss/camss-csiphy.c | 3 +- .../media/platform/qcom/camss/camss-ispif.c | 3 +- drivers/media/platform/qcom/camss/camss-tpg.c | 3 +- drivers/media/platform/qcom/camss/camss-vfe.c | 12 +- .../media/platform/raspberrypi/rp1-cfe/csi2.c | 1 + .../platform/raspberrypi/rp1-cfe/pisp-fe.c | 1 + drivers/media/platform/renesas/rcar-csi2.c | 1 + .../media/platform/renesas/rcar-isp/csisp.c | 1 + drivers/media/platform/renesas/renesas-ceu.c | 7 +- .../platform/renesas/rzg2l-cru/rzg2l-csi2.c | 3 +- .../platform/renesas/rzg2l-cru/rzg2l-ip.c | 3 +- .../renesas/rzv2h-ivc/rzv2h-ivc-subdev.c | 1 + drivers/media/platform/renesas/sh_vou.c | 6 +- .../media/platform/renesas/vsp1/vsp1_brx.c | 3 + .../media/platform/renesas/vsp1/vsp1_drm.c | 18 +- .../media/platform/renesas/vsp1/vsp1_entity.c | 4 +- .../media/platform/renesas/vsp1/vsp1_entity.h | 1 + .../media/platform/renesas/vsp1/vsp1_histo.c | 3 + .../media/platform/renesas/vsp1/vsp1_hsit.c | 1 + .../media/platform/renesas/vsp1/vsp1_rwpf.c | 3 + .../media/platform/renesas/vsp1/vsp1_sru.c | 1 + .../media/platform/renesas/vsp1/vsp1_uds.c | 1 + .../media/platform/renesas/vsp1/vsp1_uif.c | 2 + .../media/platform/renesas/vsp1/vsp1_vspx.c | 3 +- .../platform/rockchip/rkcif/rkcif-interface.c | 3 + .../platform/rockchip/rkisp1/rkisp1-csi.c | 1 + .../platform/rockchip/rkisp1/rkisp1-isp.c | 3 + .../platform/rockchip/rkisp1/rkisp1-resizer.c | 3 + .../samsung/exynos4-is/fimc-capture.c | 8 +- .../platform/samsung/exynos4-is/fimc-isp.c | 1 + .../platform/samsung/exynos4-is/fimc-lite.c | 3 + .../platform/samsung/exynos4-is/mipi-csis.c | 1 + .../samsung/s3c-camif/camif-capture.c | 3 + .../platform/samsung/s3c-camif/camif-core.c | 2 +- drivers/media/platform/st/stm32/stm32-csi.c | 1 + drivers/media/platform/st/stm32/stm32-dcmi.c | 31 +++- .../st/stm32/stm32-dcmipp/dcmipp-byteproc.c | 3 + .../st/stm32/stm32-dcmipp/dcmipp-input.c | 1 + .../st/stm32/stm32-dcmipp/dcmipp-isp.c | 2 + .../stm32/stm32-dcmipp/dcmipp-pixelcommon.c | 1 + .../stm32/stm32-dcmipp/dcmipp-pixelcommon.h | 1 + .../st/stm32/stm32-dcmipp/dcmipp-pixelproc.c | 2 + .../platform/sunxi/sun4i-csi/sun4i_v4l2.c | 1 + .../sunxi/sun6i-csi/sun6i_csi_bridge.c | 1 + .../sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 1 + .../sun8i_a83t_mipi_csi2.c | 1 + .../media/platform/synopsys/dw-mipi-csi2rx.c | 1 + .../media/platform/ti/am437x/am437x-vpfe.c | 2 +- drivers/media/platform/ti/cal/cal-camerarx.c | 1 + drivers/media/platform/ti/cal/cal-video.c | 21 ++- .../platform/ti/j721e-csi2rx/j721e-csi2rx.c | 1 + drivers/media/platform/ti/omap3isp/ispccdc.c | 5 +- drivers/media/platform/ti/omap3isp/ispccp2.c | 3 +- drivers/media/platform/ti/omap3isp/ispcsi2.c | 3 +- .../media/platform/ti/omap3isp/isppreview.c | 5 +- .../media/platform/ti/omap3isp/ispresizer.c | 5 +- drivers/media/platform/ti/omap3isp/ispvideo.c | 4 +- drivers/media/platform/ti/vpe/vip.c | 4 +- drivers/media/platform/via/via-camera.c | 4 +- drivers/media/platform/video-mux.c | 1 + .../media/platform/xilinx/xilinx-csi2rxss.c | 1 + drivers/media/platform/xilinx/xilinx-tpg.c | 1 + .../media/test-drivers/vimc/vimc-debayer.c | 1 + drivers/media/test-drivers/vimc/vimc-scaler.c | 3 + drivers/media/test-drivers/vimc/vimc-sensor.c | 1 + drivers/media/usb/cx231xx/cx231xx-417.c | 2 +- drivers/media/usb/cx231xx/cx231xx-video.c | 4 +- drivers/media/usb/dvb-usb/cxusb-analog.c | 6 +- drivers/media/usb/em28xx/em28xx-camera.c | 2 +- drivers/media/usb/go7007/go7007-v4l2.c | 2 +- drivers/media/usb/go7007/s2250-board.c | 1 + drivers/media/usb/pvrusb2/pvrusb2-hdw.c | 2 +- drivers/media/v4l2-core/v4l2-subdev.c | 163 ++++++++++++------ .../media/atomisp/i2c/atomisp-gc2235.c | 1 + .../media/atomisp/i2c/atomisp-ov2722.c | 1 + .../staging/media/atomisp/pci/atomisp_cmd.c | 16 +- .../staging/media/atomisp/pci/atomisp_csi2.c | 1 + .../media/atomisp/pci/atomisp_subdev.c | 3 + .../staging/media/atomisp/pci/atomisp_v4l2.c | 8 +- drivers/staging/media/imx/imx-ic-prp.c | 1 + drivers/staging/media/imx/imx-ic-prpencvf.c | 1 + drivers/staging/media/imx/imx-media-csi.c | 3 + drivers/staging/media/imx/imx-media-vdic.c | 1 + drivers/staging/media/imx/imx6-mipi-csi2.c | 1 + drivers/staging/media/ipu3/ipu3-v4l2.c | 3 + drivers/staging/media/ipu7/ipu7-isys-csi2.c | 2 + drivers/staging/media/ipu7/ipu7-isys-subdev.c | 1 + drivers/staging/media/ipu7/ipu7-isys-subdev.h | 1 + drivers/staging/media/max96712/max96712.c | 1 - .../media/sunxi/sun6i-isp/sun6i_isp_proc.c | 1 + drivers/staging/media/tegra-video/csi.c | 1 + drivers/staging/media/tegra-video/vi.c | 10 +- include/media/v4l2-subdev.h | 34 +++- 259 files changed, 714 insertions(+), 304 deletions(-) base-commit: b38d06ad1e13c32970d58039c154f009b81a3368 -- 2.47.3