Message ID | 20200723132014.4597-5-dafna.hirschfeld@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: staging: rkisp1: add support to V4L2_CAP_IO_MC | expand |
Hi Dafna, On 7/23/20 10:20 AM, Dafna Hirschfeld wrote: > The selfpath capture does not support bayer formats. > Therefore there is no reason to support bayer formats > on the selfpath resizer. The selfpath resizer should > support only MEDIA_BUS_FMT_YUYV8_2X8. > > Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> Acked-by: Helen Koike <helen.koike@collabora.com> Thanks, Helen > --- > drivers/staging/media/rkisp1/rkisp1-capture.c | 7 ------- > drivers/staging/media/rkisp1/rkisp1-resizer.c | 13 ++++++++++++- > 2 files changed, 12 insertions(+), 8 deletions(-) > > diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c > index fd0864194203..27efec004686 100644 > --- a/drivers/staging/media/rkisp1/rkisp1-capture.c > +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c > @@ -1186,13 +1186,6 @@ static int rkisp1_capture_link_validate(struct media_link *link) > struct v4l2_subdev_format sd_fmt; > int ret; > > - if (cap->id == RKISP1_SELFPATH && > - isp->src_fmt->mbus_code != MEDIA_BUS_FMT_YUYV8_2X8) { > - dev_err(cap->rkisp1->dev, > - "selfpath only supports MEDIA_BUS_FMT_YUYV8_2X8\n"); > - return -EPIPE; > - } > - > if (cap_pix_enc != isp_pix_enc && > !(isp_pix_enc == V4L2_PIXEL_ENC_YUV && > cap_pix_enc == V4L2_PIXEL_ENC_RGB)) { > diff --git a/drivers/staging/media/rkisp1/rkisp1-resizer.c b/drivers/staging/media/rkisp1/rkisp1-resizer.c > index c66d2a52fd71..066d22096a7d 100644 > --- a/drivers/staging/media/rkisp1/rkisp1-resizer.c > +++ b/drivers/staging/media/rkisp1/rkisp1-resizer.c > @@ -437,6 +437,13 @@ static int rkisp1_rsz_enum_mbus_code(struct v4l2_subdev *sd, > u32 pad = code->pad; > int ret; > > + if (rsz->id == RKISP1_SELFPATH) { > + if (code->index > 0) > + return -EINVAL; > + code->code = MEDIA_BUS_FMT_YUYV8_2X8; > + return 0; > + } > + > /* supported mbus codes are the same in isp video src pad */ > code->pad = RKISP1_ISP_PAD_SOURCE_VIDEO; > ret = v4l2_subdev_call(&rsz->rkisp1->isp.sd, pad, enum_mbus_code, > @@ -540,7 +547,11 @@ static void rkisp1_rsz_set_sink_fmt(struct rkisp1_resizer *rsz, > src_fmt = rkisp1_rsz_get_pad_fmt(rsz, cfg, RKISP1_RSZ_PAD_SRC, which); > sink_crop = rkisp1_rsz_get_pad_crop(rsz, cfg, RKISP1_RSZ_PAD_SINK, > which); > - sink_fmt->code = format->code; > + if (rsz->id == RKISP1_SELFPATH) > + sink_fmt->code = MEDIA_BUS_FMT_YUYV8_2X8; > + else > + sink_fmt->code = format->code; > + > mbus_info = rkisp1_isp_mbus_info_get(sink_fmt->code); > if (!mbus_info || !(mbus_info->direction & RKISP1_ISP_SD_SRC)) { > sink_fmt->code = RKISP1_DEF_FMT; >
diff --git a/drivers/staging/media/rkisp1/rkisp1-capture.c b/drivers/staging/media/rkisp1/rkisp1-capture.c index fd0864194203..27efec004686 100644 --- a/drivers/staging/media/rkisp1/rkisp1-capture.c +++ b/drivers/staging/media/rkisp1/rkisp1-capture.c @@ -1186,13 +1186,6 @@ static int rkisp1_capture_link_validate(struct media_link *link) struct v4l2_subdev_format sd_fmt; int ret; - if (cap->id == RKISP1_SELFPATH && - isp->src_fmt->mbus_code != MEDIA_BUS_FMT_YUYV8_2X8) { - dev_err(cap->rkisp1->dev, - "selfpath only supports MEDIA_BUS_FMT_YUYV8_2X8\n"); - return -EPIPE; - } - if (cap_pix_enc != isp_pix_enc && !(isp_pix_enc == V4L2_PIXEL_ENC_YUV && cap_pix_enc == V4L2_PIXEL_ENC_RGB)) { diff --git a/drivers/staging/media/rkisp1/rkisp1-resizer.c b/drivers/staging/media/rkisp1/rkisp1-resizer.c index c66d2a52fd71..066d22096a7d 100644 --- a/drivers/staging/media/rkisp1/rkisp1-resizer.c +++ b/drivers/staging/media/rkisp1/rkisp1-resizer.c @@ -437,6 +437,13 @@ static int rkisp1_rsz_enum_mbus_code(struct v4l2_subdev *sd, u32 pad = code->pad; int ret; + if (rsz->id == RKISP1_SELFPATH) { + if (code->index > 0) + return -EINVAL; + code->code = MEDIA_BUS_FMT_YUYV8_2X8; + return 0; + } + /* supported mbus codes are the same in isp video src pad */ code->pad = RKISP1_ISP_PAD_SOURCE_VIDEO; ret = v4l2_subdev_call(&rsz->rkisp1->isp.sd, pad, enum_mbus_code, @@ -540,7 +547,11 @@ static void rkisp1_rsz_set_sink_fmt(struct rkisp1_resizer *rsz, src_fmt = rkisp1_rsz_get_pad_fmt(rsz, cfg, RKISP1_RSZ_PAD_SRC, which); sink_crop = rkisp1_rsz_get_pad_crop(rsz, cfg, RKISP1_RSZ_PAD_SINK, which); - sink_fmt->code = format->code; + if (rsz->id == RKISP1_SELFPATH) + sink_fmt->code = MEDIA_BUS_FMT_YUYV8_2X8; + else + sink_fmt->code = format->code; + mbus_info = rkisp1_isp_mbus_info_get(sink_fmt->code); if (!mbus_info || !(mbus_info->direction & RKISP1_ISP_SD_SRC)) { sink_fmt->code = RKISP1_DEF_FMT;
The selfpath capture does not support bayer formats. Therefore there is no reason to support bayer formats on the selfpath resizer. The selfpath resizer should support only MEDIA_BUS_FMT_YUYV8_2X8. Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com> --- drivers/staging/media/rkisp1/rkisp1-capture.c | 7 ------- drivers/staging/media/rkisp1/rkisp1-resizer.c | 13 ++++++++++++- 2 files changed, 12 insertions(+), 8 deletions(-)