diff options
author | Nick Chung <nickchung@google.com> | 2022-12-26 20:44:32 +0800 |
---|---|---|
committer | Holmes Chou <holmeschou@google.com> | 2023-02-23 06:51:39 +0000 |
commit | c77b913d949f27393956aa8cfe07f584a8b62d47 (patch) | |
tree | 141e014656b6954991e391364b18a9e4c01c4e58 | |
parent | e67f0e772f7df65aa900d1b4e2c5ab3e6c97041f (diff) | |
download | lwis-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.c | 10 | ||||
-rw-r--r-- | lwis_interrupt.c | 4 |
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; } |