/* 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