From: Hans Verkuil <hverkuil+cisco@kernel.org>
To: "Jacopo Mondi" <jacopo.mondi@ideasonboard.com>,
"Mauro Carvalho Chehab" <mchehab@kernel.org>,
"Devarsh Thakkar" <devarsht@ti.com>,
"Benoit Parrot" <bparrot@ti.com>,
"Hans Verkuil" <hverkuil@kernel.org>,
"Mike Isely" <isely@pobox.com>,
"Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
"Hans de Goede" <hansg@kernel.org>,
"Parthiban Veerasooran" <parthiban.veerasooran@microchip.com>,
"Christian Gromm" <christian.gromm@microchip.com>,
"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
"Alex Shi" <alexs@kernel.org>,
"Yanteng Si" <si.yanteng@linux.dev>,
"Dongliang Mu" <dzm91@hust.edu.cn>,
"Jonathan Corbet" <corbet@lwn.net>,
"Tomasz Figa" <tfiga@chromium.org>,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Andy Walls" <awalls@md.metrocast.net>,
"Michael Tretter" <m.tretter@pengutronix.de>,
"Pengutronix Kernel Team" <kernel@pengutronix.de>,
"Bin Liu" <bin.liu@mediatek.com>,
"Matthias Brugger" <matthias.bgg@gmail.com>,
"AngeloGioacchino Del Regno"
<angelogioacchino.delregno@collabora.com>,
"Dmitry Osipenko" <digetx@gmail.com>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Jonathan Hunter" <jonathanh@nvidia.com>,
"Mirela Rabulea" <mirela.rabulea@nxp.com>,
"Shawn Guo" <shawnguo@kernel.org>,
"Sascha Hauer" <s.hauer@pengutronix.de>,
"Fabio Estevam" <festevam@gmail.com>,
"Kieran Bingham" <kieran.bingham+renesas@ideasonboard.com>,
"Michal Simek" <michal.simek@amd.com>,
"Ming Qian" <ming.qian@nxp.com>, "Zhou Peng" <eagle.zhou@nxp.com>,
"Xavier Roumegue" <xavier.roumegue@oss.nxp.com>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
"Vikash Garodia" <quic_vgarodia@quicinc.com>,
"Dikshita Agarwal" <quic_dikshita@quicinc.com>,
"Abhinav Kumar" <abhinav.kumar@linux.dev>,
"Bryan O'Donoghue" <bryan.odonoghue@linaro.org>,
"Sylwester Nawrocki" <sylvester.nawrocki@gmail.com>,
"Jernej Skrabec" <jernej.skrabec@gmail.com>,
"Chen-Yu Tsai" <wens@csie.org>,
"Samuel Holland" <samuel@sholland.org>,
"Daniel Almeida" <daniel.almeida@collabora.com>,
"Neil Armstrong" <neil.armstrong@linaro.org>,
"Kevin Hilman" <khilman@baylibre.com>,
"Jerome Brunet" <jbrunet@baylibre.com>,
"Martin Blumenstingl" <martin.blumenstingl@googlemail.com>,
"Nas Chung" <nas.chung@chipsnmedia.com>,
"Jackson Lee" <jackson.lee@chipsnmedia.com>,
"Minghsiu Tsai" <minghsiu.tsai@mediatek.com>,
"Houlong Wei" <houlong.wei@mediatek.com>,
"Andrew-CT Chen" <andrew-ct.chen@mediatek.com>,
"Tiffany Lin" <tiffany.lin@mediatek.com>,
"Yunfei Dong" <yunfei.dong@mediatek.com>,
"Geert Uytterhoeven" <geert+renesas@glider.be>,
"Magnus Damm" <magnus.damm@gmail.com>,
"Mikhail Ulyanov" <mikhail.ulyanov@cogentembedded.com>,
"Jacob Chen" <jacob-chen@iotwrt.com>,
"Ezequiel Garcia" <ezequiel@vanguardiasur.com.ar>,
"Heiko Stuebner" <heiko@sntech.de>,
"Detlev Casanova" <detlev.casanova@collabora.com>,
"Krzysztof Kozlowski" <krzk@kernel.org>,
"Alim Akhtar" <alim.akhtar@samsung.com>,
"Sylwester Nawrocki" <s.nawrocki@samsung.com>,
"Łukasz Stelmach" <l.stelmach@samsung.com>,
"Andrzej Pietrasiewicz" <andrzejtp2010@gmail.com>,
"Jacek Anaszewski" <jacek.anaszewski@gmail.com>,
"Andrzej Hajda" <andrzej.hajda@intel.com>,
"Fabien Dessenne" <fabien.dessenne@foss.st.com>,
"Hugues Fruchet" <hugues.fruchet@foss.st.com>,
"Jean-Christophe Trotin" <jean-christophe.trotin@foss.st.com>,
"Maxime Coquelin" <mcoquelin.stm32@gmail.com>,
"Alexandre Torgue" <alexandre.torgue@foss.st.com>,
"Nicolas Dufresne" <nicolas.dufresne@collabora.com>,
"Benjamin Gaignard" <benjamin.gaignard@collabora.com>,
"Steve Longerbeam" <slongerbeam@gmail.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Paul Kocialkowski" <paulk@sys-base.io>,
"Niklas Söderlund" <niklas.soderlund@ragnatech.se>,
"Robert Foss" <rfoss@kernel.org>,
"Todor Tomov" <todor.too@gmail.com>,
"Vladimir Zapolskiy" <vladimir.zapolskiy@linaro.org>,
"Corentin Labbe" <clabbe@baylibre.com>,
"Sakari Ailus" <sakari.ailus@linux.intel.com>,
"Bingbu Cao" <bingbu.cao@intel.com>,
"Tianshu Qiu" <tian.shu.qiu@intel.com>,
"Stanislaw Gruszka" <stanislaw.gruszka@linux.intel.com>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-staging@lists.linux.dev, linux-doc@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, linux-tegra@vger.kernel.org,
imx@lists.linux.dev, linux-renesas-soc@vger.kernel.org,
linux-arm-msm@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
linux-sunxi@lists.linux.dev, linux-usb@vger.kernel.org,
linux-amlogic@lists.infradead.org,
linux-rockchip@lists.infradead.org,
linux-stm32@st-md-mailman.stormreply.com,
mjpeg-users@lists.sourceforge.net
Subject: Re: [PATCH 65/65] media: v4l2-ioctl: Stop passing fh pointer to ioctl handlers
Date: Thu, 7 Aug 2025 09:58:34 +0200 [thread overview]
Message-ID: <28ddf35a-3e7a-4470-8305-c64a551fd8c7@kernel.org> (raw)
In-Reply-To: <5bda2b73-0538-41d1-b065-9b541a027475@kernel.org>
On 07/08/2025 09:26, Hans Verkuil wrote:
> On 02/08/2025 11:23, Jacopo Mondi wrote:
>> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>>
>> Now that all drivers access the v4l2_fh from the file structure, there
>> is no need to pass it as an explicit argument to ioctl handlers. Set the
>> argument to NULL in the w__video_do_ioctl(), and drop the name of the
>> void *fh argument in the ioctl handler declarations to indicate it is
>> not used.
>>
>> The argument could be removed altogether with a mechanical change
>> (probably using coccinelle), but there are plans to pass a new argument
>> to the ioctl handlers in the near future. The tree-wide change to remove
>> the argument, only to add another one soon after, would be too much
>> churn.
>>
>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
>> ---
>> drivers/media/v4l2-core/v4l2-ioctl.c | 5 +-
>> include/media/v4l2-ioctl.h | 236 +++++++++++++++++------------------
>> 2 files changed, 120 insertions(+), 121 deletions(-)
>>
>> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
>> index 44c2f5ef3dae407d9786c5278d13efc982be2ff0..248a0b5b56ec7a09f2d4c61114f81aa5a9b8b041 100644
>> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
>> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
>> @@ -3078,7 +3078,6 @@ static long __video_do_ioctl(struct file *file,
>> bool write_only = false;
>> struct v4l2_ioctl_info default_info;
>> const struct v4l2_ioctl_info *info;
>> - void *fh = file_to_v4l2_fh(file);
>> struct v4l2_fh *vfh = NULL;
>> int dev_debug = vfd->dev_debug;
>> long ret = -ENOTTY;
>> @@ -3140,11 +3139,11 @@ static long __video_do_ioctl(struct file *file,
>>
>> write_only = _IOC_DIR(cmd) == _IOC_WRITE;
>> if (info != &default_info) {
>> - ret = info->func(ops, file, fh, arg);
>> + ret = info->func(ops, file, NULL, arg);
>> } else if (!ops->vidioc_default) {
>> ret = -ENOTTY;
>> } else {
>> - ret = ops->vidioc_default(file, fh,
>> + ret = ops->vidioc_default(file, NULL,
>> vfh ? v4l2_prio_check(vfd->prio, vfh->prio) >= 0 : 0,
>> cmd, arg);
>> }
>
> drivers/media/v4l2-core/v4l2-compat-ioctl32.c also calls ops->vidioc_query_ext_ctrl
> directly, but still passes the fh as second argument: that needs to be replaced by
> a NULL pointer as well. That should be fixed in this patch as well.
>
> Regarding v4l2-ioctl.c: I would like a follow-up patch that pushes the NULL pointer
> down into each ioctl helper function. I.e. drop the 'void *fh' argument in the
> struct v4l2_ioctl_info 'func' callback, and all callbacks like v4l_g_fmt() just
> replace 'fh' by 'NULL' when they call the vidioc op.
>
> Part of it is that the core functions currently suggest that the second argument is
> a filehandle (since it's still named 'fh'), which is obviously wrong. And I also think
> that the core framework shouldn't use a dummy second argument at all. I admit that
> changing all vidioc callbacks in the whole subsystem to drop the second argument is
> too much churn, but for this core file I think it is something that should be done.
A follow-up on this: I would not be against a large patch that drops the second priv
argument from all vidioc ops since it is now unused. If nothing else, it helps ensure
that it is really unused by all drivers :-)
But if you don't want to go there, then there is something that I think need to be addressed:
a lot of drivers name the second argument 'fh' or '_fh' or even 'fh0'. Can we add a patch that
renames the second arg to 'priv'?
At minimum I think this should be done for drivers/media/test-drivers and
samples/v4l/v4l2-pci-skeleton.c. These drivers are often used as reference drivers,
so they should be up-to-date.
I would also suggest to do this for uvc since it is by far the most widely used media
driver.
I also see the use of 'fh' in v4l2-mem2mem.c in a few places.
Regards,
Hans
>
> Regards,
>
> Hans
>
>> diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
>> index 82695c3a300a73219f262fb556ed61a8f09d273e..223e2c7a3516fc96fb486ab64226163e52f775a6 100644
>> --- a/include/media/v4l2-ioctl.h
>> +++ b/include/media/v4l2-ioctl.h
>> @@ -293,144 +293,144 @@ struct v4l2_ioctl_ops {
>> /* ioctl callbacks */
>>
>> /* VIDIOC_QUERYCAP handler */
>> - int (*vidioc_querycap)(struct file *file, void *fh,
>> + int (*vidioc_querycap)(struct file *file, void *,
>> struct v4l2_capability *cap);
>>
>> /* VIDIOC_ENUM_FMT handlers */
>> - int (*vidioc_enum_fmt_vid_cap)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_vid_cap)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>> - int (*vidioc_enum_fmt_vid_overlay)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_vid_overlay)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>> - int (*vidioc_enum_fmt_vid_out)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_vid_out)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>> - int (*vidioc_enum_fmt_sdr_cap)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_sdr_cap)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>> - int (*vidioc_enum_fmt_sdr_out)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_sdr_out)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>> - int (*vidioc_enum_fmt_meta_cap)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_meta_cap)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>> - int (*vidioc_enum_fmt_meta_out)(struct file *file, void *fh,
>> + int (*vidioc_enum_fmt_meta_out)(struct file *file, void *,
>> struct v4l2_fmtdesc *f);
>>
>> /* VIDIOC_G_FMT handlers */
>> - int (*vidioc_g_fmt_vid_cap)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vid_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vid_overlay)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vid_overlay)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vid_out)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vid_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vid_out_overlay)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vid_out_overlay)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vbi_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vbi_out)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vbi_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_sliced_vbi_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_sliced_vbi_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vid_cap_mplane)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vid_cap_mplane)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_sdr_cap)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_sdr_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_sdr_out)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_sdr_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_meta_cap)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_meta_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_g_fmt_meta_out)(struct file *file, void *fh,
>> + int (*vidioc_g_fmt_meta_out)(struct file *file, void *,
>> struct v4l2_format *f);
>>
>> /* VIDIOC_S_FMT handlers */
>> - int (*vidioc_s_fmt_vid_cap)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vid_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vid_overlay)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vid_overlay)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vid_out)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vid_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vid_out_overlay)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vid_out_overlay)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vbi_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vbi_out)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vbi_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_sliced_vbi_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_sliced_vbi_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vid_cap_mplane)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vid_cap_mplane)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_sdr_cap)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_sdr_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_sdr_out)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_sdr_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_meta_cap)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_meta_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_s_fmt_meta_out)(struct file *file, void *fh,
>> + int (*vidioc_s_fmt_meta_out)(struct file *file, void *,
>> struct v4l2_format *f);
>>
>> /* VIDIOC_TRY_FMT handlers */
>> - int (*vidioc_try_fmt_vid_cap)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vid_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vid_overlay)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vid_overlay)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vid_out)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vid_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vid_out_overlay)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vid_out_overlay)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vbi_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vbi_out)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vbi_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_sliced_vbi_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_sliced_vbi_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vid_cap_mplane)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vid_cap_mplane)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_sdr_cap)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_sdr_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_sdr_out)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_sdr_out)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_meta_cap)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_meta_cap)(struct file *file, void *,
>> struct v4l2_format *f);
>> - int (*vidioc_try_fmt_meta_out)(struct file *file, void *fh,
>> + int (*vidioc_try_fmt_meta_out)(struct file *file, void *,
>> struct v4l2_format *f);
>>
>> /* Buffer handlers */
>> - int (*vidioc_reqbufs)(struct file *file, void *fh,
>> + int (*vidioc_reqbufs)(struct file *file, void *,
>> struct v4l2_requestbuffers *b);
>> - int (*vidioc_querybuf)(struct file *file, void *fh,
>> + int (*vidioc_querybuf)(struct file *file, void *,
>> struct v4l2_buffer *b);
>> - int (*vidioc_qbuf)(struct file *file, void *fh,
>> + int (*vidioc_qbuf)(struct file *file, void *,
>> struct v4l2_buffer *b);
>> - int (*vidioc_expbuf)(struct file *file, void *fh,
>> + int (*vidioc_expbuf)(struct file *file, void *,
>> struct v4l2_exportbuffer *e);
>> - int (*vidioc_dqbuf)(struct file *file, void *fh,
>> + int (*vidioc_dqbuf)(struct file *file, void *,
>> struct v4l2_buffer *b);
>>
>> - int (*vidioc_create_bufs)(struct file *file, void *fh,
>> + int (*vidioc_create_bufs)(struct file *file, void *,
>> struct v4l2_create_buffers *b);
>> - int (*vidioc_prepare_buf)(struct file *file, void *fh,
>> + int (*vidioc_prepare_buf)(struct file *file, void *,
>> struct v4l2_buffer *b);
>> - int (*vidioc_remove_bufs)(struct file *file, void *fh,
>> + int (*vidioc_remove_bufs)(struct file *file, void *,
>> struct v4l2_remove_buffers *d);
>>
>> - int (*vidioc_overlay)(struct file *file, void *fh, unsigned int i);
>> - int (*vidioc_g_fbuf)(struct file *file, void *fh,
>> + int (*vidioc_overlay)(struct file *file, void *, unsigned int i);
>> + int (*vidioc_g_fbuf)(struct file *file, void *,
>> struct v4l2_framebuffer *a);
>> - int (*vidioc_s_fbuf)(struct file *file, void *fh,
>> + int (*vidioc_s_fbuf)(struct file *file, void *,
>> const struct v4l2_framebuffer *a);
>>
>> /* Stream on/off */
>> - int (*vidioc_streamon)(struct file *file, void *fh,
>> + int (*vidioc_streamon)(struct file *file, void *,
>> enum v4l2_buf_type i);
>> - int (*vidioc_streamoff)(struct file *file, void *fh,
>> + int (*vidioc_streamoff)(struct file *file, void *,
>> enum v4l2_buf_type i);
>>
>> /*
>> @@ -438,135 +438,135 @@ struct v4l2_ioctl_ops {
>> *
>> * Note: ENUMSTD is handled by videodev.c
>> */
>> - int (*vidioc_g_std)(struct file *file, void *fh, v4l2_std_id *norm);
>> - int (*vidioc_s_std)(struct file *file, void *fh, v4l2_std_id norm);
>> - int (*vidioc_querystd)(struct file *file, void *fh, v4l2_std_id *a);
>> + int (*vidioc_g_std)(struct file *file, void *, v4l2_std_id *norm);
>> + int (*vidioc_s_std)(struct file *file, void *, v4l2_std_id norm);
>> + int (*vidioc_querystd)(struct file *file, void *, v4l2_std_id *a);
>>
>> /* Input handling */
>> - int (*vidioc_enum_input)(struct file *file, void *fh,
>> + int (*vidioc_enum_input)(struct file *file, void *,
>> struct v4l2_input *inp);
>> - int (*vidioc_g_input)(struct file *file, void *fh, unsigned int *i);
>> - int (*vidioc_s_input)(struct file *file, void *fh, unsigned int i);
>> + int (*vidioc_g_input)(struct file *file, void *, unsigned int *i);
>> + int (*vidioc_s_input)(struct file *file, void *, unsigned int i);
>>
>> /* Output handling */
>> - int (*vidioc_enum_output)(struct file *file, void *fh,
>> + int (*vidioc_enum_output)(struct file *file, void *,
>> struct v4l2_output *a);
>> - int (*vidioc_g_output)(struct file *file, void *fh, unsigned int *i);
>> - int (*vidioc_s_output)(struct file *file, void *fh, unsigned int i);
>> + int (*vidioc_g_output)(struct file *file, void *, unsigned int *i);
>> + int (*vidioc_s_output)(struct file *file, void *, unsigned int i);
>>
>> /* Control handling */
>> - int (*vidioc_query_ext_ctrl)(struct file *file, void *fh,
>> + int (*vidioc_query_ext_ctrl)(struct file *file, void *,
>> struct v4l2_query_ext_ctrl *a);
>> - int (*vidioc_g_ext_ctrls)(struct file *file, void *fh,
>> + int (*vidioc_g_ext_ctrls)(struct file *file, void *,
>> struct v4l2_ext_controls *a);
>> - int (*vidioc_s_ext_ctrls)(struct file *file, void *fh,
>> + int (*vidioc_s_ext_ctrls)(struct file *file, void *,
>> struct v4l2_ext_controls *a);
>> - int (*vidioc_try_ext_ctrls)(struct file *file, void *fh,
>> + int (*vidioc_try_ext_ctrls)(struct file *file, void *,
>> struct v4l2_ext_controls *a);
>> - int (*vidioc_querymenu)(struct file *file, void *fh,
>> + int (*vidioc_querymenu)(struct file *file, void *,
>> struct v4l2_querymenu *a);
>>
>> /* Audio ioctls */
>> - int (*vidioc_enumaudio)(struct file *file, void *fh,
>> + int (*vidioc_enumaudio)(struct file *file, void *,
>> struct v4l2_audio *a);
>> - int (*vidioc_g_audio)(struct file *file, void *fh,
>> + int (*vidioc_g_audio)(struct file *file, void *,
>> struct v4l2_audio *a);
>> - int (*vidioc_s_audio)(struct file *file, void *fh,
>> + int (*vidioc_s_audio)(struct file *file, void *,
>> const struct v4l2_audio *a);
>>
>> /* Audio out ioctls */
>> - int (*vidioc_enumaudout)(struct file *file, void *fh,
>> + int (*vidioc_enumaudout)(struct file *file, void *,
>> struct v4l2_audioout *a);
>> - int (*vidioc_g_audout)(struct file *file, void *fh,
>> + int (*vidioc_g_audout)(struct file *file, void *,
>> struct v4l2_audioout *a);
>> - int (*vidioc_s_audout)(struct file *file, void *fh,
>> + int (*vidioc_s_audout)(struct file *file, void *,
>> const struct v4l2_audioout *a);
>> - int (*vidioc_g_modulator)(struct file *file, void *fh,
>> + int (*vidioc_g_modulator)(struct file *file, void *,
>> struct v4l2_modulator *a);
>> - int (*vidioc_s_modulator)(struct file *file, void *fh,
>> + int (*vidioc_s_modulator)(struct file *file, void *,
>> const struct v4l2_modulator *a);
>> /* Crop ioctls */
>> - int (*vidioc_g_pixelaspect)(struct file *file, void *fh,
>> + int (*vidioc_g_pixelaspect)(struct file *file, void *,
>> int buf_type, struct v4l2_fract *aspect);
>> - int (*vidioc_g_selection)(struct file *file, void *fh,
>> + int (*vidioc_g_selection)(struct file *file, void *,
>> struct v4l2_selection *s);
>> - int (*vidioc_s_selection)(struct file *file, void *fh,
>> + int (*vidioc_s_selection)(struct file *file, void *,
>> struct v4l2_selection *s);
>> /* Compression ioctls */
>> - int (*vidioc_g_jpegcomp)(struct file *file, void *fh,
>> + int (*vidioc_g_jpegcomp)(struct file *file, void *,
>> struct v4l2_jpegcompression *a);
>> - int (*vidioc_s_jpegcomp)(struct file *file, void *fh,
>> + int (*vidioc_s_jpegcomp)(struct file *file, void *,
>> const struct v4l2_jpegcompression *a);
>> - int (*vidioc_g_enc_index)(struct file *file, void *fh,
>> + int (*vidioc_g_enc_index)(struct file *file, void *,
>> struct v4l2_enc_idx *a);
>> - int (*vidioc_encoder_cmd)(struct file *file, void *fh,
>> + int (*vidioc_encoder_cmd)(struct file *file, void *,
>> struct v4l2_encoder_cmd *a);
>> - int (*vidioc_try_encoder_cmd)(struct file *file, void *fh,
>> + int (*vidioc_try_encoder_cmd)(struct file *file, void *,
>> struct v4l2_encoder_cmd *a);
>> - int (*vidioc_decoder_cmd)(struct file *file, void *fh,
>> + int (*vidioc_decoder_cmd)(struct file *file, void *,
>> struct v4l2_decoder_cmd *a);
>> - int (*vidioc_try_decoder_cmd)(struct file *file, void *fh,
>> + int (*vidioc_try_decoder_cmd)(struct file *file, void *,
>> struct v4l2_decoder_cmd *a);
>>
>> /* Stream type-dependent parameter ioctls */
>> - int (*vidioc_g_parm)(struct file *file, void *fh,
>> + int (*vidioc_g_parm)(struct file *file, void *,
>> struct v4l2_streamparm *a);
>> - int (*vidioc_s_parm)(struct file *file, void *fh,
>> + int (*vidioc_s_parm)(struct file *file, void *,
>> struct v4l2_streamparm *a);
>>
>> /* Tuner ioctls */
>> - int (*vidioc_g_tuner)(struct file *file, void *fh,
>> + int (*vidioc_g_tuner)(struct file *file, void *,
>> struct v4l2_tuner *a);
>> - int (*vidioc_s_tuner)(struct file *file, void *fh,
>> + int (*vidioc_s_tuner)(struct file *file, void *,
>> const struct v4l2_tuner *a);
>> - int (*vidioc_g_frequency)(struct file *file, void *fh,
>> + int (*vidioc_g_frequency)(struct file *file, void *,
>> struct v4l2_frequency *a);
>> - int (*vidioc_s_frequency)(struct file *file, void *fh,
>> + int (*vidioc_s_frequency)(struct file *file, void *,
>> const struct v4l2_frequency *a);
>> - int (*vidioc_enum_freq_bands)(struct file *file, void *fh,
>> + int (*vidioc_enum_freq_bands)(struct file *file, void *,
>> struct v4l2_frequency_band *band);
>>
>> /* Sliced VBI cap */
>> - int (*vidioc_g_sliced_vbi_cap)(struct file *file, void *fh,
>> + int (*vidioc_g_sliced_vbi_cap)(struct file *file, void *,
>> struct v4l2_sliced_vbi_cap *a);
>>
>> /* Log status ioctl */
>> - int (*vidioc_log_status)(struct file *file, void *fh);
>> + int (*vidioc_log_status)(struct file *file, void *);
>>
>> - int (*vidioc_s_hw_freq_seek)(struct file *file, void *fh,
>> + int (*vidioc_s_hw_freq_seek)(struct file *file, void *,
>> const struct v4l2_hw_freq_seek *a);
>>
>> /* Debugging ioctls */
>> #ifdef CONFIG_VIDEO_ADV_DEBUG
>> - int (*vidioc_g_register)(struct file *file, void *fh,
>> + int (*vidioc_g_register)(struct file *file, void *,
>> struct v4l2_dbg_register *reg);
>> - int (*vidioc_s_register)(struct file *file, void *fh,
>> + int (*vidioc_s_register)(struct file *file, void *,
>> const struct v4l2_dbg_register *reg);
>>
>> - int (*vidioc_g_chip_info)(struct file *file, void *fh,
>> + int (*vidioc_g_chip_info)(struct file *file, void *,
>> struct v4l2_dbg_chip_info *chip);
>> #endif
>>
>> - int (*vidioc_enum_framesizes)(struct file *file, void *fh,
>> + int (*vidioc_enum_framesizes)(struct file *file, void *,
>> struct v4l2_frmsizeenum *fsize);
>>
>> - int (*vidioc_enum_frameintervals)(struct file *file, void *fh,
>> + int (*vidioc_enum_frameintervals)(struct file *file, void *,
>> struct v4l2_frmivalenum *fival);
>>
>> /* DV Timings IOCTLs */
>> - int (*vidioc_s_dv_timings)(struct file *file, void *fh,
>> + int (*vidioc_s_dv_timings)(struct file *file, void *,
>> struct v4l2_dv_timings *timings);
>> - int (*vidioc_g_dv_timings)(struct file *file, void *fh,
>> + int (*vidioc_g_dv_timings)(struct file *file, void *,
>> struct v4l2_dv_timings *timings);
>> - int (*vidioc_query_dv_timings)(struct file *file, void *fh,
>> + int (*vidioc_query_dv_timings)(struct file *file, void *,
>> struct v4l2_dv_timings *timings);
>> - int (*vidioc_enum_dv_timings)(struct file *file, void *fh,
>> + int (*vidioc_enum_dv_timings)(struct file *file, void *,
>> struct v4l2_enum_dv_timings *timings);
>> - int (*vidioc_dv_timings_cap)(struct file *file, void *fh,
>> + int (*vidioc_dv_timings_cap)(struct file *file, void *,
>> struct v4l2_dv_timings_cap *cap);
>> - int (*vidioc_g_edid)(struct file *file, void *fh,
>> + int (*vidioc_g_edid)(struct file *file, void *,
>> struct v4l2_edid *edid);
>> - int (*vidioc_s_edid)(struct file *file, void *fh,
>> + int (*vidioc_s_edid)(struct file *file, void *,
>> struct v4l2_edid *edid);
>>
>> int (*vidioc_subscribe_event)(struct v4l2_fh *fh,
>> @@ -575,7 +575,7 @@ struct v4l2_ioctl_ops {
>> const struct v4l2_event_subscription *sub);
>>
>> /* For other private ioctls */
>> - long (*vidioc_default)(struct file *file, void *fh,
>> + long (*vidioc_default)(struct file *file, void *,
>> bool valid_prio, unsigned int cmd, void *arg);
>> };
>>
>>
>
>
next prev parent reply other threads:[~2025-08-07 7:58 UTC|newest]
Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-02 9:22 [PATCH 00/65] media: Rationalise usage of v4l2_fh Jacopo Mondi
2025-08-02 9:22 ` [PATCH 01/65] media: pci: saa7164: Store v4l2_fh pointer in file->private_data Jacopo Mondi
2025-08-02 9:22 ` [PATCH 02/65] media: imagination: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 03/65] media: ti: vpe: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 04/65] media: usb: hdpvr: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 05/65] media: usb: pvrusb2: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 06/65] media: usb: uvcvideo: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 07/65] media: staging: most: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 08/65] media: Wrap file->private_data access with a helper function Jacopo Mondi
2025-08-02 9:22 ` [PATCH 09/65] media: Replace file->private_data access with file_to_v4l2_fh() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 10/65] media: nvidia: tegra-vde: Replace file->private_data access Jacopo Mondi
2025-08-02 9:22 ` [PATCH 11/65] media: Replace file->private_data access with custom functions Jacopo Mondi
2025-08-06 8:16 ` Hans Verkuil
2025-08-06 9:48 ` Laurent Pinchart
2025-08-06 10:23 ` Hans Verkuil
2025-08-18 14:10 ` Lukasz Stelmach
2025-08-02 9:22 ` [PATCH 12/65] media: pci: ivtv: Don't create fake v4l2_fh Jacopo Mondi
2025-08-02 9:22 ` [PATCH 13/65] media: amphion: Make some vpu_v4l2 functions static Jacopo Mondi
2025-08-05 1:34 ` [EXT] " Ming Qian
2025-08-02 9:22 ` [PATCH 14/65] media: amphion: Delete v4l2_fh synchronously in .release() Jacopo Mondi
2025-08-05 1:43 ` [EXT] " Ming Qian
2025-08-02 9:22 ` [PATCH 15/65] media: visl: Drop visl_v4l2fh_to_ctx() function Jacopo Mondi
2025-08-02 9:22 ` [PATCH 16/65] media: v4l2-fh: Move piece of documentation to correct function Jacopo Mondi
2025-08-02 9:22 ` [PATCH 17/65] media: rcar-vin: Do not set file->private_data Jacopo Mondi
2025-08-02 13:26 ` Niklas Söderlund
2025-08-02 9:22 ` [PATCH 18/65] media: rzg2l-cru: " Jacopo Mondi
2025-08-04 10:01 ` Tommaso Merciai
2025-08-02 9:22 ` [PATCH 19/65] media: camss: Replace .open() file operation with v4l2_fh_open() Jacopo Mondi
2025-08-24 19:04 ` Vladimir Zapolskiy
2025-08-02 9:22 ` [PATCH 20/65] media: camss: Remove custom .release fop() Jacopo Mondi
2025-08-24 19:07 ` Vladimir Zapolskiy
2025-08-02 9:22 ` [PATCH 21/65] media: chips-media: wave5: Pass file pointer to wave5_cleanup_instance() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 22/65] media: qcom: iris: Pass file pointer to iris_v4l2_fh_(de)init() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 23/65] media: qcom: iris: Set file->private_data in iris_v4l2_fh_(de)init() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 24/65] media: qcom: iris: Drop unused argument to iris_get_inst() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 25/65] media: qcom: venus: Pass file pointer to venus_close_common() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 26/65] media: Set file->private_data in v4l2_fh_add() Jacopo Mondi
2025-08-02 9:22 ` [PATCH 27/65] media: Reset file->private_data to NULL in v4l2_fh_del() Jacopo Mondi
2025-08-06 12:45 ` Hans Verkuil
2025-08-07 8:50 ` Laurent Pinchart
2025-08-07 17:00 ` Laurent Pinchart
2025-08-07 20:25 ` Laurent Pinchart
2025-08-07 20:51 ` Hans Verkuil
2025-08-08 6:30 ` Laurent Pinchart
2025-08-18 14:12 ` Lukasz Stelmach
2025-08-02 9:22 ` [PATCH 28/65] media: v4l2-ioctl: Access v4l2_fh from private_data Jacopo Mondi
2025-08-02 9:22 ` [PATCH 29/65] media: allegro: Access v4l2_fh from file Jacopo Mondi
2025-08-05 7:39 ` Michael Tretter
2025-08-02 9:22 ` [PATCH 30/65] media: meson-ge2d: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 31/65] media: coda: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 32/65] media: wave5: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 33/65] media: m2m-deinterlace: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 34/65] media: mtk: jpeg: Access v4l2_fh from file->private_data Jacopo Mondi
2025-08-02 9:22 ` [PATCH 35/65] media: mtk_mdp_m2m: Access v4l2_fh from file Jacopo Mondi
2025-08-02 9:22 ` [PATCH 36/65] media: mtk: mdp3: " Jacopo Mondi
2025-08-02 9:22 ` [PATCH 37/65] media: mtk: vcodec: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 38/65] media: tegra-vde: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 39/65] media: imx-jpeg: " Jacopo Mondi
2025-08-05 1:58 ` [EXT] " Ming Qian
2025-08-02 9:23 ` [PATCH 40/65] media: imx-isi: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 41/65] media: nxp: mx2: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 42/65] media: renesas: " Jacopo Mondi
2025-08-05 9:59 ` Kieran Bingham
2025-08-02 9:23 ` [PATCH 43/65] media: rockhip: rga: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 44/65] media: rockchip: rkvdec: " Jacopo Mondi
2025-08-02 16:02 ` Detlev Casanova
2025-08-02 9:23 ` [PATCH 45/65] media: exynos-gsc: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 46/65] media: exynos4-is: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 47/65] media: s3c-camif: Set queue owner using file Jacopo Mondi
2025-08-02 9:23 ` [PATCH 48/65] media: s5p-g2d: Access v4l2_fh from file Jacopo Mondi
2025-08-02 9:23 ` [PATCH 49/65] media: s5p-jpeg: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 50/65] media: s5p-mfc: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 51/65] media: bdisp: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 52/65] media: st: delta: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 53/65] media: stm32: dma2d: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 54/65] media: hantro: Access v4l2_fh from file->private_data Jacopo Mondi
2025-08-04 21:59 ` Paul Kocialkowski
2025-08-02 9:23 ` [PATCH 55/65] media: omap3isp: Access v4l2_fh from file Jacopo Mondi
2025-08-02 9:23 ` [PATCH 56/65] media: cx18: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 57/65] media: ivtv: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 58/65] media: zoran: Remove access to __fh Jacopo Mondi
2025-08-07 6:58 ` Hans Verkuil
2025-08-07 12:31 ` Laurent Pinchart
2025-08-07 13:18 ` Hans Verkuil
2025-08-02 9:23 ` [PATCH 59/65] media: usb: hdpvr: Access v4l2_fh from file Jacopo Mondi
2025-08-02 9:23 ` [PATCH 60/65] media: usb: uvc: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 61/65] media: staging: imx: " Jacopo Mondi
2025-08-02 9:23 ` [PATCH 62/65] media: v4l2-ctrls: Move v4l2_fh retrieval after V4L2_FL_USES_V4L2_FH check Jacopo Mondi
2025-08-02 9:23 ` [PATCH 63/65] media: ipu6: isys: Don't set V4L2_FL_USES_V4L2_FH manually Jacopo Mondi
2025-08-08 1:01 ` Cao, Bingbu
2025-08-08 7:22 ` Sakari Ailus
2025-08-02 9:23 ` [PATCH 64/65] media: staging: ipu7: " Jacopo Mondi
2025-08-07 9:07 ` Sakari Ailus
2025-08-07 17:01 ` Laurent Pinchart
2025-08-08 7:22 ` Sakari Ailus
2025-08-02 9:23 ` [PATCH 65/65] media: v4l2-ioctl: Stop passing fh pointer to ioctl handlers Jacopo Mondi
2025-08-07 7:26 ` Hans Verkuil
2025-08-07 7:58 ` Hans Verkuil [this message]
2025-08-07 20:33 ` Laurent Pinchart
2025-08-07 20:55 ` Hans Verkuil
2025-08-08 7:00 ` Laurent Pinchart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=28ddf35a-3e7a-4470-8305-c64a551fd8c7@kernel.org \
--to=hverkuil+cisco@kernel.org \
--cc=abhinav.kumar@linux.dev \
--cc=alexandre.torgue@foss.st.com \
--cc=alexs@kernel.org \
--cc=alim.akhtar@samsung.com \
--cc=andrew-ct.chen@mediatek.com \
--cc=andrzej.hajda@intel.com \
--cc=andrzejtp2010@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=awalls@md.metrocast.net \
--cc=benjamin.gaignard@collabora.com \
--cc=bin.liu@mediatek.com \
--cc=bingbu.cao@intel.com \
--cc=bparrot@ti.com \
--cc=bryan.odonoghue@linaro.org \
--cc=christian.gromm@microchip.com \
--cc=clabbe@baylibre.com \
--cc=corbet@lwn.net \
--cc=daniel.almeida@collabora.com \
--cc=detlev.casanova@collabora.com \
--cc=devarsht@ti.com \
--cc=digetx@gmail.com \
--cc=dzm91@hust.edu.cn \
--cc=eagle.zhou@nxp.com \
--cc=ezequiel@vanguardiasur.com.ar \
--cc=fabien.dessenne@foss.st.com \
--cc=festevam@gmail.com \
--cc=geert+renesas@glider.be \
--cc=gregkh@linuxfoundation.org \
--cc=hansg@kernel.org \
--cc=heiko@sntech.de \
--cc=houlong.wei@mediatek.com \
--cc=hugues.fruchet@foss.st.com \
--cc=hverkuil@kernel.org \
--cc=imx@lists.linux.dev \
--cc=isely@pobox.com \
--cc=jacek.anaszewski@gmail.com \
--cc=jackson.lee@chipsnmedia.com \
--cc=jacob-chen@iotwrt.com \
--cc=jacopo.mondi@ideasonboard.com \
--cc=jbrunet@baylibre.com \
--cc=jean-christophe.trotin@foss.st.com \
--cc=jernej.skrabec@gmail.com \
--cc=jonathanh@nvidia.com \
--cc=kernel@pengutronix.de \
--cc=khilman@baylibre.com \
--cc=kieran.bingham+renesas@ideasonboard.com \
--cc=krzk@kernel.org \
--cc=l.stelmach@samsung.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=linux-stm32@st-md-mailman.stormreply.com \
--cc=linux-sunxi@lists.linux.dev \
--cc=linux-tegra@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=m.tretter@pengutronix.de \
--cc=magnus.damm@gmail.com \
--cc=martin.blumenstingl@googlemail.com \
--cc=matthias.bgg@gmail.com \
--cc=mchehab@kernel.org \
--cc=mcoquelin.stm32@gmail.com \
--cc=michal.simek@amd.com \
--cc=mikhail.ulyanov@cogentembedded.com \
--cc=ming.qian@nxp.com \
--cc=minghsiu.tsai@mediatek.com \
--cc=mirela.rabulea@nxp.com \
--cc=mjpeg-users@lists.sourceforge.net \
--cc=mripard@kernel.org \
--cc=nas.chung@chipsnmedia.com \
--cc=neil.armstrong@linaro.org \
--cc=nicolas.dufresne@collabora.com \
--cc=niklas.soderlund@ragnatech.se \
--cc=p.zabel@pengutronix.de \
--cc=parthiban.veerasooran@microchip.com \
--cc=paulk@sys-base.io \
--cc=quic_dikshita@quicinc.com \
--cc=quic_vgarodia@quicinc.com \
--cc=rfoss@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=s.nawrocki@samsung.com \
--cc=sakari.ailus@linux.intel.com \
--cc=samuel@sholland.org \
--cc=shawnguo@kernel.org \
--cc=si.yanteng@linux.dev \
--cc=slongerbeam@gmail.com \
--cc=stanislaw.gruszka@linux.intel.com \
--cc=sylvester.nawrocki@gmail.com \
--cc=tfiga@chromium.org \
--cc=thierry.reding@gmail.com \
--cc=tian.shu.qiu@intel.com \
--cc=tiffany.lin@mediatek.com \
--cc=todor.too@gmail.com \
--cc=vladimir.zapolskiy@linaro.org \
--cc=wens@csie.org \
--cc=xavier.roumegue@oss.nxp.com \
--cc=yunfei.dong@mediatek.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).