diff options
Diffstat (limited to 'io-module/gpio.c')
-rw-r--r-- | io-module/gpio.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/io-module/gpio.c b/io-module/gpio.c index e754ed6..10f076b 100644 --- a/io-module/gpio.c +++ b/io-module/gpio.c @@ -65,7 +65,11 @@ ssize_t mts_attr_show_gpio_pin(struct device *dev, mutex_lock(&mts_io_mutex); - value = gpio_get_value_cansleep(pin->pin.gpio); + if (pin->do_gpio_desc == 1) { + value = gpiod_get_value_cansleep(pin->desc); + } else { + value = gpio_get_value_cansleep(pin->pin.gpio); + } mutex_unlock(&mts_io_mutex); @@ -99,9 +103,11 @@ static ssize_t mts_attr_store_gpio_pin(struct device *dev, } mutex_lock(&mts_io_mutex); - - gpio_set_value_cansleep(pin->pin.gpio, value); - + if (pin->do_gpio_desc == 1) { + gpiod_set_value_cansleep(pin->desc, value); + } else { + gpio_set_value_cansleep(pin->pin.gpio, value); + } mutex_unlock(&mts_io_mutex); return count; @@ -112,12 +118,17 @@ static int reset_gpio_pin(struct gpio_pin *pin, unsigned int delay_ms, unsigned if (!pin) { return -ENODEV; } - - gpio_set_value_cansleep(pin->pin.gpio, value); - + if (pin->do_gpio_desc == 1) { + gpiod_set_value_cansleep(pin->desc, value); + } else { + gpio_set_value_cansleep(pin->pin.gpio, value); + } mdelay(delay_ms); - - gpio_set_value_cansleep(pin->pin.gpio, !value); + if (pin->do_gpio_desc == 1) { + gpiod_set_value_cansleep(pin->desc, !value); + } else { + gpio_set_value_cansleep(pin->pin.gpio, !value); + } return 0; } |