summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Johanson <peter@peterjohanson.com>2020-07-20 10:27:44 -0400
committerPete Johanson <peter@peterjohanson.com>2020-07-20 10:27:44 -0400
commit331bfa70521112759a4b553356a90eee8747644d (patch)
treea02d301ba4407db6b3a80f52274eca7600835ee8
parent893b99d907b85109c8cf8b00f381f36939f5ae3c (diff)
Interrupt fixes.
-rw-r--r--app/boards/shields/kyria/kyria_left.overlay7
-rw-r--r--app/drivers/zephyr/en11_trigger.c17
2 files changed, 9 insertions, 15 deletions
diff --git a/app/boards/shields/kyria/kyria_left.overlay b/app/boards/shields/kyria/kyria_left.overlay
index 393b9d8..d17548f 100644
--- a/app/boards/shields/kyria/kyria_left.overlay
+++ b/app/boards/shields/kyria/kyria_left.overlay
@@ -7,15 +7,12 @@
#include "kyria.dtsi"
/ {
- sensors {
encoder: encoder0 {
compatible = "alps,en11";
label = "Rotary Encoder";
- a-gpios = <&pro_micro_d 5 GPIO_ACTIVE_HIGH>;
- b-gpios = <&pro_micro_d 9 GPIO_ACTIVE_HIGH>;
+ a-gpios = <&pro_micro_d 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
+ b-gpios = <&pro_micro_d 9 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;
};
- };
-
};
&kscan0 {
diff --git a/app/drivers/zephyr/en11_trigger.c b/app/drivers/zephyr/en11_trigger.c
index d210431..0f85e8e 100644
--- a/app/drivers/zephyr/en11_trigger.c
+++ b/app/drivers/zephyr/en11_trigger.c
@@ -152,16 +152,15 @@ int en11_init_interrupt(struct device *dev)
struct en11_data *drv_data = dev->driver_data;
const struct en11_config *drv_cfg = dev->config_info;
+ drv_data->dev = dev;
/* setup gpio interrupt */
LOG_DBG("A: %s %d B: %s %d", drv_cfg->a_label, drv_cfg->a_pin, drv_cfg->b_label, drv_cfg->b_pin);
- gpio_pin_configure(drv_data->a, drv_cfg->a_pin,
+ if (gpio_pin_configure(drv_data->a, drv_cfg->a_pin,
drv_cfg->a_flags
- | GPIO_INPUT);
-
- if (gpio_pin_set(drv_data->a, drv_cfg->a_pin, 1)) {
- LOG_DBG("Failed to set A active!");
+ | GPIO_INPUT)) {
+ LOG_DBG("Failed to configure B pin");
return -EIO;
}
@@ -174,12 +173,10 @@ int en11_init_interrupt(struct device *dev)
return -EIO;
}
- gpio_pin_configure(drv_data->b, drv_cfg->b_pin,
+ if (gpio_pin_configure(drv_data->b, drv_cfg->b_pin,
drv_cfg->b_flags
- | GPIO_INPUT);
-
- if (gpio_pin_set(drv_data->b, drv_cfg->b_pin, 1)) {
- LOG_DBG("Failed to set B active!");
+ | GPIO_INPUT)) {
+ LOG_DBG("Failed to configure B pin");
return -EIO;
}