diff options
author | Maureen Helm <maureen.helm@nxp.com> | 2017-01-25 15:29:53 -0600 |
---|---|---|
committer | Anas Nashif <nashif@linux.intel.com> | 2017-01-26 11:57:22 +0000 |
commit | 8575a36dbe11b49fc16b836aeb0550f6c38a9dca (patch) | |
tree | 514d39126219f97fada6e4ca714d630622f6ba8f /drivers | |
parent | 19974338bffeca8ac65cdf9ca2d0c78be5b49978 (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.h | 1 | ||||
-rw-r--r-- | drivers/sensor/fxos8700/fxos8700_trigger.c | 10 |
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); |