diff options
Diffstat (limited to 'drivers/media/platform/imx-jpeg/mxc-jpeg.h')
-rw-r--r-- | drivers/media/platform/imx-jpeg/mxc-jpeg.h | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/drivers/media/platform/imx-jpeg/mxc-jpeg.h b/drivers/media/platform/imx-jpeg/mxc-jpeg.h deleted file mode 100644 index 9fb2a5aaa941..000000000000 --- a/drivers/media/platform/imx-jpeg/mxc-jpeg.h +++ /dev/null @@ -1,182 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* - * i.MX8QXP/i.MX8QM JPEG encoder/decoder v4l2 driver - * - * Copyright 2018-2019 NXP - */ - -#include <media/v4l2-ctrls.h> -#include <media/v4l2-device.h> -#include <media/v4l2-fh.h> - -#ifndef _MXC_JPEG_CORE_H -#define _MXC_JPEG_CORE_H - -#define MXC_JPEG_NAME "mxc-jpeg" -#define MXC_JPEG_FMT_TYPE_ENC 0 -#define MXC_JPEG_FMT_TYPE_RAW 1 -#define MXC_JPEG_DEFAULT_WIDTH 1280 -#define MXC_JPEG_DEFAULT_HEIGHT 720 -#define MXC_JPEG_DEFAULT_PFMT V4L2_PIX_FMT_RGB24 -#define MXC_JPEG_MIN_WIDTH 64 -#define MXC_JPEG_MIN_HEIGHT 64 -#define MXC_JPEG_MAX_WIDTH 0x2000 -#define MXC_JPEG_MAX_HEIGHT 0x2000 -#define MXC_JPEG_MAX_CFG_STREAM 0x1000 -#define MXC_JPEG_H_ALIGN 3 -#define MXC_JPEG_W_ALIGN 3 -#define MXC_JPEG_MAX_SIZEIMAGE 0xFFFFFC00 -#define MXC_JPEG_MAX_PLANES 2 - -enum mxc_jpeg_enc_state { - MXC_JPEG_ENCODING = 0, /* jpeg encode phase */ - MXC_JPEG_ENC_CONF = 1, /* jpeg encoder config phase */ -}; - -enum mxc_jpeg_mode { - MXC_JPEG_DECODE = 0, /* jpeg decode mode */ - MXC_JPEG_ENCODE = 1, /* jpeg encode mode */ -}; - -/** - * struct mxc_jpeg_fmt - driver's internal color format data - * @name: format description - * @fourcc: fourcc code, 0 if not applicable - * @subsampling: subsampling of jpeg components - * @nc: number of color components - * @depth: number of bits per pixel - * @colplanes: number of color planes (1 for packed formats) - * @h_align: horizontal alignment order (align to 2^h_align) - * @v_align: vertical alignment order (align to 2^v_align) - * @flags: flags describing format applicability - */ -struct mxc_jpeg_fmt { - const char *name; - u32 fourcc; - enum v4l2_jpeg_chroma_subsampling subsampling; - int nc; - int depth; - int colplanes; - int h_align; - int v_align; - u32 flags; -}; - -struct mxc_jpeg_desc { - u32 next_descpt_ptr; - u32 buf_base0; - u32 buf_base1; - u32 line_pitch; - u32 stm_bufbase; - u32 stm_bufsize; - u32 imgsize; - u32 stm_ctrl; -} __packed; - -struct mxc_jpeg_q_data { - const struct mxc_jpeg_fmt *fmt; - u32 sizeimage[MXC_JPEG_MAX_PLANES]; - u32 bytesperline[MXC_JPEG_MAX_PLANES]; - int w; - int w_adjusted; - int h; - int h_adjusted; - unsigned int sequence; -}; - -struct mxc_jpeg_ctx { - struct mxc_jpeg_dev *mxc_jpeg; - struct mxc_jpeg_q_data out_q; - struct mxc_jpeg_q_data cap_q; - struct v4l2_fh fh; - enum mxc_jpeg_enc_state enc_state; - unsigned int stopping; - unsigned int slot; -}; - -struct mxc_jpeg_slot_data { - bool used; - struct mxc_jpeg_desc *desc; // enc/dec descriptor - struct mxc_jpeg_desc *cfg_desc; // configuration descriptor - void *cfg_stream_vaddr; // configuration bitstream virtual address - unsigned int cfg_stream_size; - dma_addr_t desc_handle; - dma_addr_t cfg_desc_handle; // configuration descriptor dma address - dma_addr_t cfg_stream_handle; // configuration bitstream dma address -}; - -struct mxc_jpeg_dev { - spinlock_t hw_lock; /* hardware access lock */ - unsigned int mode; - struct mutex lock; /* v4l2 ioctls serialization */ - struct clk *clk_ipg; - struct clk *clk_per; - struct platform_device *pdev; - struct device *dev; - void __iomem *base_reg; - struct v4l2_device v4l2_dev; - struct v4l2_m2m_dev *m2m_dev; - struct video_device *dec_vdev; - struct mxc_jpeg_slot_data slot_data[MXC_MAX_SLOTS]; - int num_domains; - struct device **pd_dev; - struct device_link **pd_link; -}; - -/** - * struct mxc_jpeg_sof_comp - JPEG Start Of Frame component fields - * @id: component id - * @v: vertical sampling - * @h: horizontal sampling - * @quantization_table_no: id of quantization table - */ -struct mxc_jpeg_sof_comp { - u8 id; - u8 v :4; - u8 h :4; - u8 quantization_table_no; -} __packed; - -#define MXC_JPEG_MAX_COMPONENTS 4 -/** - * struct mxc_jpeg_sof - JPEG Start Of Frame marker fields - * @length: Start of Frame length - * @precision: precision (bits per pixel per color component) - * @height: image height - * @width: image width - * @components_no: number of color components - * @comp: component fields for each color component - */ -struct mxc_jpeg_sof { - u16 length; - u8 precision; - u16 height, width; - u8 components_no; - struct mxc_jpeg_sof_comp comp[MXC_JPEG_MAX_COMPONENTS]; -} __packed; - -/** - * struct mxc_jpeg_sos_comp - JPEG Start Of Scan component fields - * @id: component id - * @huffman_table_no: id of the Huffman table - */ -struct mxc_jpeg_sos_comp { - u8 id; /*component id*/ - u8 huffman_table_no; -} __packed; - -/** - * struct mxc_jpeg_sos - JPEG Start Of Scan marker fields - * @length: Start of Frame length - * @components_no: number of color components - * @comp: SOS component fields for each color component - * @ignorable_bytes: ignorable bytes - */ -struct mxc_jpeg_sos { - u16 length; - u8 components_no; - struct mxc_jpeg_sos_comp comp[MXC_JPEG_MAX_COMPONENTS]; - u8 ignorable_bytes[3]; -} __packed; - -#endif |