mirror of
https://github.com/torvalds/linux.git
synced 2026-07-30 11:11:26 +02:00
media: imx-jpeg: Access v4l2_fh from file
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. Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Ming Qian <ming.qian@oss.nxp.com> Co-developed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
25fe47cdc9
commit
8be69363d8
|
|
@ -644,14 +644,9 @@ 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 mxc_jpeg_fh_to_ctx(file_to_v4l2_fh(filp));
|
||||
return container_of(file_to_v4l2_fh(filp), struct mxc_jpeg_ctx, fh);
|
||||
}
|
||||
|
||||
static int enum_fmt(const struct mxc_jpeg_fmt *mxc_formats, int n,
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user