mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
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.
-----BEGIN PGP SIGNATURE-----
iQIcBAABAgAGBQJcJJcmAAoJEEEQszewGV1zdCoQAMSLPh+4QdYLFS3ZmnsPvZkg
Zkz94RVT+uLLmHpR8XBl0wl4mmYCiwB50IwsXwlvJGceSXjCn6hLg9BZBP5hFMCb
yFk3fgXQSh7TOnpjgbCWSssCjpejQ0cOb/2nWHz5s/fbYKYlh3VXckW9hhW+R+b3
6+Mno1SzmBkpVVQ21ISlZeLoNDynkCW6DfjiKMuHAyxzxa0oZ9Qid+tnVDnQM4rD
rCnvYLuvxlXw97W+LI7AU9KoCITdO+2M/0dtGVEEYKfHseRReSy2Oo3nlqCglygX
cNkBe9RYU1CJdas1P/c18wjDAqWp/pbugzHDkYF5Y3tBtB2rQSftjtnQngiVMXMt
De7ejPvL7/OLECvI2WUD6y9NAduw/HE4FO8BBdn0gP/a9svJpVZ993yPd3F9n7EZ
ZIBpycDZVtkcE7dwQgek17bFILRY5nBBMB9oCLL2wk48qdmjpcAbxVfGSsYOe6wO
+cZRZuj/eR3i9gHRugfFx7Evoc7l4erihTpES/YAy3De1s3uV8KjT4zE7Jh+M9LW
GM797BcXJJeb5toC7HZ/G2UAVMyWEhY0n7PGG616CS8IrzmzIZpJOL9kUVOWPb0F
9CPt6qhVbUl9rxp1H/Z3TxvYqIw6icn/z5YewZxLU1zaBlpE3jc7PhZb5hOGnFUf
/DWwe4n99JsjHTrGx1ra
=05LW
-----END PGP SIGNATURE-----
Merge tag 'gpio-v4.21-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio
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
...
This commit is contained in:
commit
24dc83635f
57 changed files with 1741 additions and 678 deletions
|
|
@ -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
Documentation/devicetree/bindings/gpio/cdns,gpio.txt
Normal file
43
Documentation/devicetree/bindings/gpio/cdns,gpio.txt
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
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>;
|
||||
};
|
||||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ gpio: gpio@20000 {
|
|||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
porta: gpio-controller@0 {
|
||||
porta: gpio@0 {
|
||||
compatible = "snps,dw-apb-gpio-port";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
|
@ -55,7 +55,7 @@ gpio: gpio@20000 {
|
|||
interrupts = <0>;
|
||||
};
|
||||
|
||||
portb: gpio-controller@1 {
|
||||
portb: gpio@1 {
|
||||
compatible = "snps,dw-apb-gpio-port";
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
|
|
|
|||
Loading…
Reference in a new issue