sensors/ov7725: Add controls for blc.

This commit is contained in:
Kwabena W. Agyeman 2023-09-10 14:24:45 -07:00
parent 3fde9542a8
commit 33db84ebdc
2 changed files with 30 additions and 0 deletions

View File

@ -545,6 +545,32 @@ static int get_rgb_gain_db(sensor_t *sensor, float *r_gain_db, float *g_gain_db,
return ret;
}
static int set_auto_blc(sensor_t *sensor, int enable, int *regs) {
uint8_t reg;
int ret = omv_i2c_readb(&sensor->i2c_bus, sensor->slv_addr, COM13, &reg);
ret |= omv_i2c_writeb(&sensor->i2c_bus, sensor->slv_addr, COM13, COM13_SET_BLC(reg, (enable != 0)));
if ((enable == 0) && (regs != NULL)) {
for (uint32_t i = 0; i < sensor->hw_flags.blc_size; i++) {
ret |= omv_i2c_writeb(&sensor->i2c_bus, sensor->slv_addr, ADOFF_B + i, regs[i]);
}
}
return ret;
}
static int get_blc_regs(sensor_t *sensor, int *regs) {
int ret = 0;
for (uint32_t i = 0; i < sensor->hw_flags.blc_size; i++) {
uint8_t reg;
ret |= omv_i2c_readb(&sensor->i2c_bus, sensor->slv_addr, ADOFF_B + i, &reg);
regs[i] = reg;
}
return ret;
}
static int set_hmirror(sensor_t *sensor, int enable) {
uint8_t reg;
int ret = omv_i2c_readb(&sensor->i2c_bus, sensor->slv_addr, COM3, &reg);
@ -611,6 +637,8 @@ int ov7725_init(sensor_t *sensor) {
sensor->get_exposure_us = get_exposure_us;
sensor->set_auto_whitebal = set_auto_whitebal;
sensor->get_rgb_gain_db = get_rgb_gain_db;
sensor->set_auto_blc = set_auto_blc;
sensor->get_blc_regs = get_blc_regs;
sensor->set_hmirror = set_hmirror;
sensor->set_vflip = set_vflip;
sensor->set_special_effect = set_special_effect;
@ -625,6 +653,7 @@ int ov7725_init(sensor_t *sensor) {
sensor->hw_flags.gs_bpp = 2;
sensor->hw_flags.rgb_swap = 1;
sensor->hw_flags.yuv_order = SENSOR_HW_FLAGS_YVU422;
sensor->hw_flags.blc_size = 8;
return 0;
}

View File

@ -184,6 +184,7 @@
#define COM13_ADC_EN 0x40 /* ADC channel BLC ON/OFF control */
#define COM13_ANALOG_BLC 0x20 /* Analog processing channel BLC ON/OFF control */
#define COM13_ABLC_GAIN_EN 0x04 /* ABLC gain trigger enable */
#define COM13_SET_BLC(r, x) ((r & 0x7F) | ((x & 0x1) << 7))
#define COM14 0x3F /* Common Control 14 */
#define COM15 0x40 /* Common Control 15 */