/* Camera interface */
#define OVREG511_CAM_DELAY		0x10
#define OVREG511_CAM_EDGE		0x11
#define OVREG511_CAM_PXCNT		0x12
#define OVREG511_CAM_LNCNT		0x13
#define OVREG511_CAM_PXDIV		0x14
#define OVREG511_CAM_LNDIV 		0x15
#define OVREG511_CAM_M400		0x16
#define OVREG511_CAM_LINE_MODE		0x17
#define OVREG511_CAM_M420_YFIR		0x18

/* Snapshot mode */
#define OVREG511_SNAP_FRAME		0x19
#define OVREG511_SNAP_PXCNT		0x1A
#define OVREG511_SNAP_LNCNT		0x1B
#define OVREG511_SNAP_PXDIV		0x1C
#define OVREG511_SNAP_LNDIV		0x1D
#define OVREG511_SNAP_UV_EN		0x1E
#define OVREG511_SNAP_OPTS		0x1F

/* DRAM */
#define OVREG511_DRAM_FLOW_CTL		0x20
#define OVREG511_DRAM_ARCP		0x21
#define OVREG511_DRAM_MRC		0x22
#define OVREG511_DRAM_RFC		0x23

/* ISO FIFO */
#define OVREG51x_FIFO_PSIZE		0x30 /* 16-bit on OV518/OV51*/
#define OVREG511_FIFO_OPTS		0x31

/* Parallel I/O */
#define OVREG511_PIO_OPTS		0x38
#define OVREG511_PIO_DATA		0x39
#define OVREG511_PIO_BIST		0x3E

/* i2c */
#define OVREG511_I2C_CTL		0x40
#define OVREG518_I2C_CTL		0x47
#define OVREG51x_I2C_W_SID		0x41
#define OVREG51x_I2C_SADDR_3		0x42
#define OVREG51x_I2C_SADDR_2		0x43
#define OVREG51x_I2C_SID		0x44
#define OVREG51x_I2C_DATA		0x45
#define OVREG51x_I2C_CLOCK		0x46
#define OVREG51x_I2C_TIMEOUT		0x47

/* i2c snapshot */
#define OVREG511_SI2C_SADDR_E		0x48
#define OVREG511_SI2C_DATA		0x49

/* System control */
#define OVREG51x_SYS_RESET		0x50
/* Reset types */
#define OV511_RESET_UDC			0x01
#define OV511_RESET_I2C			0x02
#define OV511_RESET_FIFO		0x04
#define OV511_RESET_OMNICE		0x08
#define OV511_RESET_DRAM		0x10
#define OV511_RESET_CAM_INT		0x20
#define OV511_RESET_OV511		0x40
#define OV511_RESET_NOREGS		0x3F
#define OV511_RESET_ALL			0x7F

#define OVREG511_SYS_CLOCK_DIV		0x51
#define OVREG511_SYS_SNAP		0x52
#define OVREG511_SYS_INIT		0x53
#define OVREG511_SYS_PWR_CLK		0x54	/* OV511/OV518/OV518+ */
#define OVREG511_SYS_LED_CTL		0x55	/* OV511+ only */
#define OVREG511_SYS_USER		0x5E
#define OVREG511_SYS_CUST_ID		0x5F

/* Compression */
#define OVREG511_REG_PRH_Y		0x70
#define OVREG511_REG_PRH_UV		0x71
#define OVREG511_REG_PRV_Y		0x72
#define OVREG511_REG_PRV_UV		0x73
#define OVREG511_REG_QTH_Y		0x74
#define OVREG511_REG_QTH_UV		0x75
#define OVREG511_REG_QTV_Y		0x76
#define OVREG511_REG_QTV_UV		0x77
#define OVREG511_REG_CE_EN		0x78
#define OVREG511_REG_LT_EN		0x79
#define OVREG511_REG_LT_EN		0x79

#define OV7610_REG_GC		0x00
#define OV7610_REG_BLU		0x01
#define OV7610_REG_RED		0x02
#define OV7610_REG_SAT		0x03
#define OV7610_REG_CTR		0x05
#define OV7610_REG_BRT		0x06
#define OV7610_REG_BBS		0x0C
#define OV7610_REG_RBS		0x0D
#define OV7610_REG_GAM		0x0E
#define OV7610_REG_RWB		0x0F
#define OV7610_REG_EC		0x10
#define OV7610_REG_SYN_CLK	0x11
#define OV7610_REG_COMA		0x12
#define OV7610_REG_COMB		0x13
#define OV7610_REG_COMC		0x14
#define OV7610_REG_COMD		0x15
#define OV7610_REG_FD		0x16
#define OV7610_REG_HS		0x17
#define OV7610_REG_HE		0x18
#define OV7610_REG_VS		0x19
#define OV7610_REG_VE		0x1A
#define OV7610_REG_PS		0x1B
#define OV7610_REG_MIDH		0x1C
#define OV7610_REG_MIDL		0x1D
#define OV7610_REG_COME		0x20
#define OV7610_REG_YOF		0x21
#define OV7610_REG_UOF		0x22
#define OV7610_REG_ECW		0x24
#define OV7610_REG_ECB		0x25
#define OV7610_REG_COMF		0x26
#define OV7610_REG_COMG		0x27
#define OV7610_REG_COMH		0x28
#define OV7610_REG_COMI		0x29
#define OV7610_REG_EHSH		0x2A
#define OV7610_REG_EHSL		0x2B
#define OV7610_REG_EXBK		0x2C
#define OV7610_REG_COMJ		0x2D
#define OV7610_REG_VOF		0x2E
#define OV7610_REG_ABS		0x2F
#define OV7610_REG_YGAM		0x33
#define OV7610_REG_BADJ		0x34
#define OV7610_REG_COML		0x35
#define OV7610_REG_COMK		0x38

#define OV7610_I2C_WRITE_ID	0x42
#define OV7610_I2C_READ_ID	0x43

#define OV7610_I2C_RETRIES	3
#define OV7610_I2C_CLOCK_DIV	4

/*         ALTERNATE NUMBERS         */

/* Alternate numbers for various max packet sizes (OV511 only) */
#define OV511_ALT_SIZE_992      0
#define OV511_ALT_SIZE_993      1
#define OV511_ALT_SIZE_768      2
#define OV511_ALT_SIZE_769      3
#define OV511_ALT_SIZE_512      4
#define OV511_ALT_SIZE_513      5
#define OV511_ALT_SIZE_257      6
#define OV511_ALT_SIZE_0        7

/* Alternate numbers for various max packet sizes (OV511+ only) */
#define OV511PLUS_ALT_SIZE_0    0
#define OV511PLUS_ALT_SIZE_33   1
#define OV511PLUS_ALT_SIZE_129  2
#define OV511PLUS_ALT_SIZE_257  3
#define OV511PLUS_ALT_SIZE_385  4
#define OV511PLUS_ALT_SIZE_513  5
#define OV511PLUS_ALT_SIZE_769  6
#define OV511PLUS_ALT_SIZE_961  7

/* Alternate numbers for various max packet sizes (OV518(+) only) */
#define OV518_ALT_SIZE_0        0
#define OV518_ALT_SIZE_128      1
#define OV518_ALT_SIZE_256      2
#define OV518_ALT_SIZE_384      3
#define OV518_ALT_SIZE_512      4
#define OV518_ALT_SIZE_640      5
#define OV518_ALT_SIZE_768      6
#define OV518_ALT_SIZE_896      7