Message ID | 20250409003815.10253-4-laurent.pinchart+renesas@ideasonboard.com |
---|---|
State | New |
Headers | show |
Series | media: renesas: vsp1: Add colorspace support | expand |
Hi, On 09/04/2025 03:38, Laurent Pinchart wrote: > The HSV formats are not restricted to Gen2 platforms, but to VSP > instances that implement the HSI and HST modules. Make it conditional to > the VSP1_HAS_HSIT feature flag. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > --- > .../media/platform/renesas/vsp1/vsp1_pipe.c | 32 +++++++++++++++++++ > 1 file changed, 32 insertions(+) > > diff --git a/drivers/media/platform/renesas/vsp1/vsp1_pipe.c b/drivers/media/platform/renesas/vsp1/vsp1_pipe.c > index 16a78a00c6c9..f7b133536704 100644 > --- a/drivers/media/platform/renesas/vsp1/vsp1_pipe.c > +++ b/drivers/media/platform/renesas/vsp1/vsp1_pipe.c > @@ -215,6 +215,9 @@ static const struct vsp1_format_info vsp1_video_gen2_formats[] = { > VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | > VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, > 1, { 16, 0, 0 }, false, true, 2, 1, false }, > +}; > + > +static const struct vsp1_format_info vsp1_video_hsit_formats[] = { > { V4L2_PIX_FMT_HSV24, MEDIA_BUS_FMT_AHSV8888_1X32, > VI6_FMT_RGB_888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | > VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, > @@ -255,6 +258,16 @@ const struct vsp1_format_info *vsp1_get_format_info(struct vsp1_device *vsp1, > } > } > > + if (vsp1_feature(vsp1, VSP1_HAS_HSIT)) { > + for (i = 0; i < ARRAY_SIZE(vsp1_video_hsit_formats); ++i) { > + const struct vsp1_format_info *info = > + &vsp1_video_hsit_formats[i]; > + > + if (info->fourcc == fourcc) > + return info; > + } > + } > + > return NULL; > } > > @@ -285,6 +298,12 @@ vsp1_get_format_info_by_index(struct vsp1_device *vsp1, unsigned int index, > return &vsp1_video_gen2_formats[index]; > } > > + if (vsp1_feature(vsp1, VSP1_HAS_HSIT)) { > + index -= ARRAY_SIZE(vsp1_video_gen2_formats); > + if (index < ARRAY_SIZE(vsp1_video_hsit_formats)) > + return &vsp1_video_hsit_formats[index]; > + } > + > return NULL; > } > > @@ -311,6 +330,19 @@ vsp1_get_format_info_by_index(struct vsp1_device *vsp1, unsigned int index, > } > } > > + if (vsp1_feature(vsp1, VSP1_HAS_HSIT)) { > + for (i = 0; i < ARRAY_SIZE(vsp1_video_hsit_formats); ++i) { > + const struct vsp1_format_info *info = > + &vsp1_video_hsit_formats[i]; > + > + if (info->mbus == code) { > + if (!index) > + return info; > + index--; > + } > + } > + } > + > return NULL; > } > Reviewed-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com> Tomi
diff --git a/drivers/media/platform/renesas/vsp1/vsp1_pipe.c b/drivers/media/platform/renesas/vsp1/vsp1_pipe.c index 16a78a00c6c9..f7b133536704 100644 --- a/drivers/media/platform/renesas/vsp1/vsp1_pipe.c +++ b/drivers/media/platform/renesas/vsp1/vsp1_pipe.c @@ -215,6 +215,9 @@ static const struct vsp1_format_info vsp1_video_gen2_formats[] = { VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, 1, { 16, 0, 0 }, false, true, 2, 1, false }, +}; + +static const struct vsp1_format_info vsp1_video_hsit_formats[] = { { V4L2_PIX_FMT_HSV24, MEDIA_BUS_FMT_AHSV8888_1X32, VI6_FMT_RGB_888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, @@ -255,6 +258,16 @@ const struct vsp1_format_info *vsp1_get_format_info(struct vsp1_device *vsp1, } } + if (vsp1_feature(vsp1, VSP1_HAS_HSIT)) { + for (i = 0; i < ARRAY_SIZE(vsp1_video_hsit_formats); ++i) { + const struct vsp1_format_info *info = + &vsp1_video_hsit_formats[i]; + + if (info->fourcc == fourcc) + return info; + } + } + return NULL; } @@ -285,6 +298,12 @@ vsp1_get_format_info_by_index(struct vsp1_device *vsp1, unsigned int index, return &vsp1_video_gen2_formats[index]; } + if (vsp1_feature(vsp1, VSP1_HAS_HSIT)) { + index -= ARRAY_SIZE(vsp1_video_gen2_formats); + if (index < ARRAY_SIZE(vsp1_video_hsit_formats)) + return &vsp1_video_hsit_formats[index]; + } + return NULL; } @@ -311,6 +330,19 @@ vsp1_get_format_info_by_index(struct vsp1_device *vsp1, unsigned int index, } } + if (vsp1_feature(vsp1, VSP1_HAS_HSIT)) { + for (i = 0; i < ARRAY_SIZE(vsp1_video_hsit_formats); ++i) { + const struct vsp1_format_info *info = + &vsp1_video_hsit_formats[i]; + + if (info->mbus == code) { + if (!index) + return info; + index--; + } + } + } + return NULL; }
The HSV formats are not restricted to Gen2 platforms, but to VSP instances that implement the HSI and HST modules. Make it conditional to the VSP1_HAS_HSIT feature flag. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> --- .../media/platform/renesas/vsp1/vsp1_pipe.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+)