Commit 24dc8363 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull GPIO updates from Linus Walleij:
 "This is the bulk of GPIO changes for the v4.21 kernel series.

  Core changes:

   - Some core changes are already in outside of this pull request as
     they came through the regulator tree, most notably
     devm_gpiod_unhinge() that removes devres refcount management from a
     GPIO descriptor. This is needed in subsystems such as regulators
     where the regulator core need to take over the reference counting
     and lifecycle management for a GPIO descriptor.

   - We dropped devm_gpiochip_remove() and devm_gpio_chip_match() as
     nothing needs it. We can bring it back if need be.

   - Add a global TODO so people see where we are going. This helps
     setting the direction now that we are two GPIO maintainers.

   - Handle the MMC CD/WP properties in the device tree core. (The bulk
     of patches activating this code is already merged through the
     MMC/SD tree.)

   - Augment gpiochip_request_own_desc() to pass a flag so we as
     gpiochips can request lines as active low or open drain etc even
     from ourselves.

  New drivers:

   - New driver for Cadence GPIO blocks.

   - New driver for Atmel SAMA5D2 PIOBU GPIO lines.

  Driver improvements:

   - A major refactoring of the PCA953x driver - this driver has been
     around for ages, and is now modernized to reduce code duplication
     that has stacked up and is using regmap to read write and cache
     registers.

   - Intel drivers are now maintained in a separate tree and start with
     a round of cleanups and unifications"

* tag 'gpio-v4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio: (99 commits)
  gpio: sama5d2-piobu: Depend on OF_GPIO
  gpio: Add Cadence GPIO driver
  dt-bindings: gpio: Add bindings for Cadence GPIO
  gpiolib-acpi: remove unused variable 'err', cleans up build warning
  gpio: mxs: read pin level directly instead of using .get
  gpio: aspeed: remove duplicated statement
  gpio: add driver for SAMA5D2 PIOBU pins
  dt-bindings: arm: atmel: describe SECUMOD usage as a GPIO controller
  gpio/mmc/of: Respect polarity in the device tree
  dt-bindings: gpio: rcar: Add r8a774c0 (RZ/G2E) support
  memory: omap-gpmc: Get the header of the enum
  ARM: omap1: Fix new user of gpiochip_request_own_desc()
  gpio: pca953x: Add regmap dependency for PCA953x driver
  gpio: raspberrypi-exp: decrease refcount on firmware dt node
  gpiolib: Fix return value of gpio_to_desc() stub if !GPIOLIB
  gpio: pca953x: Restore registers after suspend/resume cycle
  gpio: pca953x: Zap single use of pca953x_read_single()
  gpio: pca953x: Zap ad-hoc reg_output cache
  gpio: pca953x: Zap ad-hoc reg_direction cache
  gpio: pca953x: Perform basic regmap conversion
  ...
parents 7e59fad9 a7c23f8d
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -158,14 +158,24 @@ Security Module (SECUMOD)

The Security Module macrocell provides all necessary secure functions to avoid
voltage, temperature, frequency and mechanical attacks on the chip. It also
embeds secure memories that can be scrambled
embeds secure memories that can be scrambled.

The Security Module also offers the PIOBU pins which can be used as GPIO pins.
Note that they maintain their voltage during Backup/Self-refresh.

required properties:
- compatible: Should be "atmel,<chip>-secumod", "syscon".
  <chip> can be "sama5d2".
- reg: Should contain registers location and length
- gpio-controller:	Marks the port as GPIO controller.
- #gpio-cells:		There are 2. The pin number is the
			first, the second represents additional
			parameters such as GPIO_ACTIVE_HIGH/LOW.


	secumod@fc040000 {
		compatible = "atmel,sama5d2-secumod", "syscon";
		reg = <0xfc040000 0x100>;
		gpio-controller;
		#gpio-cells = <2>;
	};
+43 −0
Original line number Diff line number Diff line
Cadence GPIO controller bindings

Required properties:
- compatible: should be "cdns,gpio-r1p02".
- reg: the register base address and size.
- #gpio-cells: should be 2.
	* first cell is the GPIO number.
	* second cell specifies the GPIO flags, as defined in
		<dt-bindings/gpio/gpio.h>. Only the GPIO_ACTIVE_HIGH
		and GPIO_ACTIVE_LOW flags are supported.
- gpio-controller: marks the device as a GPIO controller.
- clocks: should contain one entry referencing the peripheral clock driving
	the GPIO controller.

Optional properties:
- ngpios: integer number of gpio lines supported by this controller, up to 32.
- interrupts: interrupt specifier for the controllers interrupt.
- interrupt-controller: marks the device as an interrupt controller. When
	defined, interrupts, interrupt-parent and #interrupt-cells
	are required.
- interrupt-cells: should be 2.
	* first cell is the GPIO number you want to use as an IRQ source.
	* second cell specifies the IRQ type, as defined in
		<dt-bindings/interrupt-controller/irq.h>.
		Currently only level sensitive IRQs are supported.


Example:
	gpio0: gpio-controller@fd060000 {
		compatible = "cdns,gpio-r1p02";
		reg =<0xfd060000 0x1000>;

		clocks = <&gpio_clk>;

		interrupt-parent = <&gic>;
		interrupts = <0 5 IRQ_TYPE_LEVEL_HIGH>;

		gpio-controller;
		#gpio-cells = <2>;

		interrupt-controller;
		#interrupt-cells = <2>;
	};
+6 −0
Original line number Diff line number Diff line
@@ -24,6 +24,12 @@ Required properties for GPIO node:
      4 = active high level-sensitive.
      8 = active low level-sensitive.

Optional properties:
-clocks:	Must contain an entry for each entry in clock-names.
		See common clock-bindings.txt for details.
-clock-names:	A list of clock names. For imx7ulp, it must contain
		"gpio", "port".

Note: Each GPIO port should have an alias correctly numbered in "aliases"
node.

+29 −9
Original line number Diff line number Diff line
@@ -3,12 +3,24 @@ NXP LPC18xx/43xx GPIO controller Device Tree Bindings

Required properties:
- compatible		: Should be "nxp,lpc1850-gpio"
- reg			: Address and length of the register set for the device
- clocks		: Clock specifier (see clock bindings for details)
- gpio-controller	: Marks the device node as a GPIO controller.
- #gpio-cells 		: Should be two
			  - First cell is the GPIO line number
			  - Second cell is used to specify polarity
- reg			: List of addresses and lengths of the GPIO controller
			  register sets
- reg-names		: Should be "gpio", "gpio-pin-ic", "gpio-group0-ic" and
			  "gpio-gpoup1-ic"
- clocks		: Phandle and clock specifier pair for GPIO controller
- resets		: Phandle and reset specifier pair for GPIO controller
- gpio-controller	: Marks the device node as a GPIO controller
- #gpio-cells 		: Should be two:
			  - The first cell is the GPIO line number
			  - The second cell is used to specify polarity
- interrupt-controller	: Marks the device node as an interrupt controller
- #interrupt-cells	: Should be two:
			  - The first cell is an interrupt number within
			    0..9 range, for GPIO pin interrupts it is equal
			    to 'nxp,gpio-pin-interrupt' property value of
			    GPIO pin configuration, 8 is for GPIO GROUP0
			    interrupt, 9 is for GPIO GROUP1 interrupt
			  - The second cell is used to specify interrupt type

Optional properties:
- gpio-ranges		: Mapping between GPIO and pinctrl
@@ -19,21 +31,29 @@ Example:

gpio: gpio@400f4000 {
	compatible = "nxp,lpc1850-gpio";
	reg = <0x400f4000 0x4000>;
	reg = <0x400f4000 0x4000>, <0x40087000 0x1000>,
	      <0x40088000 0x1000>, <0x40089000 0x1000>;
	reg-names = "gpio", "gpio-pin-ic",
		    "gpio-group0-ic", "gpio-gpoup1-ic";
	clocks = <&ccu1 CLK_CPU_GPIO>;
	resets = <&rgu 28>;
	gpio-controller;
	#gpio-cells = <2>;
	interrupt-controller;
	#interrupt-cells = <2>;
	gpio-ranges =	<&pinctrl LPC_GPIO(0,0)  LPC_PIN(0,0)  2>,
			...
			<&pinctrl LPC_GPIO(7,19) LPC_PIN(f,5)  7>;
};

gpio_joystick {
	compatible = "gpio-keys-polled";
	compatible = "gpio-keys";
	...

	button@0 {
	button0 {
		...
		interrupt-parent = <&gpio>;
		interrupts = <1 IRQ_TYPE_EDGE_BOTH>;
		gpios = <&gpio LPC_GPIO(4,8) GPIO_ACTIVE_LOW>;
	};
};
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ Required Properties:
    - "renesas,gpio-r8a7745": for R8A7745 (RZ/G1E) compatible GPIO controller.
    - "renesas,gpio-r8a77470": for R8A77470 (RZ/G1C) compatible GPIO controller.
    - "renesas,gpio-r8a774a1": for R8A774A1 (RZ/G2M) compatible GPIO controller.
    - "renesas,gpio-r8a774c0": for R8A774C0 (RZ/G2E) compatible GPIO controller.
    - "renesas,gpio-r8a7778": for R8A7778 (R-Car M1) compatible GPIO controller.
    - "renesas,gpio-r8a7779": for R8A7779 (R-Car H1) compatible GPIO controller.
    - "renesas,gpio-r8a7790": for R8A7790 (R-Car H2) compatible GPIO controller.
Loading