diff options
author | Hyungwoo Yang <hyungwoo.yang@intel.corp-partner.google.com> | 2021-03-19 22:58:11 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-03-24 02:10:42 +0000 |
commit | e94cd9bdd5ffedbe01b2540937cb10e1b6236a0e (patch) | |
tree | 4fb77e71ddc233727c119e2b42aae2f62c4e75da /zephyr/shim/src/motionsense_sensors.c | |
parent | 6307a8c932d667a40d5955084a28b4ef15391de5 (diff) | |
download | chrome-ec-e94cd9bdd5ffedbe01b2540937cb10e1b6236a0e.tar.gz |
zephyr: DT: support sensor irq enabling
This change allows motion sensor interrupt to be enabled
at initial stage.
BUG=b:173507858
BRANCH=none
TEST=make buildall -j8
build volteer on zephyr
Signed-off-by: Hyungwoo Yang <hyungwoo.yang@intel.corp-partner.google.com>
Change-Id: Ib85a1015110ae0a43c62a10c97e0d8f21a86319d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2778818
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'zephyr/shim/src/motionsense_sensors.c')
-rw-r--r-- | zephyr/shim/src/motionsense_sensors.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/zephyr/shim/src/motionsense_sensors.c b/zephyr/shim/src/motionsense_sensors.c index d2567cb8fe..83c448be48 100644 --- a/zephyr/shim/src/motionsense_sensors.c +++ b/zephyr/shim/src/motionsense_sensors.c @@ -5,6 +5,7 @@ #include "common.h" #include "accelgyro.h" +#include "hooks.h" #define SENSOR_MUTEX_NODE DT_PATH(motionsense_mutex) #define SENSOR_MUTEX_NAME(id) DT_CAT(MUTEX_, id) @@ -320,3 +321,27 @@ const struct motion_sensor_t *motion_als_sensors[] = { }; BUILD_ASSERT(ARRAY_SIZE(motion_als_sensors) == ALS_COUNT); #endif + +/* + * Enable interrupts for motion sensors + * + * e.g) list of named-gpio nodes + * motionsense-sensor-info { + * compatible = "cros-ec,motionsense-sensor-info"; + * + * // list of GPIO interrupts that have to + * // be enabled at initial stage + * sensor-irqs = <&gpio_ec_imu_int_l &gpio_ec_als_rgb_int_l>; + * }; + */ +#if DT_NODE_HAS_PROP(SENSOR_INFO_NODE, sensor_irqs) +#define SENSOR_GPIO_ENABLE_INTERRUPT(i, id) \ + gpio_enable_interrupt( \ + GPIO_SIGNAL(DT_PHANDLE_BY_IDX(id, sensor_irqs, i))); +static void sensor_enable_irqs(void) +{ + UTIL_LISTIFY(DT_PROP_LEN(SENSOR_INFO_NODE, sensor_irqs), + SENSOR_GPIO_ENABLE_INTERRUPT, SENSOR_INFO_NODE) +} +DECLARE_HOOK(HOOK_INIT, sensor_enable_irqs, HOOK_PRIO_DEFAULT); +#endif |