9#ifndef __OV2640_REGS_H__
10#define __OV2640_REGS_H__
35#define IMAGE_MODE 0xDA
48#define CTRLI_LP_DP 0x80
49#define CTRLI_ROUND 0x40
51#define CTRL0_AEC_EN 0x80
52#define CTRL0_AEC_SEL 0x40
53#define CTRL0_STAT_SEL 0x20
54#define CTRL0_VFIRST 0x10
55#define CTRL0_YUV422 0x08
56#define CTRL0_YUV_EN 0x04
57#define CTRL0_RGB_EN 0x02
58#define CTRL0_RAW_EN 0x01
60#define CTRL2_DCW_EN 0x20
61#define CTRL2_SDE_EN 0x10
62#define CTRL2_UV_ADJ_EN 0x08
63#define CTRL2_UV_AVG_EN 0x04
64#define CTRL2_CMX_EN 0x01
66#define CTRL3_BPC_EN 0x80
67#define CTRL3_WPC_EN 0x40
69#define R_DVP_SP_DIV_YUV(x) ((x)&0x7F)
70#define R_DVP_SP_DIV_RAW(x) ((x >> 1)&0x7F)
71#define R_DVP_SP_AUTO_MODE 0x80
73#define R_BYPASS_DSP_EN 0x00
74#define R_BYPASS_DSP_BYPAS 0x01
76#define IMAGE_MODE_Y8_DVP_EN 0x40
77#define IMAGE_MODE_JPEG_EN 0x10
78#define IMAGE_MODE_YUV422 0x00
79#define IMAGE_MODE_RAW10 0x04
80#define IMAGE_MODE_RGB565 0x08
81#define IMAGE_MODE_HREF_VSYNC 0x02
82#define IMAGE_MODE_LBYTE_FIRST 0x01
84#define RESET_MICROC 0x40
85#define RESET_SCCB 0x20
86#define RESET_JPEG 0x10
91#define MC_BIST_RESET 0x80
92#define MC_BIST_BOOT_ROM_SEL 0x40
93#define MC_BIST_12KB_SEL 0x20
94#define MC_BIST_12KB_MASK 0x30
95#define MC_BIST_512KB_SEL 0x08
96#define MC_BIST_512KB_MASK 0x0C
97#define MC_BIST_BUSY_BIT_R 0x02
98#define MC_BIST_MC_RES_ONE_SH_W 0x02
99#define MC_BIST_LAUNCH 0x01
101#define BANK_SEL_DSP 0x00
102#define BANK_SEL_SENSOR 0x01
151#define HISTO_LOW 0x61
152#define HISTO_HIGH 0x62
154#define REG04_DEFAULT 0x28
155#define REG04_HFLIP_IMG 0x80
156#define REG04_VFLIP_IMG 0x40
157#define REG04_VREF_EN 0x10
158#define REG04_HREF_EN 0x08
159#define REG04_SET(x) (REG04_DEFAULT|x)
161#define COM2_STDBY 0x10
162#define COM2_OUT_DRIVE_1x 0x00
163#define COM2_OUT_DRIVE_2x 0x01
164#define COM2_OUT_DRIVE_3x 0x02
165#define COM2_OUT_DRIVE_4x 0x03
167#define COM3_DEFAULT 0x38
168#define COM3_BAND_50Hz 0x04
169#define COM3_BAND_60Hz 0x00
170#define COM3_BAND_AUTO 0x02
171#define COM3_BAND_SET(x) (COM3_DEFAULT|x)
173#define COM7_SRST 0x80
174#define COM7_RES_UXGA 0x00
175#define COM7_RES_SVGA 0x40
176#define COM7_RES_CIF 0x20
177#define COM7_ZOOM_EN 0x04
178#define COM7_COLOR_BAR 0x02
180#define COM8_DEFAULT 0xC0
181#define COM8_BNDF_EN 0x20
182#define COM8_AGC_EN 0x04
183#define COM8_AEC_EN 0x01
184#define COM8_SET(x) (COM8_DEFAULT|x)
186#define COM9_DEFAULT 0x08
187#define COM9_AGC_GAIN_2x 0x00
188#define COM9_AGC_GAIN_4x 0x01
189#define COM9_AGC_GAIN_8x 0x02
190#define COM9_AGC_GAIN_16x 0x03
191#define COM9_AGC_GAIN_32x 0x04
192#define COM9_AGC_GAIN_64x 0x05
193#define COM9_AGC_GAIN_128x 0x06
194#define COM9_AGC_SET(x) (COM9_DEFAULT|(x<<5))
196#define COM10_HREF_EN 0x80
197#define COM10_HSYNC_EN 0x40
198#define COM10_PCLK_FREE 0x20
199#define COM10_PCLK_EDGE 0x10
200#define COM10_HREF_NEG 0x08
201#define COM10_VSYNC_NEG 0x02
202#define COM10_HSYNC_NEG 0x01
204#define CTRL1_AWB 0x08
206#define VV_AGC_TH_SET(h,l) ((h<<4)|(l&0x0F))
208#define REG32_UXGA 0x36
209#define REG32_SVGA 0x09
210#define REG32_CIF 0x89
212#define CLKRC_DIV(x) (((x) - 1)&0x1F)
214#define CLKRC_2X_UXGA (CLKRC_2X | CLKRC_DIV(12))
215#define CLKRC_2X_SVGA (CLKRC_2X | CLKRC_DIV(8))
216#define CLKRC_2X_CIF (CLKRC_2X | CLKRC_DIV(0))
219#define NUM_CONTRAST_LEVELS (5)
220static const uint8_t contrast_regs[NUM_CONTRAST_LEVELS + 1][7] = {
221 {BPADDR, BPDATA, BPADDR, BPDATA, BPDATA, BPDATA, BPDATA },
222 {0x00, 0x04, 0x07, 0x20, 0x18, 0x34, 0x06 },
223 {0x00, 0x04, 0x07, 0x20, 0x1c, 0x2a, 0x06 },
224 {0x00, 0x04, 0x07, 0x20, 0x20, 0x20, 0x06 },
225 {0x00, 0x04, 0x07, 0x20, 0x24, 0x16, 0x06 },
226 {0x00, 0x04, 0x07, 0x20, 0x28, 0x0c, 0x06 },
230#define NUM_SATURATION_LEVELS (5)
231static const uint8_t saturation_regs[NUM_SATURATION_LEVELS + 1][5] = {
232 {BPADDR, BPDATA, BPADDR, BPDATA, BPDATA },
233 {0x00, 0x02, 0x03, 0x28, 0x28 },
234 {0x00, 0x02, 0x03, 0x38, 0x38 },
235 {0x00, 0x02, 0x03, 0x48, 0x48 },
236 {0x00, 0x02, 0x03, 0x58, 0x58 },
237 {0x00, 0x02, 0x03, 0x68, 0x68 },
241#define NUM_SPECIAL_EFFECTS (7)
242static const uint8_t special_effects_regs[NUM_SPECIAL_EFFECTS + 1][5] = {
243 {BPADDR, BPDATA, BPADDR, BPDATA, BPDATA },
244 {0x00, 0X00, 0x05, 0X80, 0X80 },
245 {0x00, 0X40, 0x05, 0X80, 0X80 },
246 {0x00, 0X18, 0x05, 0X80, 0X80 },
247 {0x00, 0X18, 0x05, 0X40, 0XC0 },
248 {0x00, 0X18, 0x05, 0X40, 0X40 },
249 {0x00, 0X18, 0x05, 0XA0, 0X40 },
250 {0x00, 0X18, 0x05, 0X40, 0XA6 },
254#define NUM_WB_MODES (4)
255static const uint8_t wb_modes_regs[NUM_WB_MODES + 1][3] = {
264#define NUM_AE_LEVELS (5)
265static const uint8_t ae_levels_regs[NUM_AE_LEVELS + 1][3] = {
274#define ENDMARKER {0xff, 0xff}