unplugged-kernel/drivers/misc/mediatek/jpeg/v2/jpeg_drv_common.h

199 lines
5.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (c) 2020 MediaTek Inc.
*/
#ifndef __JPEG_DRV_COMMON_H__
#define __JPEG_DRV_COMMON_H__
/* #include <mach/mt_typedefs.h> */
/* #include <mach/typedefs.h> */
#include "jpeg_drv.h"
#include <ion_drv.h>
extern unsigned int _jpeg_enc_int_status;
extern unsigned int _jpeg_dec_int_status;
extern unsigned int _jpeg_hybrid_dec_int_status[HW_CORE_NUMBER];
extern unsigned int _jpeg_dec_mode;
enum JpegDrvEncYUVFormat {
YUYV,
YVYU,
NV12,
NV21
};
enum JpegDrvEncQuality {
Q60 = 0x0,
Q80 = 0x1,
Q90 = 0x2,
Q95 = 0x3,
Q39 = 0x4,
Q68 = 0x5,
Q84 = 0x6,
Q92 = 0x7,
Q48 = 0x9,
Q74 = 0xA,
Q87 = 0xB,
Q34 = 0xD,
Q64 = 0xE,
Q82 = 0xF,
Q_ALL = 0x10
};
struct JpegDrvEncSrcCfg {
unsigned int width;
unsigned int height;
unsigned int yuv_format;
unsigned int luma_addr;
unsigned int chroma_addr;
};
struct JpegDrvEncDstCfg {
unsigned int exif_en; /* 0:JPG mode, 1:JFIF/EXIF mode */
unsigned int dst_addr;
unsigned int dst_size;
unsigned int offset_addr;
unsigned int byte_offset_mask;
};
struct JpegDrvEncCtrlCfg {
unsigned int quality;
unsigned int restart_interval;
unsigned int gmc_disable; /* HW not support */
};
#define JPEG_DRV_ENC_YUYV (0x00 << 3)
#define JPEG_DRV_ENC_YVYU (0x01 << 3)
#define JPEG_DRV_ENC_NV12 (0x02 << 3)
#define JPEG_DRV_ENC_NV21 (0x03 << 3)
#define JPEG_MSG pr_info
#define JPEG_WRN pr_info
#define JPEG_ERR pr_info
#define JPEG_VEB pr_info
#define JPEG_LOG(level, format, args...) \
do { \
if ((jpg_dbg_level & level) == level) \
pr_info("[JPEG] level=%d %s(),%d: " format "\n",\
level, __func__, __LINE__, ##args); \
} while (0)
/* /////// JPEG Driver Decoder /////// */
/* */
/* */
void jpeg_drv_dec_power_on(void);
void jpeg_drv_dec_power_off(void);
unsigned int jpeg_drv_dec_set_config_data(struct JPEG_DEC_DRV_IN *config);
unsigned int jpeg_drv_dec_set_dst_bank0(
unsigned int addr_Y,
unsigned int addr_U,
unsigned int addr_V);
void jpeg_drv_dec_verify_state_and_reset(void);
void jpeg_drv_dec_reset(void);
void jpeg_drv_dec_warm_reset(void);
void jpeg_drv_dec_start(void);
int jpeg_drv_dec_wait(struct JPEG_DEC_DRV_IN *config);
void jpeg_drv_dec_dump_key_reg(void);
void jpeg_drv_dec_dump_reg(void);
int jpeg_drv_dec_break(void);
unsigned int jpeg_drv_dec_set_pause_mcu_idx(unsigned int McuIdx);
void jpeg_drv_dec_resume(unsigned int resume);
unsigned int jpeg_drv_dec_get_result(void);
/* ///// JPEG Driver Encoder /////// */
void jpeg_drv_enc_power_on(void);
void jpeg_drv_enc_power_off(void);
unsigned int jpeg_drv_enc_src_cfg(struct JpegDrvEncSrcCfg srcCfg);
unsigned int jpeg_drv_enc_dst_buff(struct JpegDrvEncDstCfg dstCfg);
unsigned int jpeg_drv_enc_ctrl_cfg(unsigned int exif_en, unsigned int quality,
unsigned int restart_interval);
void jpeg_drv_enc_verify_state_and_reset(void);
void jpeg_drv_enc_reset(void);
unsigned int jpeg_drv_enc_warm_reset(void);
void jpeg_drv_enc_start(void);
unsigned int jpeg_drv_enc_set_quality(unsigned int quality);
unsigned int jpeg_drv_enc_set_img_size(unsigned int width, unsigned int height);
unsigned int jpeg_drv_enc_set_blk_num(unsigned int blk_num);
unsigned int jpeg_drv_enc_set_luma_addr(dma_addr_t src_luma_addr);
unsigned int jpeg_drv_enc_set_chroma_addr(dma_addr_t src_luma_addr);
unsigned int jpeg_drv_enc_set_memory_stride(unsigned int mem_stride);
unsigned int jpeg_drv_enc_set_image_stride(unsigned int img_stride);
void jpeg_drv_enc_set_restart_interval(unsigned int restart_interval);
unsigned int jpeg_drv_enc_set_offset_addr(unsigned int offset);
/* 0:JPG mode, 1:JFIF/EXIF mode */
void jpeg_drv_enc_set_EncodeMode(unsigned int exif_en);
void jpeg_drv_enc_set_burst_type(unsigned int burst_type);
unsigned int jpeg_drv_enc_set_dst_buff(
struct ion_client *pIonClient,
int dstFd,
unsigned int stall_size,
unsigned int init_offset,
unsigned int offset_mask);
unsigned int jpeg_drv_enc_set_sample_format_related(
unsigned int width,
unsigned int height,
unsigned int yuv_format);
unsigned int jpeg_drv_enc_get_file_size(void);
unsigned int jpeg_drv_enc_get_result(unsigned int *fileSize);
unsigned int jpeg_drv_enc_get_cycle_count(void);
void jpeg_drv_enc_dump_reg(void);
unsigned int jpeg_drv_enc_rw_reg(void);
void jpegenc_drv_enc_remove_bw_request(void);
void jpeg_drv_enc_prepare_bw_request(void);
void jpegenc_drv_enc_update_bw_request(struct JPEG_ENC_DRV_IN cfgEnc);
int jpeg_isr_enc_lisr(void);
int jpeg_isr_dec_lisr(void);
int jpeg_isr_hybrid_dec_lisr(int id);
int jpeg_drv_hybrid_dec_start(unsigned int data[],
unsigned int id,
int *index_buf_fd);
void jpeg_drv_hybrid_dec_get_p_n_s(unsigned int id,
int *progress_n_status);
unsigned int jpeg_drv_enc_set_src_image(
unsigned int width,
unsigned int height,
unsigned int yuv_format,
unsigned int totalEncDU);
unsigned int jpeg_drv_enc_set_src_buf(
struct ion_client *pIonClient,
unsigned int yuv_format,
unsigned int img_stride,
unsigned int mem_stride,
unsigned int mem_height,
int srcFd,
int srcFd2);
unsigned int jpeg_drv_enc_set_encFormat(unsigned int encFormat);
#endif