summaryrefslogtreecommitdiff
path: root/io-module/gpio.c
diff options
context:
space:
mode:
Diffstat (limited to 'io-module/gpio.c')
-rw-r--r--io-module/gpio.c29
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;
}