• Linus Torvalds's avatar
    Merge tag 'gpio-v5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio · 8148c17b
    Linus Torvalds authored
    Pull gpio updates from Linus Walleij:
     "This is the bulk of the GPIO changes for the v5.2 kernel cycle. A bit
      later than usual because I was ironing out my own mistakes. I'm
      holding some stuff back for the next kernel as a result, and this
      should be a healthy and well tested batch.
    
      Core changes:
    
       - The gpiolib MMIO driver has been enhanced to handle two direction
         registers, i.e. one register to set lines as input and one register
         to set lines as output. It turns out some silicon engineer thinks
         the ability to configure a line as input and output at the same
         time makes sense, this can be debated but includes a lot of analog
         electronics reasoning, and the registers are there and need to be
         handled consistently. Unsurprisingly, we enforce the lines to be
         either inputs or outputs in such schemes.
    
       - Send in the proper argument value to .set_config() dispatched to
         the pin control subsystem. Nobody used it before, now someone does,
         so fix it to work as expected.
    
       - The ACPI gpiolib portions can now handle pin bias setting (pull up
         or pull down). This has been in the ACPI spec for years and we
         finally have it properly integrated with Linux GPIOs. It was based
         on an observation from Andy Schevchenko that Thomas Petazzoni's
         changes to the core for biasing the PCA950x GPIO expander actually
         happen to fit hand-in-glove with what the ACPI core needed. Such
         nice synergies happen sometimes.
    
      New drivers:
    
       - A new driver for the Mellanox BlueField GPIO controller. This is
         using 64bit MMIO registers and can configure lines as inputs and
         outputs at the same time and after improving the MMIO library we
         handle it just fine. Interesting.
    
       - A new IXP4xx proper gpiochip driver with hierarchical interrupts
         should be coming in from the ARM SoC tree as well.
    
      Driver enhancements:
    
       - The PCA053x driver handles the CAT9554 GPIO expander.
    
       - The PCA053x driver handles the NXP PCAL6416 GPIO expander.
    
       - Wake-up support on PCA053x GPIO lines.
    
       - OMAP now does a nice asynchronous IRQ handling on wake-ups by
         letting everything wake up on edges, and this makes runtime PM work
         as expected too.
    
      Misc:
    
       - Several cleanups such as devres fixes.
    
       - Get rid of some languager comstructs that cause problems when
         compiling with LLVMs clang.
    
       - Documentation review and update"
    
    * tag 'gpio-v5.2-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (85 commits)
      gpio: Update documentation
      docs: gpio: convert docs to ReST and rename to *.rst
      gpio: sch: Remove write-only core_base
      gpio: pxa: Make two symbols static
      gpiolib: acpi: Respect pin bias setting
      gpiolib: acpi: Add acpi_gpio_update_gpiod_lookup_flags() helper
      gpiolib: acpi: Set pin value, based on bias, more accurately
      gpiolib: acpi: Change type of dflags
      gpiolib: Introduce GPIO_LOOKUP_FLAGS_DEFAULT
      gpiolib: Make use of enum gpio_lookup_flags consistent
      gpiolib: Indent entry values of enum gpio_lookup_flags
      gpio: pca953x: add support for pca6416
      dt-bindings: gpio: pca953x: document the nxp,pca6416
      gpio: pca953x: add pcal6416 to the of_device_id table
      gpio: gpio-omap: Remove conditional pm_runtime handling for GPIO interrupts
      gpio: gpio-omap: configure edge detection for level IRQs for idle wakeup
      tracing: stop making gpio tracing configurable
      gpio: pca953x: Configure wake-up path when wake-up is enabled
      gpio: of: Optimize quirk checks
      gpio: mmio: Drop bgpio_dir_inverted
      ...
    8148c17b
pinctrl-mcp23s08.c 27.7 KB