summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
diff options
context:
space:
mode:
authorChen-Yu Tsai <wens@csie.org>2019-02-03 11:03:58 -0500
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-02-18 15:27:08 -0500
commit35deee14183457754f77e34dc92c588d93d40052 (patch)
tree6fdf8a23c4d2ce1981f582f0fc81a21f9dde7e62 /drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
parent19b18e78b327c8e0a5964ea7d08de5cb718f472d (diff)
downloadlinux-stable-35deee14183457754f77e34dc92c588d93d40052.tar.gz
linux-stable-35deee14183457754f77e34dc92c588d93d40052.tar.bz2
linux-stable-35deee14183457754f77e34dc92c588d93d40052.zip
media: sun6i: Add support for JPEG media bus format
The CSI controller can take raw data from the data bus and output it directly to capture buffers. This can be used to support the JPEG media bus format. While the controller can report minimum and maximum bytes per line, it has no way to report how many lines were captured in the last frame. Thus, even when the on-bus data is framed correctly, we have no way to accertain the actual amount of data captured, unless we scan the buffer for JPEG EOI markers, or sequential zeros. For now we leave bytesused alone, and leave it up to userspace applications to parse the data. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Diffstat (limited to 'drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c')
-rw-r--r--drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
index ff739466f189..4c79eb64a7a7 100644
--- a/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
+++ b/drivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c
@@ -150,6 +150,9 @@ bool sun6i_csi_is_format_supported(struct sun6i_csi *csi,
case V4L2_PIX_FMT_RGB565X:
return (mbus_code == MEDIA_BUS_FMT_RGB565_2X8_BE);
+ case V4L2_PIX_FMT_JPEG:
+ return (mbus_code == MEDIA_BUS_FMT_JPEG_1X8);
+
default:
dev_dbg(sdev->dev, "Unsupported pixformat: 0x%x\n", pixformat);
break;
@@ -289,6 +292,9 @@ static enum csi_output_fmt get_csi_output_format(struct sun6i_csi_dev *sdev,
case V4L2_PIX_FMT_RGB565X:
return buf_interlaced ? CSI_FRAME_RGB565 : CSI_FIELD_RGB565;
+ case V4L2_PIX_FMT_JPEG:
+ return buf_interlaced ? CSI_FRAME_RAW_8 : CSI_FIELD_RAW_8;
+
default:
dev_warn(sdev->dev, "Unsupported pixformat: 0x%x\n", pixformat);
break;