From 247ad41bb206ec93db9bf03520120f93313a1a53 Mon Sep 17 00:00:00 2001 From: SPRESENSE <41312067+SPRESENSE@users.noreply.github.com> Date: Tue, 29 Mar 2022 11:22:40 +0900 Subject: [PATCH] drivers/video/isx012: Fix getting the iso sensitivity Fix bug to get the value of iso sensitivity. --- drivers/video/isx012.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/drivers/video/isx012.c b/drivers/video/isx012.c index 8c8389b327..067a430041 100644 --- a/drivers/video/isx012.c +++ b/drivers/video/isx012.c @@ -187,7 +187,7 @@ typedef struct isx012_dev_s isx012_dev_t; /* register operations */ -static uint16_t isx012_getreg(isx012_dev_t *priv, +static uint16_t isx012_getreg(FAR isx012_dev_t *priv, uint16_t regaddr, uint16_t regsize); static int isx012_putreg(isx012_dev_t *priv, uint16_t regaddr, uint16_t regval, uint16_t regsize); @@ -195,7 +195,7 @@ static int isx012_putreglist(isx012_dev_t *priv, FAR const isx012_reg_t *reglist, size_t nentries); #ifdef ISX012_CHECK_IN_DETAIL static int isx012_putregs(isx012_dev_t *priv, uint16_t regaddr, - uint8_t *regvals, uint8_t regsize); + FAR uint8_t *regvals, uint8_t regsize); static int isx012_chipid(FAR struct i2c_master_s *i2c); #endif @@ -205,8 +205,8 @@ static int isx012_chk_int_state(isx012_dev_t *priv, static int isx012_set_mode_param(isx012_dev_t *priv, imgsensor_stream_type_t type, uint8_t nr_fmt, - imgsensor_format_t *fmt, - imgsensor_interval_t *interval); + FAR imgsensor_format_t *fmt, + FAR imgsensor_interval_t *interval); static int isx012_change_camera_mode(isx012_dev_t *priv, uint8_t mode); static int isx012_change_device_state(isx012_dev_t *priv, isx012_state_t state); @@ -215,7 +215,7 @@ static int isx012_replace_frameinterval_to_regval static int8_t isx012_get_maximum_fps (uint8_t nr_datafmt, FAR imgsensor_format_t *datafmt); -static int isx012_set_shd(FAR isx012_dev_t *priv); +static int isx012_set_shd(isx012_dev_t *priv); static bool is_movie_needed(uint8_t fmt, uint8_t fps); /* image sensor device operations interface */ @@ -223,7 +223,7 @@ static bool is_movie_needed(uint8_t fmt, uint8_t fps); static bool isx012_is_available(void); static int isx012_init(void); static int isx012_uninit(void); -static const char *isx012_get_driver_name(void); +static FAR const char *isx012_get_driver_name(void); static int isx012_validate_frame_setting(imgsensor_stream_type_t type, uint8_t nr_datafmt, FAR imgsensor_format_t *datafmts, @@ -647,7 +647,7 @@ static void i2c_unlock(void) nxsem_post(&g_isx012_private.i2c_lock); } -static uint16_t isx012_getreg(isx012_dev_t *priv, +static uint16_t isx012_getreg(FAR isx012_dev_t *priv, uint16_t regaddr, uint16_t regsize) { struct i2c_config_s config; @@ -667,7 +667,7 @@ static uint16_t isx012_getreg(isx012_dev_t *priv, /* Write the register address */ - ret = i2c_write(priv->i2c, &config, (uint8_t *)buffer, 2); + ret = i2c_write(priv->i2c, &config, (FAR uint8_t *)buffer, 2); if (ret < 0) { verr("i2c_write failed: %d\n", ret); @@ -676,7 +676,7 @@ static uint16_t isx012_getreg(isx012_dev_t *priv, { /* Restart and read 16bits from the register */ - ret = i2c_read(priv->i2c, &config, (uint8_t *)buffer, regsize); + ret = i2c_read(priv->i2c, &config, (FAR uint8_t *)buffer, regsize); if (ret < 0) { verr("i2c_read failed: %d\n", ret); @@ -687,7 +687,7 @@ static uint16_t isx012_getreg(isx012_dev_t *priv, if (ret >= 0) { - memcpy((uint8_t *)®val, (uint8_t *)buffer, regsize); + memcpy((FAR uint8_t *)®val, (FAR uint8_t *)buffer, regsize); } return regval; @@ -711,14 +711,14 @@ static int isx012_putreg(isx012_dev_t *priv, buffer[0] = regaddr >> 8; /* RegAddr Hi */ buffer[1] = regaddr & 0xff; /* RegAddr Low */ - memcpy((uint8_t *)&buffer[2], (uint8_t *)®val, regsize); + memcpy((FAR uint8_t *)&buffer[2], (FAR uint8_t *)®val, regsize); i2c_lock(); /* And do it */ ret = i2c_write(priv->i2c, &config, - (uint8_t *)buffer, regsize + 2); + (FAR uint8_t *)buffer, regsize + 2); if (ret < 0) { verr("i2c_write failed: %d\n", ret); @@ -777,7 +777,7 @@ static int isx012_chk_int_state(isx012_dev_t *priv, } static int isx012_replace_fmt_to_regval(uint8_t nr_fmt, - imgsensor_format_t *fmt) + FAR imgsensor_format_t *fmt) { int ret; @@ -839,8 +839,8 @@ static bool is_movie_needed(uint8_t fmt, uint8_t fps) static int isx012_set_mode_param(isx012_dev_t *priv, imgsensor_stream_type_t type, uint8_t nr_fmt, - imgsensor_format_t *fmt, - imgsensor_interval_t *interval) + FAR imgsensor_format_t *fmt, + FAR imgsensor_interval_t *interval) { int ret = 0; int fmt_val = isx012_replace_fmt_to_regval(nr_fmt, fmt); @@ -1276,7 +1276,6 @@ static bool isx012_is_available(void) ret = (isx012_getreg(&g_isx012_private, DEVICESTS, 1) == DEVICESTS_SLEEP); - isx012_uninit(); return ret; @@ -1338,7 +1337,7 @@ static int isx012_uninit(void) return ret; } -static const char *isx012_get_driver_name(void) +static FAR const char *isx012_get_driver_name(void) { return "ISX012"; } @@ -2046,10 +2045,12 @@ static int isx012_get_value(uint32_t id, break; case IMGSENSOR_ID_ISO_SENSITIVITY: - readvalue = isx012_getreg(priv, ISX012_REG_ISO, ISX012_SIZE_ISO); + readvalue = isx012_getreg(priv, + ISX012_REG_ISOAUTOVALUE, + ISX012_SIZE_ISOAUTOVALUE); ret = -EINVAL; - for (cnt = 0; cnt < ARRAY_NENTRIES(g_isx012_presetwb_regval); cnt++) + for (cnt = 0; cnt < ARRAY_NENTRIES(g_isx012_iso_regval); cnt++) { if (g_isx012_iso_regval[cnt] == readvalue) {