| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * Copyright (c) 2019 MediaTek Inc. |
| * Author: Xia Jiang <xia.jiang@mediatek.com> |
| * |
| */ |
| |
| #ifndef _MTK_JPEG_ENC_HW_H |
| #define _MTK_JPEG_ENC_HW_H |
| |
| #include <media/videobuf2-core.h> |
| |
| #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 */ |