aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2015-05-04 11:10:33 -0400
committerLinus Walleij <linus.walleij@linaro.org>2015-05-12 04:46:53 -0400
commit166a85e44245d771bd7042f3ad72aa0e12bb53bd (patch)
treea9fd0409715c50ff15d2314b2314b4358c754ffb /drivers
parent426577bd8846d67b735b3a4e8926ef00abb15297 (diff)
gpio: remove gpiod_sysfs_set_active_low
Remove gpiod_sysfs_set_active_low (and gpio_sysfs_set_active_low) which allowed code to change the polarity of a gpio line even after it had been exported through sysfs. Drivers should not care, and generally does not know, about gpio-line polarity which is a hardware feature that needs to be described by firmware. It is currently possible to define gpio-line polarity in device-tree and acpi firmware or using platform data. Userspace can also change the polarity through sysfs. Note that drivers using the legacy gpio interface could still use GPIOF_ACTIVE_LOW to change the polarity before exporting the gpio. There are no in-kernel users of this interface. Cc: Jonathan Corbet <corbet@lwn.net> Cc: Harry Wei <harryxiyou@gmail.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: linux-doc@vger.kernel.org Cc: linux-kernel@zh-kernel.org Cc: linux-arch@vger.kernel.org Signed-off-by: Johan Hovold <johan@kernel.org> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpio/gpiolib-sysfs.c48
1 files changed, 2 insertions, 46 deletions
diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c
index aeb73ef2955e..9dcd346a20fb 100644
--- a/drivers/gpio/gpiolib-sysfs.c
+++ b/drivers/gpio/gpiolib-sysfs.c
@@ -308,8 +308,8 @@ static int sysfs_set_active_low(struct gpio_desc *desc, struct device *dev,
308 clear_bit(FLAG_ACTIVE_LOW, &desc->flags); 308 clear_bit(FLAG_ACTIVE_LOW, &desc->flags);
309 309
310 /* reconfigure poll(2) support if enabled on one edge only */ 310 /* reconfigure poll(2) support if enabled on one edge only */
311 if (dev != NULL && (!!test_bit(FLAG_TRIG_RISE, &desc->flags) ^ 311 if (!!test_bit(FLAG_TRIG_RISE, &desc->flags) ^
312 !!test_bit(FLAG_TRIG_FALL, &desc->flags))) { 312 !!test_bit(FLAG_TRIG_FALL, &desc->flags)) {
313 unsigned long trigger_flags = desc->flags & GPIO_TRIGGER_MASK; 313 unsigned long trigger_flags = desc->flags & GPIO_TRIGGER_MASK;
314 314
315 gpio_setup_irq(desc, dev, 0); 315 gpio_setup_irq(desc, dev, 0);
@@ -681,50 +681,6 @@ int gpiod_export_link(struct device *dev, const char *name,
681EXPORT_SYMBOL_GPL(gpiod_export_link); 681EXPORT_SYMBOL_GPL(gpiod_export_link);
682 682
683/** 683/**
684 * gpiod_sysfs_set_active_low - set the polarity of gpio sysfs value
685 * @gpio: gpio to change
686 * @value: non-zero to use active low, i.e. inverted values
687 *
688 * Set the polarity of /sys/class/gpio/gpioN/value sysfs attribute.
689 * The GPIO does not have to be exported yet. If poll(2) support has
690 * been enabled for either rising or falling edge, it will be
691 * reconfigured to follow the new polarity.
692 *
693 * Returns zero on success, else an error.
694 */
695int gpiod_sysfs_set_active_low(struct gpio_desc *desc, int value)
696{
697 struct device *dev = NULL;
698 int status = -EINVAL;
699
700 if (!desc) {
701 pr_warn("%s: invalid GPIO\n", __func__);
702 return -EINVAL;
703 }
704
705 mutex_lock(&sysfs_lock);
706
707 if (test_bit(FLAG_EXPORT, &desc->flags)) {
708 dev = class_find_device(&gpio_class, NULL, desc, match_export);
709 if (dev == NULL) {
710 status = -ENODEV;
711 goto unlock;
712 }
713 }
714
715 status = sysfs_set_active_low(desc, dev, value);
716 put_device(dev);
717unlock:
718 mutex_unlock(&sysfs_lock);
719
720 if (status)
721 gpiod_dbg(desc, "%s: status %d\n", __func__, status);
722
723 return status;
724}
725EXPORT_SYMBOL_GPL(gpiod_sysfs_set_active_low);
726
727/**
728 * gpiod_unexport - reverse effect of gpio_export() 684 * gpiod_unexport - reverse effect of gpio_export()
729 * @gpio: gpio to make unavailable 685 * @gpio: gpio to make unavailable
730 * 686 *