]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/media/platform/s5p-jpeg/jpeg-core.h
[media] s5p-jpeg: add support for 5433
[linux.git] / drivers / media / platform / s5p-jpeg / jpeg-core.h
index d0076fe2843d48d9f9f05546ad469dbfabf8a97c..9b1db09349094c784aea79d36460cf474b578854 100644 (file)
 /* a selection of JPEG markers */
 #define TEM                            0x01
 #define SOF0                           0xc0
+#define DHT                            0xc4
 #define RST                            0xd0
 #define SOI                            0xd8
 #define EOI                            0xd9
+#define        SOS                             0xda
+#define DQT                            0xdb
 #define DHP                            0xde
 
 /* Flags that indicate a format can be used for capture/output */
 #define SJPEG_SUBSAMPLING_422  0x21
 #define SJPEG_SUBSAMPLING_420  0x22
 
+#define S5P_JPEG_MAX_MARKER    4
+
 /* Version numbers */
 enum sjpeg_version {
        SJPEG_S5P,
        SJPEG_EXYNOS3250,
        SJPEG_EXYNOS4,
        SJPEG_EXYNOS5420,
+       SJPEG_EXYNOS5433,
 };
 
 enum exynos4_jpeg_result {
@@ -134,6 +140,7 @@ struct s5p_jpeg_variant {
        unsigned int            fmt_ver_flag;
        unsigned int            hw3250_compat:1;
        unsigned int            htbl_reinit:1;
+       unsigned int            hw_ex4_compat:1;
        struct v4l2_m2m_ops     *m2m_ops;
        irqreturn_t             (*jpeg_irq)(int irq, void *priv);
        const char              *clk_names[JPEG_MAX_CLOCKS];
@@ -162,17 +169,41 @@ struct s5p_jpeg_fmt {
        u32     flags;
 };
 
+/**
+ * s5p_jpeg_marker - collection of markers from jpeg header
+ * @marker:    markers' positions relative to the buffer beginning
+ * @len:       markers' payload lengths (without length field)
+ * @n:         number of markers in collection
+ */
+struct s5p_jpeg_marker {
+       u32     marker[S5P_JPEG_MAX_MARKER];
+       u32     len[S5P_JPEG_MAX_MARKER];
+       u32     n;
+};
+
 /**
  * s5p_jpeg_q_data - parameters of one queue
  * @fmt:       driver-specific format of this queue
  * @w:         image width
  * @h:         image height
+ * @sos:       SOS marker's position relative to the buffer beginning
+ * @dht:       DHT markers' positions relative to the buffer beginning
+ * @dqt:       DQT markers' positions relative to the buffer beginning
+ * @sof:       SOF0 marker's postition relative to the buffer beginning
+ * @sof_len:   SOF0 marker's payload length (without length field itself)
+ * @components:        number of image components
  * @size:      image buffer size in bytes
  */
 struct s5p_jpeg_q_data {
        struct s5p_jpeg_fmt     *fmt;
        u32                     w;
        u32                     h;
+       u32                     sos;
+       struct s5p_jpeg_marker  dht;
+       struct s5p_jpeg_marker  dqt;
+       u32                     sof;
+       u32                     sof_len;
+       u32                     components;
        u32                     size;
 };