summaryrefslogtreecommitdiff
path: root/zephyr/emul/emul_isl923x.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/emul/emul_isl923x.c')
-rw-r--r--zephyr/emul/emul_isl923x.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/zephyr/emul/emul_isl923x.c b/zephyr/emul/emul_isl923x.c
index 5ee94dfaec..dcbaaf641b 100644
--- a/zephyr/emul/emul_isl923x.c
+++ b/zephyr/emul/emul_isl923x.c
@@ -43,6 +43,9 @@ LOG_MODULE_REGISTER(isl923x_emul, CONFIG_ISL923X_EMUL_LOG_LEVEL);
/** Mask used for the control 1 register */
#define REG_CONTROL1_MASK (GENMASK(15, 8) | GENMASK(6, 0))
+/** Mask used for the control 2 register */
+#define REG_CONTROL2_MASK GENMASK(15, 0)
+
/** Mask used for the AC PROCHOT register */
#define REG_PROCHOT_AC_MASK GENMASK(12, 7)
@@ -68,6 +71,8 @@ struct isl923x_emul_data {
uint16_t control_0_reg;
/** Emulated control 1 register */
uint16_t control_1_reg;
+ /** Emulated control 2 register */
+ uint16_t control_2_reg;
/** Emulated AC PROCHOT register */
uint16_t ac_prochot_reg;
/** Emulated DC PROCHOT register */
@@ -196,6 +201,13 @@ static int isl923x_emul_read_byte(struct i2c_emul *emul, int reg, uint8_t *val,
else
*val = (uint8_t)((data->control_1_reg >> 8) & 0xff);
break;
+ case ISL923X_REG_CONTROL2:
+ __ASSERT_NO_MSG(bytes == 0 || bytes == 1);
+ if (bytes == 0)
+ *val = (uint8_t)(data->control_2_reg & 0xff);
+ else
+ *val = (uint8_t)((data->control_2_reg >> 8) & 0xff);
+ break;
case ISL923X_REG_PROCHOT_AC:
__ASSERT_NO_MSG(bytes == 0 || bytes == 1);
if (bytes == 0)
@@ -270,6 +282,13 @@ static int isl923x_emul_write_byte(struct i2c_emul *emul, int reg, uint8_t val,
else
data->control_1_reg |= (val << 8) & REG_CONTROL1_MASK;
break;
+ case ISL923X_REG_CONTROL2:
+ __ASSERT_NO_MSG(bytes == 1 || bytes == 2);
+ if (bytes == 1)
+ data->control_2_reg = val & REG_CONTROL2_MASK;
+ else
+ data->control_2_reg |= (val << 8) & REG_CONTROL2_MASK;
+ break;
case ISL923X_REG_PROCHOT_AC:
__ASSERT_NO_MSG(bytes == 1 || bytes == 2);
if (bytes == 1)