[EXT] [PATCH 39/65] media: imx-jpeg: Access v4l2_fh from file
Ming Qian
ming.qian at nxp.com
Mon Aug 4 18:58:01 PDT 2025
>-----Original Message-----
>From: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
>Sent: Saturday, August 2, 2025 5:23 PM
>To: Mauro Carvalho Chehab <mchehab at kernel.org>; Devarsh Thakkar
><devarsht at ti.com>; Benoit Parrot <bparrot at ti.com>; Hans Verkuil
><hverkuil at kernel.org>; Mike Isely <isely at pobox.com>; Laurent Pinchart
><laurent.pinchart at ideasonboard.com>; Hans de Goede <hansg at kernel.org>;
>Parthiban Veerasooran <parthiban.veerasooran at microchip.com>; Christian
>Gromm <christian.gromm at microchip.com>; Greg Kroah-Hartman
><gregkh at linuxfoundation.org>; Alex Shi <alexs at kernel.org>; Yanteng Si
><si.yanteng at linux.dev>; Dongliang Mu <dzm91 at hust.edu.cn>; Jonathan
>Corbet <corbet at lwn.net>; Tomasz Figa <tfiga at chromium.org>; Marek
>Szyprowski <m.szyprowski at samsung.com>; Andy Walls
><awalls at md.metrocast.net>; Michael Tretter <m.tretter at pengutronix.de>;
>Pengutronix Kernel Team <kernel at pengutronix.de>; Bin Liu
><bin.liu at mediatek.com>; Matthias Brugger <matthias.bgg at gmail.com>;
>AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>;
>Dmitry Osipenko <digetx at gmail.com>; Thierry Reding
><thierry.reding at gmail.com>; Jonathan Hunter <jonathanh at nvidia.com>;
>Mirela Rabulea <mirela.rabulea at nxp.com>; Shawn Guo
><shawnguo at kernel.org>; Sascha Hauer <s.hauer at pengutronix.de>; Fabio
>Estevam <festevam at gmail.com>; Kieran Bingham
><kieran.bingham+renesas at ideasonboard.com>; Michal Simek
><michal.simek at amd.com>; Ming Qian <ming.qian at nxp.com>; Eagle Zhou
><eagle.zhou at nxp.com>; Xavier Roumegue (OSS)
><xavier.roumegue at oss.nxp.com>; Philipp Zabel <p.zabel at pengutronix.de>;
>Vikash Garodia <quic_vgarodia at quicinc.com>; Dikshita Agarwal
><quic_dikshita at quicinc.com>; Abhinav Kumar <abhinav.kumar at linux.dev>;
>Bryan O'Donoghue <bryan.odonoghue at linaro.org>; Sylwester Nawrocki
><sylvester.nawrocki at gmail.com>; Jernej Skrabec <jernej.skrabec at gmail.com>;
>Chen-Yu Tsai <wens at csie.org>; Samuel Holland <samuel at sholland.org>;
>Daniel Almeida <daniel.almeida at collabora.com>; Neil Armstrong
><neil.armstrong at linaro.org>; Kevin Hilman <khilman at baylibre.com>; Jerome
>Brunet <jbrunet at baylibre.com>; Martin Blumenstingl
><martin.blumenstingl at googlemail.com>; Nas Chung
><nas.chung at chipsnmedia.com>; Jackson Lee
><jackson.lee at chipsnmedia.com>; Minghsiu Tsai
><minghsiu.tsai at mediatek.com>; Houlong Wei <houlong.wei at mediatek.com>;
>Andrew-CT Chen <andrew-ct.chen at mediatek.com>; Tiffany Lin
><tiffany.lin at mediatek.com>; Yunfei Dong <yunfei.dong at mediatek.com>;
>Geert Uytterhoeven <geert+renesas at glider.be>; Magnus Damm
><magnus.damm at gmail.com>; Mikhail Ulyanov
><mikhail.ulyanov at cogentembedded.com>; Jacob Chen <jacob-
>chen at iotwrt.com>; Ezequiel Garcia <ezequiel at vanguardiasur.com.ar>; Heiko
>Stuebner <heiko at sntech.de>; Detlev Casanova
><detlev.casanova at collabora.com>; Krzysztof Kozlowski <krzk at kernel.org>;
>Alim Akhtar <alim.akhtar at samsung.com>; Sylwester Nawrocki
><s.nawrocki at samsung.com>; Łukasz Stelmach <l.stelmach at samsung.com>;
>Andrzej Pietrasiewicz <andrzejtp2010 at gmail.com>; Jacek Anaszewski
><jacek.anaszewski at gmail.com>; Andrzej Hajda <andrzej.hajda at intel.com>;
>Fabien Dessenne <fabien.dessenne at foss.st.com>; Hugues Fruchet
><hugues.fruchet at foss.st.com>; Jean-Christophe Trotin <jean-
>christophe.trotin at foss.st.com>; Maxime Coquelin
><mcoquelin.stm32 at gmail.com>; Alexandre Torgue
><alexandre.torgue at foss.st.com>; Nicolas Dufresne
><nicolas.dufresne at collabora.com>; Benjamin Gaignard
><benjamin.gaignard at collabora.com>; Steve Longerbeam
><slongerbeam at gmail.com>; Maxime Ripard <mripard at kernel.org>; Paul
>Kocialkowski <paulk at sys-base.io>; Niklas Söderlund
><niklas.soderlund at ragnatech.se>; Robert Foss <rfoss at kernel.org>; Todor
>Tomov <todor.too at gmail.com>; Vladimir Zapolskiy
><vladimir.zapolskiy at linaro.org>; Corentin Labbe <clabbe at baylibre.com>;
>Sakari Ailus <sakari.ailus at linux.intel.com>; Bingbu Cao
><bingbu.cao at intel.com>; Tianshu Qiu <tian.shu.qiu at intel.com>; Stanislaw
>Gruszka <stanislaw.gruszka at linux.intel.com>
>Cc: linux-media at vger.kernel.org; linux-kernel at vger.kernel.org; linux-
>staging at lists.linux.dev; linux-doc at vger.kernel.org; linux-arm-
>kernel at lists.infradead.org; linux-mediatek at lists.infradead.org; linux-
>tegra at vger.kernel.org; imx at lists.linux.dev; linux-renesas-soc at vger.kernel.org;
>linux-arm-msm at vger.kernel.org; linux-samsung-soc at vger.kernel.org; linux-
>sunxi at lists.linux.dev; linux-usb at vger.kernel.org; linux-
>amlogic at lists.infradead.org; linux-rockchip at lists.infradead.org; linux-
>stm32 at st-md-mailman.stormreply.com; mjpeg-users at lists.sourceforge.net;
>Jacopo Mondi <jacopo.mondi at ideasonboard.com>
>Subject: [EXT] [PATCH 39/65] media: imx-jpeg: Access v4l2_fh from file
>
>Caution: This is an external email. Please take care when clicking links or
>opening attachments. When in doubt, report the message using the 'Report
>this email' button
>
>
>The v4l2_fh associated with an open file handle is now guaranteed to be
>available in file->private_data, initialised by v4l2_fh_add().
>
>Access the v4l2_fh, and from there the driver-specific structure, from the file *
>in all ioctl handlers.
>
>While at it, remove the now unused mxc_jpeg_fh_to_ctx() macro.
>
>Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
Reviewed-by: Ming Qian <ming.qian at oss.nxp.com>
>---
> drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 33 +++++++++++--------------
>-
> 1 file changed, 14 insertions(+), 19 deletions(-)
>
>diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>index
>fa7d74d8c1aabd3bf74482e214165d8c1a7e89da..df3ccdf767baf0bf6687808e2c
>017063181a7220 100644
>--- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>+++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
>@@ -644,11 +644,6 @@ static void print_mxc_buf(struct mxc_jpeg_dev *jpeg,
>struct vb2_buffer *buf,
> }
> }
>
>-static inline struct mxc_jpeg_ctx *mxc_jpeg_fh_to_ctx(struct v4l2_fh *fh) -{
>- return container_of(fh, struct mxc_jpeg_ctx, fh);
>-}
>-
> static inline struct mxc_jpeg_ctx *mxc_jpeg_file_to_ctx(struct file *filp) {
> return container_of(file_to_v4l2_fh(filp), struct mxc_jpeg_ctx, fh); @@ -
>1610,7 +1605,7 @@ static int mxc_jpeg_decoder_cmd(struct file *file, void
>*priv,
> struct v4l2_decoder_cmd *cmd) {
> struct v4l2_fh *fh = file_to_v4l2_fh(file);
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(fh);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> unsigned long flags;
> int ret;
>
>@@ -1643,7 +1638,7 @@ static int mxc_jpeg_encoder_cmd(struct file *file,
>void *priv,
> struct v4l2_encoder_cmd *cmd) {
> struct v4l2_fh *fh = file_to_v4l2_fh(file);
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(fh);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> unsigned long flags;
> int ret;
>
>@@ -2260,7 +2255,7 @@ static int mxc_jpeg_querycap(struct file *file, void
>*priv, static int mxc_jpeg_enum_fmt_vid_cap(struct file *file, void *priv,
> struct v4l2_fmtdesc *f) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(priv);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_q_data *q_data = mxc_jpeg_get_q_data(ctx, f->type);
>
> if (ctx->mxc_jpeg->mode == MXC_JPEG_ENCODE) { @@ -2300,7 +2295,7
>@@ static int mxc_jpeg_enum_fmt_vid_cap(struct file *file, void *priv, static
>int mxc_jpeg_enum_fmt_vid_out(struct file *file, void *priv,
> struct v4l2_fmtdesc *f) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(priv);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> u32 type = ctx->mxc_jpeg->mode == MXC_JPEG_DECODE ?
>MXC_JPEG_FMT_TYPE_ENC :
> MXC_JPEG_FMT_TYPE_RAW;
> int ret;
>@@ -2441,7 +2436,7 @@ static int mxc_jpeg_try_fmt(struct v4l2_format *f,
>static int mxc_jpeg_try_fmt_vid_cap(struct file *file, void *priv,
> struct v4l2_format *f) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(priv);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_dev *jpeg = ctx->mxc_jpeg;
> struct device *dev = jpeg->dev;
> struct mxc_jpeg_q_data tmp_q;
>@@ -2460,7 +2455,7 @@ static int mxc_jpeg_try_fmt_vid_cap(struct file *file,
>void *priv, static int mxc_jpeg_try_fmt_vid_out(struct file *file, void *priv,
> struct v4l2_format *f) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(priv);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_dev *jpeg = ctx->mxc_jpeg;
> struct device *dev = jpeg->dev;
> struct mxc_jpeg_q_data tmp_q;
>@@ -2512,20 +2507,20 @@ static int mxc_jpeg_s_fmt(struct mxc_jpeg_ctx
>*ctx, static int mxc_jpeg_s_fmt_vid_cap(struct file *file, void *priv,
> struct v4l2_format *f) {
>- return mxc_jpeg_s_fmt(mxc_jpeg_fh_to_ctx(priv), f);
>+ return mxc_jpeg_s_fmt(mxc_jpeg_file_to_ctx(file), f);
> }
>
> static int mxc_jpeg_s_fmt_vid_out(struct file *file, void *priv,
> struct v4l2_format *f) {
> int ret;
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(priv);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct vb2_queue *dst_vq;
> struct mxc_jpeg_q_data *q_data_cap;
> enum v4l2_buf_type cap_type =
>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
> struct v4l2_format fc;
>
>- ret = mxc_jpeg_s_fmt(mxc_jpeg_fh_to_ctx(priv), f);
>+ ret = mxc_jpeg_s_fmt(ctx, f);
> if (ret)
> return ret;
>
>@@ -2554,7 +2549,7 @@ static int mxc_jpeg_s_fmt_vid_out(struct file *file,
>void *priv, static int mxc_jpeg_g_fmt_vid(struct file *file, void *priv,
> struct v4l2_format *f) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(priv);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_dev *jpeg = ctx->mxc_jpeg;
> struct device *dev = jpeg->dev;
> struct v4l2_pix_format_mplane *pix_mp = &f->fmt.pix_mp;
>@@ -2592,7 +2587,7 @@ static int mxc_jpeg_g_fmt_vid(struct file *file, void
>*priv,
>
> static int mxc_jpeg_dec_g_selection(struct file *file, void *fh, struct
>v4l2_selection *s) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(fh);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_q_data *q_data_cap;
>
> if (s->type != V4L2_BUF_TYPE_VIDEO_CAPTURE && s->type !=
>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
>@@ -2621,7 +2616,7 @@ static int mxc_jpeg_dec_g_selection(struct file *file,
>void *fh, struct v4l2_sel
>
> static int mxc_jpeg_enc_g_selection(struct file *file, void *fh, struct
>v4l2_selection *s) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(fh);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_q_data *q_data_out;
>
> if (s->type != V4L2_BUF_TYPE_VIDEO_OUTPUT && s->type !=
>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
>@@ -2649,7 +2644,7 @@ static int mxc_jpeg_enc_g_selection(struct file *file,
>void *fh, struct v4l2_sel
>
> static int mxc_jpeg_g_selection(struct file *file, void *fh, struct v4l2_selection
>*s) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(fh);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
>
> if (ctx->mxc_jpeg->mode == MXC_JPEG_DECODE)
> return mxc_jpeg_dec_g_selection(file, fh, s); @@ -2659,7 +2654,7 @@
>static int mxc_jpeg_g_selection(struct file *file, void *fh, struct v4l2_selecti
>
> static int mxc_jpeg_s_selection(struct file *file, void *fh, struct v4l2_selection
>*s) {
>- struct mxc_jpeg_ctx *ctx = mxc_jpeg_fh_to_ctx(fh);
>+ struct mxc_jpeg_ctx *ctx = mxc_jpeg_file_to_ctx(file);
> struct mxc_jpeg_q_data *q_data_out;
>
> if (ctx->mxc_jpeg->mode != MXC_JPEG_ENCODE)
>
>--
>2.49.0
More information about the linux-amlogic
mailing list