/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2019 MediaTek Inc. * Author: Xia Jiang * */ #ifndef _MTK_JPEG_ENC_HW_H #define _MTK_JPEG_ENC_HW_H #include #include "mtk_jpeg_core.h" #define JPEG_ENC_INT_STATUS_DONE BIT(0) #define JPEG_ENC_INT_STATUS_MASK_ALLIRQ 0x13 #define JPEG_ENC_DST_ADDR_OFFSET_MASK GENMASK(3, 0) #define JPEG_ENC_CTRL_YUV_FORMAT_MASK 0x18 #define JPEG_ENC_CTRL_RESTART_EN_BIT BIT(10) #define JPEG_ENC_CTRL_FILE_FORMAT_BIT BIT(5) #define JPEG_ENC_CTRL_INT_EN_BIT BIT(2) #define JPEG_ENC_CTRL_ENABLE_BIT BIT(0) #define JPEG_ENC_RESET_BIT BIT(0) #define JPEG_ENC_YUV_FORMAT_YUYV 0 #define JPEG_ENC_YUV_FORMAT_YVYU 1 #define JPEG_ENC_YUV_FORMAT_NV12 2 #define JEPG_ENC_YUV_FORMAT_NV21 3 #define JPEG_ENC_QUALITY_Q60 0x0 #define JPEG_ENC_QUALITY_Q80 0x1 #define JPEG_ENC_QUALITY_Q90 0x2 #define JPEG_ENC_QUALITY_Q95 0x3 #define JPEG_ENC_QUALITY_Q39 0x4 #define JPEG_ENC_QUALITY_Q68 0x5 #define JPEG_ENC_QUALITY_Q84 0x6 #define JPEG_ENC_QUALITY_Q92 0x7 #define JPEG_ENC_QUALITY_Q48 0x8 #define JPEG_ENC_QUALITY_Q74 0xa #define JPEG_ENC_QUALITY_Q87 0xb #define JPEG_ENC_QUALITY_Q34 0xc #define JPEG_ENC_QUALITY_Q64 0xe #define JPEG_ENC_QUALITY_Q82 0xf #define JPEG_ENC_QUALITY_Q97 0x10 #define JPEG_ENC_RSTB 0x100 #define JPEG_ENC_CTRL 0x104 #define JPEG_ENC_QUALITY 0x108 #define JPEG_ENC_BLK_NUM 0x10C #define JPEG_ENC_BLK_CNT 0x110 #define JPEG_ENC_INT_STS 0x11c #define JPEG_ENC_DST_ADDR0 0x120 #define JPEG_ENC_DMA_ADDR0 0x124 #define JPEG_ENC_STALL_ADDR0 0x128 #define JPEG_ENC_OFFSET_ADDR 0x138 #define JPEG_ENC_RST_MCU_NUM 0x150 #define JPEG_ENC_IMG_SIZE 0x154 #define JPEG_ENC_DEBUG_INFO0 0x160 #define JPEG_ENC_DEBUG_INFO1 0x164 #define JPEG_ENC_TOTAL_CYCLE 0x168 #define JPEG_ENC_BYTE_OFFSET_MASK 0x16c #define JPEG_ENC_SRC_LUMA_ADDR 0x170 #define JPEG_ENC_SRC_CHROMA_ADDR 0x174 #define JPEG_ENC_STRIDE 0x178 #define JPEG_ENC_IMG_STRIDE 0x17c #define JPEG_ENC_DCM_CTRL 0x300 #define JPEG_ENC_CODEC_SEL 0x314 #define JPEG_ENC_ULTRA_THRES 0x318 /** * struct mtk_jpeg_enc_qlt - JPEG encoder quality data * @quality_param: quality value * @hardware_value: hardware value of quality */ struct mtk_jpeg_enc_qlt { u8 quality_param; u8 hardware_value; }; void mtk_jpeg_enc_reset(void __iomem *base); u32 mtk_jpeg_enc_get_file_size(void __iomem *base); void mtk_jpeg_enc_start(void __iomem *enc_reg_base); void mtk_jpeg_set_enc_src(struct mtk_jpeg_ctx *ctx, void __iomem *base, struct vb2_buffer *src_buf); void mtk_jpeg_set_enc_dst(struct mtk_jpeg_ctx *ctx, void __iomem *base, struct vb2_buffer *dst_buf); void mtk_jpeg_set_enc_params(struct mtk_jpeg_ctx *ctx, void __iomem *base); #endif /* _MTK_JPEG_ENC_HW_H */