1*5384b7d3SAngeloGioacchino Del Regno# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*5384b7d3SAngeloGioacchino Del Regno%YAML 1.2 3*5384b7d3SAngeloGioacchino Del Regno--- 4*5384b7d3SAngeloGioacchino Del Regno$id: http://devicetree.org/schemas/pinctrl/awinic,aw9523-pinctrl.yaml# 5*5384b7d3SAngeloGioacchino Del Regno$schema: http://devicetree.org/meta-schemas/core.yaml# 6*5384b7d3SAngeloGioacchino Del Regno 7*5384b7d3SAngeloGioacchino Del Regnotitle: Awinic AW9523/AW9523B I2C GPIO Expander 8*5384b7d3SAngeloGioacchino Del Regno 9*5384b7d3SAngeloGioacchino Del Regnomaintainers: 10*5384b7d3SAngeloGioacchino Del Regno - AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org> 11*5384b7d3SAngeloGioacchino Del Regno 12*5384b7d3SAngeloGioacchino Del Regnodescription: | 13*5384b7d3SAngeloGioacchino Del Regno The Awinic AW9523/AW9523B I2C GPIO Expander featuring 16 multi-function 14*5384b7d3SAngeloGioacchino Del Regno I/O, 256 steps PWM mode and interrupt support. 15*5384b7d3SAngeloGioacchino Del Regno 16*5384b7d3SAngeloGioacchino Del Regnoproperties: 17*5384b7d3SAngeloGioacchino Del Regno compatible: 18*5384b7d3SAngeloGioacchino Del Regno const: awinic,aw9523-pinctrl 19*5384b7d3SAngeloGioacchino Del Regno 20*5384b7d3SAngeloGioacchino Del Regno reg: 21*5384b7d3SAngeloGioacchino Del Regno maxItems: 1 22*5384b7d3SAngeloGioacchino Del Regno 23*5384b7d3SAngeloGioacchino Del Regno '#gpio-cells': 24*5384b7d3SAngeloGioacchino Del Regno description: | 25*5384b7d3SAngeloGioacchino Del Regno Specifying the pin number and flags, as defined in 26*5384b7d3SAngeloGioacchino Del Regno include/dt-bindings/gpio/gpio.h 27*5384b7d3SAngeloGioacchino Del Regno const: 2 28*5384b7d3SAngeloGioacchino Del Regno 29*5384b7d3SAngeloGioacchino Del Regno gpio-controller: true 30*5384b7d3SAngeloGioacchino Del Regno 31*5384b7d3SAngeloGioacchino Del Regno gpio-ranges: 32*5384b7d3SAngeloGioacchino Del Regno maxItems: 1 33*5384b7d3SAngeloGioacchino Del Regno 34*5384b7d3SAngeloGioacchino Del Regno interrupt-controller: true 35*5384b7d3SAngeloGioacchino Del Regno 36*5384b7d3SAngeloGioacchino Del Regno interrupts: 37*5384b7d3SAngeloGioacchino Del Regno maxItems: 1 38*5384b7d3SAngeloGioacchino Del Regno description: Specifies the INTN pin IRQ. 39*5384b7d3SAngeloGioacchino Del Regno 40*5384b7d3SAngeloGioacchino Del Regno '#interrupt-cells': 41*5384b7d3SAngeloGioacchino Del Regno description: 42*5384b7d3SAngeloGioacchino Del Regno Specifies the PIN numbers and Flags, as defined in defined in 43*5384b7d3SAngeloGioacchino Del Regno include/dt-bindings/interrupt-controller/irq.h 44*5384b7d3SAngeloGioacchino Del Regno const: 2 45*5384b7d3SAngeloGioacchino Del Regno 46*5384b7d3SAngeloGioacchino Del Regno reset-gpios: 47*5384b7d3SAngeloGioacchino Del Regno maxItems: 1 48*5384b7d3SAngeloGioacchino Del Regno 49*5384b7d3SAngeloGioacchino Del Regno# PIN CONFIGURATION NODES 50*5384b7d3SAngeloGioacchino Del RegnopatternProperties: 51*5384b7d3SAngeloGioacchino Del Regno '-pins$': 52*5384b7d3SAngeloGioacchino Del Regno type: object 53*5384b7d3SAngeloGioacchino Del Regno description: 54*5384b7d3SAngeloGioacchino Del Regno Pinctrl node's client devices use subnodes for desired pin configuration. 55*5384b7d3SAngeloGioacchino Del Regno Client device subnodes use below standard properties. 56*5384b7d3SAngeloGioacchino Del Regno $ref: /schemas/pinctrl/pincfg-node.yaml 57*5384b7d3SAngeloGioacchino Del Regno 58*5384b7d3SAngeloGioacchino Del Regno properties: 59*5384b7d3SAngeloGioacchino Del Regno pins: 60*5384b7d3SAngeloGioacchino Del Regno description: 61*5384b7d3SAngeloGioacchino Del Regno List of gpio pins affected by the properties specified in 62*5384b7d3SAngeloGioacchino Del Regno this subnode. 63*5384b7d3SAngeloGioacchino Del Regno items: 64*5384b7d3SAngeloGioacchino Del Regno pattern: "^gpio([0-9]|1[0-5])$" 65*5384b7d3SAngeloGioacchino Del Regno minItems: 1 66*5384b7d3SAngeloGioacchino Del Regno maxItems: 16 67*5384b7d3SAngeloGioacchino Del Regno 68*5384b7d3SAngeloGioacchino Del Regno function: 69*5384b7d3SAngeloGioacchino Del Regno description: 70*5384b7d3SAngeloGioacchino Del Regno Specify the alternative function to be configured for the 71*5384b7d3SAngeloGioacchino Del Regno specified pins. 72*5384b7d3SAngeloGioacchino Del Regno 73*5384b7d3SAngeloGioacchino Del Regno enum: [ gpio, pwm ] 74*5384b7d3SAngeloGioacchino Del Regno 75*5384b7d3SAngeloGioacchino Del Regno bias-disable: true 76*5384b7d3SAngeloGioacchino Del Regno bias-pull-down: true 77*5384b7d3SAngeloGioacchino Del Regno bias-pull-up: true 78*5384b7d3SAngeloGioacchino Del Regno drive-open-drain: true 79*5384b7d3SAngeloGioacchino Del Regno drive-push-pull: true 80*5384b7d3SAngeloGioacchino Del Regno input-enable: true 81*5384b7d3SAngeloGioacchino Del Regno input-disable: true 82*5384b7d3SAngeloGioacchino Del Regno output-high: true 83*5384b7d3SAngeloGioacchino Del Regno output-low: true 84*5384b7d3SAngeloGioacchino Del Regno 85*5384b7d3SAngeloGioacchino Del Regno required: 86*5384b7d3SAngeloGioacchino Del Regno - pins 87*5384b7d3SAngeloGioacchino Del Regno - function 88*5384b7d3SAngeloGioacchino Del Regno 89*5384b7d3SAngeloGioacchino Del Regno additionalProperties: false 90*5384b7d3SAngeloGioacchino Del Regno 91*5384b7d3SAngeloGioacchino Del Regnorequired: 92*5384b7d3SAngeloGioacchino Del Regno - compatible 93*5384b7d3SAngeloGioacchino Del Regno - reg 94*5384b7d3SAngeloGioacchino Del Regno - gpio-controller 95*5384b7d3SAngeloGioacchino Del Regno - '#gpio-cells' 96*5384b7d3SAngeloGioacchino Del Regno - gpio-ranges 97*5384b7d3SAngeloGioacchino Del Regno 98*5384b7d3SAngeloGioacchino Del RegnoadditionalProperties: false 99*5384b7d3SAngeloGioacchino Del Regno 100*5384b7d3SAngeloGioacchino Del Regnoexamples: 101*5384b7d3SAngeloGioacchino Del Regno # Example configuration to drive pins for a keyboard matrix 102*5384b7d3SAngeloGioacchino Del Regno - | 103*5384b7d3SAngeloGioacchino Del Regno #include <dt-bindings/gpio/gpio.h> 104*5384b7d3SAngeloGioacchino Del Regno #include <dt-bindings/interrupt-controller/irq.h> 105*5384b7d3SAngeloGioacchino Del Regno 106*5384b7d3SAngeloGioacchino Del Regno i2c { 107*5384b7d3SAngeloGioacchino Del Regno #address-cells = <1>; 108*5384b7d3SAngeloGioacchino Del Regno #size-cells = <0>; 109*5384b7d3SAngeloGioacchino Del Regno 110*5384b7d3SAngeloGioacchino Del Regno aw9523: gpio-expander@58 { 111*5384b7d3SAngeloGioacchino Del Regno compatible = "awinic,aw9523-pinctrl"; 112*5384b7d3SAngeloGioacchino Del Regno reg = <0x58>; 113*5384b7d3SAngeloGioacchino Del Regno interrupt-parent = <&tlmm>; 114*5384b7d3SAngeloGioacchino Del Regno interrupts = <50 IRQ_TYPE_EDGE_FALLING>; 115*5384b7d3SAngeloGioacchino Del Regno gpio-controller; 116*5384b7d3SAngeloGioacchino Del Regno #gpio-cells = <2>; 117*5384b7d3SAngeloGioacchino Del Regno gpio-ranges = <&tlmm 0 0 16>; 118*5384b7d3SAngeloGioacchino Del Regno interrupt-controller; 119*5384b7d3SAngeloGioacchino Del Regno #interrupt-cells = <2>; 120*5384b7d3SAngeloGioacchino Del Regno reset-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>; 121*5384b7d3SAngeloGioacchino Del Regno 122*5384b7d3SAngeloGioacchino Del Regno keyboard-matrix-col-pins { 123*5384b7d3SAngeloGioacchino Del Regno pins = "gpio8", "gpio9", "gpio10", "gpio11", 124*5384b7d3SAngeloGioacchino Del Regno "gpio12", "gpio13", "gpio14", "gpio15"; 125*5384b7d3SAngeloGioacchino Del Regno function = "gpio"; 126*5384b7d3SAngeloGioacchino Del Regno input-disable; 127*5384b7d3SAngeloGioacchino Del Regno output-low; 128*5384b7d3SAngeloGioacchino Del Regno }; 129*5384b7d3SAngeloGioacchino Del Regno 130*5384b7d3SAngeloGioacchino Del Regno keyboard-matrix-row-pins { 131*5384b7d3SAngeloGioacchino Del Regno pins = "gpio0", "gpio1", "gpio2", "gpio3", 132*5384b7d3SAngeloGioacchino Del Regno "gpio4", "gpio5", "gpio6", "gpio7"; 133*5384b7d3SAngeloGioacchino Del Regno function = "gpio"; 134*5384b7d3SAngeloGioacchino Del Regno bias-pull-up; 135*5384b7d3SAngeloGioacchino Del Regno drive-open-drain; 136*5384b7d3SAngeloGioacchino Del Regno input-enable; 137*5384b7d3SAngeloGioacchino Del Regno }; 138*5384b7d3SAngeloGioacchino Del Regno }; 139*5384b7d3SAngeloGioacchino Del Regno }; 140