diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/gpio/gpiolib-sysfs.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/gpio/gpiolib-sysfs.c')
| -rw-r--r-- | drivers/gpio/gpiolib-sysfs.c | 39 | 
1 files changed, 24 insertions, 15 deletions
diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c index cd27bf173dec..530dfd19d7b5 100644 --- a/drivers/gpio/gpiolib-sysfs.c +++ b/drivers/gpio/gpiolib-sysfs.c @@ -1,18 +1,29 @@  // SPDX-License-Identifier: GPL-2.0 + +#include <linux/bitops.h> +#include <linux/device.h>  #include <linux/idr.h> +#include <linux/init.h> +#include <linux/interrupt.h> +#include <linux/kdev_t.h> +#include <linux/kstrtox.h> +#include <linux/list.h>  #include <linux/mutex.h> -#include <linux/device.h> +#include <linux/printk.h> +#include <linux/slab.h> +#include <linux/spinlock.h> +#include <linux/string.h>  #include <linux/sysfs.h> +#include <linux/types.h> +  #include <linux/gpio/consumer.h>  #include <linux/gpio/driver.h> -#include <linux/interrupt.h> -#include <linux/kdev_t.h> -#include <linux/slab.h> -#include <linux/ctype.h>  #include "gpiolib.h"  #include "gpiolib-sysfs.h" +struct kernfs_node; +  #define GPIO_IRQF_TRIGGER_NONE		0  #define GPIO_IRQF_TRIGGER_FALLING	BIT(0)  #define GPIO_IRQF_TRIGGER_RISING	BIT(1) @@ -426,8 +437,8 @@ ATTRIBUTE_GROUPS(gpiochip);   * /sys/class/gpio/unexport ... write-only   *	integer N ... number of GPIO to unexport   */ -static ssize_t export_store(struct class *class, -				struct class_attribute *attr, +static ssize_t export_store(const struct class *class, +				const struct class_attribute *attr,  				const char *buf, size_t len)  {  	long			gpio; @@ -478,8 +489,8 @@ done:  }  static CLASS_ATTR_WO(export); -static ssize_t unexport_store(struct class *class, -				struct class_attribute *attr, +static ssize_t unexport_store(const struct class *class, +				const struct class_attribute *attr,  				const char *buf, size_t len)  {  	long			gpio; @@ -491,7 +502,7 @@ static ssize_t unexport_store(struct class *class,  		goto done;  	desc = gpio_to_desc(gpio); -	/* reject bogus commands (gpio_unexport ignores them) */ +	/* reject bogus commands (gpiod_unexport() ignores them) */  	if (!desc) {  		pr_warn("%s: invalid GPIO %ld\n", __func__, gpio);  		return -EINVAL; @@ -523,8 +534,6 @@ ATTRIBUTE_GROUPS(gpio_class);  static struct class gpio_class = {  	.name =		"gpio", -	.owner =	THIS_MODULE, -  	.class_groups = gpio_class_groups,  }; @@ -556,7 +565,7 @@ int gpiod_export(struct gpio_desc *desc, bool direction_may_change)  	int			offset;  	/* can't export until sysfs is available ... */ -	if (!gpio_class.p) { +	if (!class_is_registered(&gpio_class)) {  		pr_debug("%s: called too early!\n", __func__);  		return -ENOENT;  	} @@ -730,7 +739,7 @@ int gpiochip_sysfs_register(struct gpio_device *gdev)  	 * register later, in gpiolib_sysfs_init() ... here we just  	 * verify that _some_ field of gpio_class got initialized.  	 */ -	if (!gpio_class.p) +	if (!class_is_registered(&gpio_class))  		return 0;  	/* @@ -790,7 +799,7 @@ static int __init gpiolib_sysfs_init(void)  	 * early (e.g. before the class_register above was called).  	 *  	 * We run before arch_initcall() so chip->dev nodes can have -	 * registered, and so arch_initcall() can always gpio_export(). +	 * registered, and so arch_initcall() can always gpiod_export().  	 */  	spin_lock_irqsave(&gpio_lock, flags);  	list_for_each_entry(gdev, &gpio_devices, list) {  |