From 331bfa70521112759a4b553356a90eee8747644d Mon Sep 17 00:00:00 2001
From: Pete Johanson <peter@peterjohanson.com>
Date: Mon, 20 Jul 2020 10:27:44 -0400
Subject: [PATCH] Interrupt fixes.

---
 app/boards/shields/kyria/kyria_left.overlay |  7 ++-----
 app/drivers/zephyr/en11_trigger.c           | 17 +++++++----------
 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 393b9d8e..d17548ff 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 d210431f..0f85e8e6 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;
 	}