summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Chung <nickchung@google.com>2022-12-26 20:44:32 +0800
committerHolmes Chou <holmeschou@google.com>2023-02-23 06:51:39 +0000
commitc77b913d949f27393956aa8cfe07f584a8b62d47 (patch)
tree141e014656b6954991e391364b18a9e4c01c4e58
parente67f0e772f7df65aa900d1b4e2c5ab3e6c97041f (diff)
downloadlwis-c77b913d949f27393956aa8cfe07f584a8b62d47.tar.gz
GPIO IRQ: Support GPIO IRQ event enable
Changes: 1. Support to enable GPIO IRQ event by lwis_client_event_control_set. 2. Check if int_reg_bit is non-null to set mask. Bug: 263315370 Test: GCA, atest liblyric.drivers_tof_test Change-Id: Ief055137e8e89c8e8cfbe30eb26c04049a013526 Signed-off-by: Nick Chung <nickchung@google.com>
-rw-r--r--lwis_event.c10
-rw-r--r--lwis_interrupt.c4
2 files changed, 13 insertions, 1 deletions
diff --git a/lwis_event.c b/lwis_event.c
index 1d775f6..8b15b0c 100644
--- a/lwis_event.c
+++ b/lwis_event.c
@@ -794,6 +794,16 @@ int lwis_device_event_enable(struct lwis_device *lwis_dev, int64_t event_id, boo
err = ret;
}
}
+
+ if (lwis_dev->irq_gpios_info.irq_list) {
+ ret = lwis_interrupt_event_enable(lwis_dev->irq_gpios_info.irq_list,
+ event_id, enabled);
+ if (ret && ret != -EINVAL) {
+ dev_err(lwis_dev->dev, "Failed to %s GPIO IRQ event: %lld (e:%d)\n",
+ enabled ? "enable" : "disable", event_id, ret);
+ err = ret;
+ }
+ }
}
/* Check if our specialization cares about event updates */
if (!err && lwis_dev->vops.event_enable) {
diff --git a/lwis_interrupt.c b/lwis_interrupt.c
index 77ed8da..ab3adcd 100644
--- a/lwis_interrupt.c
+++ b/lwis_interrupt.c
@@ -701,7 +701,9 @@ static int lwis_interrupt_single_event_enable_locked(struct lwis_interrupt *irq,
/* If mask_toggled is set, reverse the enable/disable logic. */
is_set = (!irq->mask_toggled) ? enabled : !enabled;
- ret = lwis_interrupt_set_mask(irq, event->int_reg_bit, is_set);
+ if (event->int_reg_bit) {
+ ret = lwis_interrupt_set_mask(irq, event->int_reg_bit, is_set);
+ }
return ret;
}