Merge tag 'gpio-updates-for-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 15 Dec 2022 17:45:51 +0000 (09:45 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 15 Dec 2022 17:45:51 +0000 (09:45 -0800)
Pull gpio updates from Bartosz Golaszewski:
 "We have a new GPIO multiplexer driver, bunch of driver updates and
  refactoring in the core GPIO library.

  GPIO core:
   - teach gpiolib to work with software nodes for HW description
   - remove ARCH_NR_GPIOS treewide as we no longer impose any limit on
     the number of GPIOS since the allocation became entirely dynamic
   - add support for HW quirks for Cirrus CS42L56 codec, Marvell NFC
     controller, Freescale PCIe and Ethernet controller, Himax LCDs and
     Mediatek mt2701
   - refactor OF quirk code
   - some general refactoring of the OF and ACPI code, adding new
     helpers, minor tweaks and fixes, making fwnode usage consistent
     etc.

  GPIO uAPI:
   - fix an issue where the user-space can trigger a NULL-pointer
     dereference in the kernel by opening a device file, forcing a
     driver unbind and then calling one of the syscalls on the
     associated file descriptor

  New drivers:
   - add gpio-latch: a new GPIO multiplexer based on latches connected
     to other GPIOs

  Driver updates:
   - convert i2c GPIO expanders to using .probe_new()
   - drop the gpio-sta2x11 driver
   - factor out common code for the ACCES IDIO-16 family of controllers
     and use this new library wherever applicable in drivers
   - add DT support to gpio-hisi
   - allow building gpio-davinci as a module and increase its maxItems
     property
   - add support for a new model to gpio-pca9570
   - other minor changes to various drivers"

* tag 'gpio-updates-for-v6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux: (66 commits)
  gpio: sim: set a limit on the number of GPIOs
  gpiolib: protect the GPIO device against being dropped while in use by user-space
  gpiolib: cdev: fix NULL-pointer dereferences
  gpiolib: Provide to_gpio_device() helper
  gpiolib: Unify access to the device properties
  gpio: Do not include <linux/kernel.h> when not really needed.
  gpio: pcf857x: Convert to i2c's .probe_new()
  gpio: pca953x: Convert to i2c's .probe_new()
  gpio: max732x: Convert to i2c's .probe_new()
  dt-bindings: gpio: gpio-davinci: Increase maxItems in gpio-line-names
  gpiolib: ensure that fwnode is properly set
  gpio: sl28cpld: Replace irqchip mask_invert with unmask_base
  gpiolib: of: Use correct fwnode for DT-probed chips
  gpiolib: of: Drop redundant check in of_mm_gpiochip_remove()
  gpiolib: of: Prepare of_mm_gpiochip_add_data() for fwnode
  gpiolib: add support for software nodes
  gpiolib: consolidate GPIO lookups
  gpiolib: acpi: avoid leaking ACPI details into upper gpiolib layers
  gpiolib: acpi: teach acpi_find_gpio() to handle data-only nodes
  gpiolib: acpi: change acpi_find_gpio() to accept firmware node
  ...

1  2 
MAINTAINERS
arch/arm/Kconfig
arch/arm64/Kconfig
arch/x86/Kconfig
drivers/gpio/gpio-pca953x.c
drivers/gpio/gpiolib-acpi.h
drivers/gpio/gpiolib-cdev.c
drivers/gpio/gpiolib-of.h
drivers/gpio/gpiolib.c

diff --cc MAINTAINERS
Simple merge
Simple merge
@@@ -2168,27 -2145,6 +2168,15 @@@ config STACKPROTECTOR_PER_TAS
        def_bool y
        depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG
  
- # The GPIO number here must be sorted by descending number. In case of
- # a multiplatform kernel, we just want the highest value required by the
- # selected platforms.
- config ARCH_NR_GPIO
-         int
-         default 2048 if ARCH_APPLE
-         default 0
-         help
-           Maximum number of GPIOs in the system.
-           If unsure, leave the default value.
 +config UNWIND_PATCH_PAC_INTO_SCS
 +      bool "Enable shadow call stack dynamically using code patching"
 +      # needs Clang with https://reviews.llvm.org/D111780 incorporated
 +      depends on CC_IS_CLANG && CLANG_VERSION >= 150000
 +      depends on ARM64_PTR_AUTH_KERNEL && CC_HAS_BRANCH_PROT_PAC_RET
 +      depends on SHADOW_CALL_STACK
 +      select UNWIND_TABLES
 +      select DYNAMIC_SCS
 +
  endmenu # "Kernel Features"
  
  menu "Boot options"
Simple merge
Simple merge
@@@ -8,44 -8,8 +8,20 @@@
  #ifndef GPIOLIB_ACPI_H
  #define GPIOLIB_ACPI_H
  
 +#include <linux/err.h>
 +#include <linux/errno.h>
 +#include <linux/types.h>
 +
 +#include <linux/gpio/consumer.h>
 +
  struct acpi_device;
 +struct device;
 +struct fwnode_handle;
 +
 +struct gpio_chip;
 +struct gpio_desc;
 +struct gpio_device;
  
- /**
-  * struct acpi_gpio_info - ACPI GPIO specific information
-  * @adev: reference to ACPI device which consumes GPIO resource
-  * @flags: GPIO initialization flags
-  * @gpioint: if %true this GPIO is of type GpioInt otherwise type is GpioIo
-  * @pin_config: pin bias as provided by ACPI
-  * @polarity: interrupt polarity as provided by ACPI
-  * @triggering: triggering type as provided by ACPI
-  * @wake_capable: wake capability as provided by ACPI
-  * @debounce: debounce timeout as provided by ACPI
-  * @quirks: Linux specific quirks as provided by struct acpi_gpio_mapping
-  */
- struct acpi_gpio_info {
-       struct acpi_device *adev;
-       enum gpiod_flags flags;
-       bool gpioint;
-       int pin_config;
-       int polarity;
-       int triggering;
-       bool wake_capable;
-       unsigned int debounce;
-       unsigned int quirks;
- };
  #ifdef CONFIG_ACPI
  void acpi_gpiochip_add(struct gpio_chip *chip);
  void acpi_gpiochip_remove(struct gpio_chip *chip);
Simple merge
@@@ -3,20 -3,11 +3,20 @@@
  #ifndef GPIOLIB_OF_H
  #define GPIOLIB_OF_H
  
 +#include <linux/err.h>
 +#include <linux/errno.h>
 +#include <linux/types.h>
 +
 +#include <linux/notifier.h>
 +
 +struct device;
 +
  struct gpio_chip;
 -enum of_gpio_flags;
 +struct gpio_desc;
 +struct gpio_device;
  
  #ifdef CONFIG_OF_GPIO
- struct gpio_desc *of_find_gpio(struct device *dev,
+ struct gpio_desc *of_find_gpio(struct device_node *np,
                               const char *con_id,
                               unsigned int idx,
                               unsigned long *lookupflags);
Simple merge