Merge tag 'objtool-core-2023-04-27' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / drivers / gpio / gpiolib-sysfs.c
index 7747550..530dfd1 100644 (file)
@@ -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;
@@ -554,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;
        }
@@ -728,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;
 
        /*
@@ -788,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) {