92 lines
2.7 KiB
C
92 lines
2.7 KiB
C
/* 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 */
|