aboutsummaryrefslogtreecommitdiff
path: root/drivers/misc/mediatek/jpeg/mt6735/jpeg_drv_6589_common.h
blob: b95a645b653be9eb6ce7fec3a89c992fdde322e5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#ifndef __JPEG_DRV_6589_COMMON_H__
#define __JPEG_DRV_6589_COMMON_H__

/*
//#include <linux/uaccess.h>
//#include <linux/module.h>
//#include <linux/fs.h>
//#include <linux/platform_device.h>
//#include <linux/cdev.h>
//#include <linux/interrupt.h>
//#include <linux/sched.h>
//#include <linux/wait.h>
//#include <linux/spinlock.h>
//#include <linux/delay.h>
//#include <linux/earlysuspend.h>
//#include <linux/mm.h>
//#include <linux/slab.h>
//
//#include <mach/mt6575_typedefs.h>
//
//#include <asm/tcm.h>
//#include <asm/io.h>
*/

#include <mach/mt_typedefs.h>
//#include <mach/typedefs.h>

#include "jpeg_drv.h"






/*
typedef unsigned int    kal_uint32;
typedef unsigned char   kal_uint8;
typedef int             kal_int32;
*/


/* Decoder Driver */




/* Encoder Driver */

typedef enum
{
    YUYV,
    YVYU,
    NV12,
    NV21
} JpegDrvEncYUVFormat;

typedef enum
{
    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
} JpegDrvEncQuality;


typedef struct 
{
    kal_uint32 width;
    kal_uint32 height;
    kal_uint32 yuv_format;
    kal_uint32 luma_addr;
    kal_uint32 chroma_addr;
} JpegDrvEncSrcCfg;

typedef struct
{
    kal_uint32 exif_en;// 0:JPG mode, 1:JFIF/EXIF mode
    kal_uint32 dst_addr;
    kal_uint32 dst_size;
    kal_uint32 offset_addr;
    kal_uint32 byte_offset_mask;
} JpegDrvEncDstCfg;

typedef struct
{
    kal_uint32 quality;
    kal_uint32 restart_interval;
    kal_uint32  gmc_disable;        //HW not support
} JpegDrvEncCtrlCfg;

#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)


///////// JPEG Driver Decoder ///////
//
//
int        jpeg_drv_dec_set_config_data(JPEG_DEC_DRV_IN* config);
void       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(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);

void       jpeg_drv_dec_set_pause_mcu_idx(unsigned int McuIdx) ;
void       jpeg_drv_dec_resume(unsigned int resume) ;

kal_uint32 jpeg_drv_dec_get_result(void) ;


/////// JPEG Driver Encoder ///////

kal_uint32 jpeg_drv_enc_src_cfg(JpegDrvEncSrcCfg srcCfg);
kal_uint32 jpeg_drv_enc_dst_buff(JpegDrvEncDstCfg dstCfg);
kal_uint32 jpeg_drv_enc_ctrl_cfg( kal_uint32 exif_en, kal_uint32 quality, kal_uint32 restart_interval);

void       jpeg_drv_enc_verify_state_and_reset(void);
void       jpeg_drv_enc_reset(void);
kal_uint32 jpeg_drv_enc_warm_reset(void);
void       jpeg_drv_enc_start(void);
kal_uint32 jpeg_drv_enc_set_quality(kal_uint32 quality);
kal_uint32 jpeg_drv_enc_set_img_size(kal_uint32 width, kal_uint32 height);
kal_uint32 jpeg_drv_enc_set_blk_num(kal_uint32 blk_num);
kal_uint32 jpeg_drv_enc_set_luma_addr(kal_uint32 src_luma_addr);
kal_uint32 jpeg_drv_enc_set_chroma_addr(kal_uint32 src_luma_addr);
kal_uint32 jpeg_drv_enc_set_memory_stride(kal_uint32 mem_stride);
kal_uint32 jpeg_drv_enc_set_image_stride(kal_uint32 img_stride);
void       jpeg_drv_enc_set_restart_interval(kal_uint32 restart_interval);
kal_uint32 jpeg_drv_enc_set_offset_addr(kal_uint32 offset);
void       jpeg_drv_enc_set_EncodeMode(kal_uint32 exif_en);// 0:JPG mode, 1:JFIF/EXIF mode
void       jpeg_drv_enc_set_burst_type(kal_uint32 burst_type);
kal_uint32 jpeg_drv_enc_set_dst_buff(kal_uint32 dst_addr, kal_uint32 stall_size, kal_uint32 init_offset, kal_uint32 offset_mask);
kal_uint32 jpeg_drv_enc_set_sample_format_related(kal_uint32 width, kal_uint32 height, kal_uint32 yuv_format);
kal_uint32 jpeg_drv_enc_get_file_size(void);
kal_uint32 jpeg_drv_enc_get_result(kal_uint32 *fileSize);
kal_uint32 jpeg_drv_enc_get_cycle_count(void);

void       jpeg_drv_enc_dump_reg(void);

kal_uint32 jpeg_drv_enc_rw_reg(void);


int        jpeg_isr_enc_lisr(void);
int        jpeg_isr_dec_lisr(void);


kal_uint32 jpeg_drv_enc_set_src_image(kal_uint32 width, kal_uint32 height, kal_uint32 yuv_format, kal_uint32 totalEncDU) ;
kal_uint32 jpeg_drv_enc_set_src_buf(kal_uint32 yuv_format, kal_uint32 img_stride, kal_uint32 mem_stride, kal_uint32 srcAddr, kal_uint32 srcAddr_C) ;
kal_uint32 jpeg_drv_enc_set_encFormat(kal_uint32 encFormat);


#endif