summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMaureen Helm <maureen.helm@nxp.com>2017-01-25 15:29:53 -0600
committerAnas Nashif <nashif@linux.intel.com>2017-01-26 11:57:22 +0000
commit8575a36dbe11b49fc16b836aeb0550f6c38a9dca (patch)
tree514d39126219f97fada6e4ca714d630622f6ba8f /drivers
parent19974338bffeca8ac65cdf9ca2d0c78be5b49978 (diff)
fxos8700: Fix broken gpio callback implementation
Fixes fxos8700_gpio_callback() to pass a pin number to gpio_pin_disable_callback() rather than a pin mask. Jira: ZEP-1507 Change-Id: I15bfbf4d3377f22942aa549377472d2b1142c32b Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/sensor/fxos8700/fxos8700.h1
-rw-r--r--drivers/sensor/fxos8700/fxos8700_trigger.c10
2 files changed, 9 insertions, 2 deletions
diff --git a/drivers/sensor/fxos8700/fxos8700.h b/drivers/sensor/fxos8700/fxos8700.h
index 2668afcc1..f454281df 100644
--- a/drivers/sensor/fxos8700/fxos8700.h
+++ b/drivers/sensor/fxos8700/fxos8700.h
@@ -114,6 +114,7 @@ struct fxos8700_data {
struct k_sem sem;
#ifdef CONFIG_FXOS8700_TRIGGER
struct device *gpio;
+ uint8_t gpio_pin;
struct gpio_callback gpio_cb;
sensor_trigger_handler_t drdy_handler;
#endif
diff --git a/drivers/sensor/fxos8700/fxos8700_trigger.c b/drivers/sensor/fxos8700/fxos8700_trigger.c
index d15cbb982..17204c89f 100644
--- a/drivers/sensor/fxos8700/fxos8700_trigger.c
+++ b/drivers/sensor/fxos8700/fxos8700_trigger.c
@@ -8,12 +8,16 @@
static void fxos8700_gpio_callback(struct device *dev,
struct gpio_callback *cb,
- uint32_t pin)
+ uint32_t pin_mask)
{
struct fxos8700_data *data =
CONTAINER_OF(cb, struct fxos8700_data, gpio_cb);
- gpio_pin_disable_callback(dev, pin);
+ if ((pin_mask & BIT(data->gpio_pin)) == 0) {
+ return;
+ }
+
+ gpio_pin_disable_callback(dev, data->gpio_pin);
#if defined(CONFIG_FXOS8700_TRIGGER_OWN_THREAD)
k_sem_give(&data->trig_sem);
@@ -295,6 +299,8 @@ int fxos8700_trigger_init(struct device *dev)
return -EINVAL;
}
+ data->gpio_pin = config->gpio_pin;
+
gpio_pin_configure(data->gpio, config->gpio_pin,
GPIO_DIR_IN | GPIO_INT | GPIO_INT_EDGE |
GPIO_INT_ACTIVE_LOW | GPIO_INT_DEBOUNCE);