| From b2fdfacf21cd7d444eebbd1def80eec28990f1cb Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Tue, 6 Sep 2016 21:04:53 -0300 |
| Subject: [PATCH 110/299] [media] v4l: vsp1: Add support for capture and output |
| in HSV formats |
| |
| Support both the HSV24 and HSV32 formats. From a hardware point of view |
| pretend the formats are RGB, the RPF and WPF will just pass the data |
| through without performing any processing. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Acked-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> |
| Acked-by: Hans Verkuil <hans.verkuil@cisco.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> |
| (cherry picked from commit bc9b91e6be38b54a7b245969d0a9247791705e6a) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/media/platform/vsp1/vsp1_pipe.c | 8 ++++++++ |
| drivers/media/platform/vsp1/vsp1_rwpf.c | 2 ++ |
| drivers/media/platform/vsp1/vsp1_video.c | 5 +++++ |
| 3 files changed, 15 insertions(+) |
| |
| --- a/drivers/media/platform/vsp1/vsp1_pipe.c |
| +++ b/drivers/media/platform/vsp1/vsp1_pipe.c |
| @@ -78,6 +78,14 @@ static const struct vsp1_format_info vsp |
| VI6_FMT_ARGB_8888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | |
| VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, |
| 1, { 32, 0, 0 }, false, false, 1, 1, false }, |
| + { 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, |
| + 1, { 24, 0, 0 }, false, false, 1, 1, false }, |
| + { V4L2_PIX_FMT_HSV32, MEDIA_BUS_FMT_AHSV8888_1X32, |
| + VI6_FMT_ARGB_8888, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | |
| + VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, |
| + 1, { 32, 0, 0 }, false, false, 1, 1, false }, |
| { V4L2_PIX_FMT_UYVY, MEDIA_BUS_FMT_AYUV8_1X32, |
| VI6_FMT_YUYV_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS | |
| VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS, |
| --- a/drivers/media/platform/vsp1/vsp1_rwpf.c |
| +++ b/drivers/media/platform/vsp1/vsp1_rwpf.c |
| @@ -37,6 +37,7 @@ static int vsp1_rwpf_enum_mbus_code(stru |
| { |
| static const unsigned int codes[] = { |
| MEDIA_BUS_FMT_ARGB8888_1X32, |
| + MEDIA_BUS_FMT_AHSV8888_1X32, |
| MEDIA_BUS_FMT_AYUV8_1X32, |
| }; |
| |
| @@ -78,6 +79,7 @@ static int vsp1_rwpf_set_format(struct v |
| |
| /* Default to YUV if the requested format is not supported. */ |
| if (fmt->format.code != MEDIA_BUS_FMT_ARGB8888_1X32 && |
| + fmt->format.code != MEDIA_BUS_FMT_AHSV8888_1X32 && |
| fmt->format.code != MEDIA_BUS_FMT_AYUV8_1X32) |
| fmt->format.code = MEDIA_BUS_FMT_AYUV8_1X32; |
| |
| --- a/drivers/media/platform/vsp1/vsp1_video.c |
| +++ b/drivers/media/platform/vsp1/vsp1_video.c |
| @@ -124,6 +124,11 @@ static int __vsp1_video_try_format(struc |
| pix->pixelformat = info->fourcc; |
| pix->colorspace = V4L2_COLORSPACE_SRGB; |
| pix->field = V4L2_FIELD_NONE; |
| + |
| + if (info->fourcc == V4L2_PIX_FMT_HSV24 || |
| + info->fourcc == V4L2_PIX_FMT_HSV32) |
| + pix->hsv_enc = V4L2_HSV_ENC_256; |
| + |
| memset(pix->reserved, 0, sizeof(pix->reserved)); |
| |
| /* Align the width and height for YUV 4:2:2 and 4:2:0 formats. */ |