Skip to content

Commit 42d6bed

Browse files
committed
drivers: ctr_s1: Fix random beep
Signed-off-by: Martin Hubáček <[email protected]>
1 parent 74bb003 commit 42d6bed

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

drivers/ctr_s1/ctr_s1.c

+11-5
Original file line numberDiff line numberDiff line change
@@ -800,11 +800,17 @@ static void work_handler(struct k_work *work)
800800

801801
k_mutex_lock(&data->lock, K_FOREVER);
802802

803-
uint16_t reg_irq0;
804-
ret = read(data->dev, REG_IRQ0, &reg_irq0);
805-
if (ret) {
806-
k_mutex_unlock(&data->lock);
807-
LOG_ERR("Call `read` failed: %d", ret);
803+
uint16_t reg_irq0 = 0;
804+
805+
/* Repeat read in case of I2C error */
806+
for (int i = 0; i < 8; i++) {
807+
ret = read(data->dev, REG_IRQ0, &reg_irq0);
808+
if (ret) {
809+
k_mutex_unlock(&data->lock);
810+
LOG_ERR("Call `read` failed: %d", ret);
811+
continue;
812+
}
813+
break;
808814
}
809815

810816
ret = write(data->dev, REG_IRQ0, reg_irq0);

0 commit comments

Comments
 (0)