]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
gpio: constify opaque pointer in gpio_device_find() match function
authorKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Thu, 8 Feb 2024 20:27:04 +0000 (21:27 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Mon, 12 Feb 2024 09:18:31 +0000 (10:18 +0100)
The match function used in gpio_device_find() should not modify the
contents of passed opaque pointer, because such modification would not
be necessary for actual matching and it could lead to quite unreadable,
spaghetti code.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
[Bartosz: fix coding style in header]
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpiolib-acpi.c
drivers/gpio/gpiolib-of.c
drivers/gpio/gpiolib.c
include/linux/gpio/driver.h

index cd3e9657cc36df59123a571a0ed2ed5332272a5d..899cd505073e358a5c254b93869ed0ffe0109b97 100644 (file)
@@ -126,7 +126,7 @@ static DEFINE_MUTEX(acpi_gpio_deferred_req_irqs_lock);
 static LIST_HEAD(acpi_gpio_deferred_req_irqs_list);
 static bool acpi_gpio_deferred_req_irqs_done;
 
-static int acpi_gpiochip_find(struct gpio_chip *gc, void *data)
+static int acpi_gpiochip_find(struct gpio_chip *gc, const void *data)
 {
        return device_match_acpi_handle(&gc->gpiodev->dev, data);
 }
index 77509aa19900264b009a8e8259e7ac5bd46dbce8..35d717fd393f28e0b35d653ebc97b68254b7ce2b 100644 (file)
@@ -118,9 +118,10 @@ int of_gpio_get_count(struct device *dev, const char *con_id)
        return ret ? ret : -ENOENT;
 }
 
-static int of_gpiochip_match_node_and_xlate(struct gpio_chip *chip, void *data)
+static int of_gpiochip_match_node_and_xlate(struct gpio_chip *chip,
+                                           const void *data)
 {
-       struct of_phandle_args *gpiospec = data;
+       const struct of_phandle_args *gpiospec = data;
 
        return device_match_of_node(&chip->gpiodev->dev, gpiospec->np) &&
                                chip->of_xlate &&
@@ -852,7 +853,7 @@ static void of_gpiochip_remove_hog(struct gpio_chip *chip,
                        gpiochip_free_own_desc(desc);
 }
 
-static int of_gpiochip_match_node(struct gpio_chip *chip, void *data)
+static int of_gpiochip_match_node(struct gpio_chip *chip, const void *data)
 {
        return device_match_of_node(&chip->gpiodev->dev, data);
 }
index d068788adb106b5690b8d4e612ccea8a647f9161..288aed5a9f6b10227e7d9ce81bb78170df4d5a90 100644 (file)
@@ -1119,7 +1119,7 @@ EXPORT_SYMBOL_GPL(gpiochip_remove);
  */
 struct gpio_device *gpio_device_find(void *data,
                                     int (*match)(struct gpio_chip *gc,
-                                                 void *data))
+                                                 const void *data))
 {
        struct gpio_device *gdev;
 
@@ -1141,7 +1141,7 @@ struct gpio_device *gpio_device_find(void *data,
 }
 EXPORT_SYMBOL_GPL(gpio_device_find);
 
-static int gpio_chip_match_by_label(struct gpio_chip *gc, void *label)
+static int gpio_chip_match_by_label(struct gpio_chip *gc, const void *label)
 {
        return gc->label && !strcmp(gc->label, label);
 }
@@ -1161,7 +1161,7 @@ struct gpio_device *gpio_device_find_by_label(const char *label)
 }
 EXPORT_SYMBOL_GPL(gpio_device_find_by_label);
 
-static int gpio_chip_match_by_fwnode(struct gpio_chip *gc, void *fwnode)
+static int gpio_chip_match_by_fwnode(struct gpio_chip *gc, const void *fwnode)
 {
        return device_match_fwnode(&gc->gpiodev->dev, fwnode);
 }
index 3a37d058cfcfef67be44311d5538dd403c06064c..9d0023f83a5733e3e6fd83191c9d8e47136625f5 100644 (file)
@@ -629,7 +629,8 @@ int devm_gpiochip_add_data_with_key(struct device *dev, struct gpio_chip *gc,
                                    struct lock_class_key *request_key);
 
 struct gpio_device *gpio_device_find(void *data,
-                               int (*match)(struct gpio_chip *gc, void *data));
+                               int (*match)(struct gpio_chip *gc,
+                                            const void *data));
 struct gpio_device *gpio_device_find_by_label(const char *label);
 struct gpio_device *gpio_device_find_by_fwnode(const struct fwnode_handle *fwnode);