On Mon, 2021-03-29 at 08:57 +0200, Benjamin Gaignard wrote: > If the variant doesn't offert postprocessed formats make sure it will > be ok. > > Signed-off-by: Benjamin Gaignard <benjamin.gaign...@collabora.com>
Reviewed-by: Ezequiel Garcia <ezequ...@collabora.com> > --- > drivers/staging/media/hantro/hantro.h | 8 ++------ > drivers/staging/media/hantro/hantro_postproc.c | 14 ++++++++++++++ > drivers/staging/media/hantro/hantro_v4l2.c | 4 +++- > 3 files changed, 19 insertions(+), 7 deletions(-) > > diff --git a/drivers/staging/media/hantro/hantro.h > b/drivers/staging/media/hantro/hantro.h > index edb4561a6887..7a5ad93466c8 100644 > --- a/drivers/staging/media/hantro/hantro.h > +++ b/drivers/staging/media/hantro/hantro.h > @@ -414,12 +414,8 @@ hantro_get_dst_buf(struct hantro_ctx *ctx) > return v4l2_m2m_next_dst_buf(ctx->fh.m2m_ctx); > } > > -static inline bool > -hantro_needs_postproc(const struct hantro_ctx *ctx, > - const struct hantro_fmt *fmt) > -{ > - return !ctx->is_encoder && fmt->fourcc != V4L2_PIX_FMT_NV12; > -} > +bool hantro_needs_postproc(const struct hantro_ctx *ctx, > + const struct hantro_fmt *fmt); > > static inline dma_addr_t > hantro_get_dec_buf_addr(struct hantro_ctx *ctx, struct vb2_buffer *vb) > diff --git a/drivers/staging/media/hantro/hantro_postproc.c > b/drivers/staging/media/hantro/hantro_postproc.c > index 6d2a8f2a8f0b..ed8916c950a4 100644 > --- a/drivers/staging/media/hantro/hantro_postproc.c > +++ b/drivers/staging/media/hantro/hantro_postproc.c > @@ -50,6 +50,20 @@ const struct hantro_postproc_regs hantro_g1_postproc_regs > = { > .display_width = {G1_REG_PP_DISPLAY_WIDTH, 0, 0xfff}, > }; > > +bool hantro_needs_postproc(const struct hantro_ctx *ctx, > + const struct hantro_fmt *fmt) > +{ > + struct hantro_dev *vpu = ctx->dev; > + > + if (ctx->is_encoder) > + return false; > + > + if (!vpu->variant->postproc_fmts) > + return false; > + > + return fmt->fourcc != V4L2_PIX_FMT_NV12; > +} > + > void hantro_postproc_enable(struct hantro_ctx *ctx) > { > struct hantro_dev *vpu = ctx->dev; > diff --git a/drivers/staging/media/hantro/hantro_v4l2.c > b/drivers/staging/media/hantro/hantro_v4l2.c > index 1bc118e375a1..77d7fe62ce81 100644 > --- a/drivers/staging/media/hantro/hantro_v4l2.c > +++ b/drivers/staging/media/hantro/hantro_v4l2.c > @@ -55,7 +55,9 @@ static const struct hantro_fmt * > hantro_get_postproc_formats(const struct hantro_ctx *ctx, > unsigned int *num_fmts) > { > - if (ctx->is_encoder) { > + struct hantro_dev *vpu = ctx->dev; > + > + if (ctx->is_encoder || !vpu->variant->postproc_fmts) { > *num_fmts = 0; > return NULL; > }