This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: ov5640: add JPEG support
Author:  Hugues Fruchet <hugues.fruc...@st.com>
Date:    Wed Jan 31 04:08:10 2018 -0500

Add YUV422 encoded JPEG support.

Signed-off-by: Hugues Fruchet <hugues.fruc...@st.com>
Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/i2c/ov5640.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 43 insertions(+), 2 deletions(-)

---

diff --git a/drivers/media/i2c/ov5640.c b/drivers/media/i2c/ov5640.c
index e2dd352224c7..99a590263070 100644
--- a/drivers/media/i2c/ov5640.c
+++ b/drivers/media/i2c/ov5640.c
@@ -34,6 +34,8 @@
 
 #define OV5640_DEFAULT_SLAVE_ID 0x3c
 
+#define OV5640_REG_SYS_RESET02         0x3002
+#define OV5640_REG_SYS_CLOCK_ENABLE02  0x3006
 #define OV5640_REG_SYS_CTRL0           0x3008
 #define OV5640_REG_CHIP_ID             0x300a
 #define OV5640_REG_IO_MIPI_CTRL00      0x300e
@@ -114,6 +116,7 @@ struct ov5640_pixfmt {
 };
 
 static const struct ov5640_pixfmt ov5640_formats[] = {
+       { MEDIA_BUS_FMT_JPEG_1X8, V4L2_COLORSPACE_JPEG, },
        { MEDIA_BUS_FMT_UYVY8_2X8, V4L2_COLORSPACE_SRGB, },
        { MEDIA_BUS_FMT_YUYV8_2X8, V4L2_COLORSPACE_SRGB, },
        { MEDIA_BUS_FMT_RGB565_2X8_LE, V4L2_COLORSPACE_SRGB, },
@@ -1915,6 +1918,7 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor,
 {
        int ret = 0;
        bool is_rgb = false;
+       bool is_jpeg = false;
        u8 val;
 
        switch (format->code) {
@@ -1936,6 +1940,11 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor,
                val = 0x61;
                is_rgb = true;
                break;
+       case MEDIA_BUS_FMT_JPEG_1X8:
+               /* YUV422, YUYV */
+               val = 0x30;
+               is_jpeg = true;
+               break;
        default:
                return -EINVAL;
        }
@@ -1946,8 +1955,40 @@ static int ov5640_set_framefmt(struct ov5640_dev *sensor,
                return ret;
 
        /* FORMAT MUX CONTROL: ISP YUV or RGB */
-       return ov5640_write_reg(sensor, OV5640_REG_ISP_FORMAT_MUX_CTRL,
-                               is_rgb ? 0x01 : 0x00);
+       ret = ov5640_write_reg(sensor, OV5640_REG_ISP_FORMAT_MUX_CTRL,
+                              is_rgb ? 0x01 : 0x00);
+       if (ret)
+               return ret;
+
+       /*
+        * TIMING TC REG21:
+        * - [5]:       JPEG enable
+        */
+       ret = ov5640_mod_reg(sensor, OV5640_REG_TIMING_TC_REG21,
+                            BIT(5), is_jpeg ? BIT(5) : 0);
+       if (ret)
+               return ret;
+
+       /*
+        * SYSTEM RESET02:
+        * - [4]:       Reset JFIFO
+        * - [3]:       Reset SFIFO
+        * - [2]:       Reset JPEG
+        */
+       ret = ov5640_mod_reg(sensor, OV5640_REG_SYS_RESET02,
+                            BIT(4) | BIT(3) | BIT(2),
+                            is_jpeg ? 0 : (BIT(4) | BIT(3) | BIT(2)));
+       if (ret)
+               return ret;
+
+       /*
+        * CLOCK ENABLE02:
+        * - [5]:       Enable JPEG 2x clock
+        * - [3]:       Enable JPEG clock
+        */
+       return ov5640_mod_reg(sensor, OV5640_REG_SYS_CLOCK_ENABLE02,
+                             BIT(5) | BIT(3),
+                             is_jpeg ? (BIT(5) | BIT(3)) : 0);
 }
 
 /*

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to