1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/mfd/adi,adp5585.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Analog Devices ADP5585 Keypad Decoder and I/O Expansion 8 9maintainers: 10 - Laurent Pinchart <laurent.pinchart@ideasonboard.com> 11 12description: 13 The ADP5585 is a 10/11 input/output port expander with a built in keypad 14 matrix decoder, programmable logic, reset generator, and PWM generator. 15 16properties: 17 compatible: 18 oneOf: 19 - items: 20 - enum: 21 - adi,adp5585-00 # Default 22 - adi,adp5585-01 # 11 GPIOs 23 - adi,adp5585-02 # No pull-up resistors by default on special pins 24 - adi,adp5585-03 # Alternate I2C address 25 - adi,adp5585-04 # Pull-down resistors on all pins by default 26 - const: adi,adp5585 27 - items: 28 - enum: 29 - adi,adp5589-00 # Default 30 - adi,adp5589-01 # R4 defaulted to RESET1 output 31 - adi,adp5589-02 # Pull-down resistors by default on special pins 32 - const: adi,adp5589 33 34 reg: 35 maxItems: 1 36 37 interrupts: 38 maxItems: 1 39 40 vdd-supply: true 41 42 reset-gpios: 43 maxItems: 1 44 45 gpio-controller: true 46 47 '#gpio-cells': 48 const: 2 49 50 gpio-reserved-ranges: true 51 52 "#pwm-cells": 53 const: 3 54 55 interrupt-controller: true 56 57 '#interrupt-cells': 58 const: 2 59 60 poll-interval: 61 enum: [10, 20, 30, 40] 62 default: 10 63 64 adi,keypad-pins: 65 description: Specifies the pins used for the keypad matrix. 66 $ref: /schemas/types.yaml#/definitions/uint32-array 67 68 adi,unlock-events: 69 description: 70 Specifies a maximum of 2 events that can be used to unlock the keypad. 71 If this property is set, the keyboard will be locked and only unlocked 72 after these keys/gpis are pressed. The value 127 serves as a wildcard which 73 means any key can be used for unlocking. 74 $ref: /schemas/types.yaml#/definitions/uint32-array 75 minItems: 1 76 maxItems: 2 77 items: 78 anyOf: 79 - minimum: 1 80 maximum: 88 81 - minimum: 97 82 maximum: 115 83 - const: 127 84 85 adi,unlock-trigger-sec: 86 description: 87 Defines the time in which the second unlock event must occur after the 88 first unlock event has occurred. 89 maximum: 7 90 default: 0 91 92 adi,reset1-events: 93 description: 94 Defines the trigger events (key/gpi presses) that can generate reset 95 conditions one the reset1 block. 96 $ref: /schemas/types.yaml#/definitions/uint32-array 97 minItems: 1 98 maxItems: 3 99 100 adi,reset2-events: 101 description: 102 Defines the trigger events (key/gpi presses) that can generate reset 103 conditions one the reset2 block. 104 $ref: /schemas/types.yaml#/definitions/uint32-array 105 minItems: 1 106 maxItems: 2 107 108 adi,reset1-active-high: 109 description: Sets the reset1 signal as active high. 110 type: boolean 111 112 adi,reset2-active-high: 113 description: Sets the reset2 signal as active high. 114 type: boolean 115 116 adi,rst-passthrough-enable: 117 description: Allows the RST pin to override (OR with) the reset1 signal. 118 type: boolean 119 120 adi,reset-trigger-ms: 121 description: 122 Defines the length of time that the reset events must be active before a 123 reset signal is generated. All events must be active at the same time for 124 the same duration. 125 enum: [0, 1000, 1500, 2000, 2500, 3000, 3500, 4000] 126 default: 0 127 128 adi,reset-pulse-width-us: 129 description: Defines the pulse width of the reset signals. 130 enum: [500, 1000, 2000, 10000] 131 default: 500 132 133patternProperties: 134 "-hog(-[0-9]+)?$": 135 type: object 136 137 required: 138 - gpio-hog 139 140dependencies: 141 linux,keymap: 142 - adi,keypad-pins 143 - interrupts 144 interrupt-controller: 145 - interrupts 146 adi,unlock-trigger-sec: 147 - adi,unlock-events 148 adi,reset1-active-high: 149 - adi,reset1-events 150 adi,rst-passtrough-enable: 151 - adi,reset1-events 152 adi,reset2-active-high: 153 - adi,reset2-events 154 155required: 156 - compatible 157 - reg 158 159allOf: 160 - $ref: /schemas/input/matrix-keymap.yaml# 161 - $ref: /schemas/input/input.yaml# 162 - if: 163 properties: 164 compatible: 165 contains: 166 const: adi,adp5585-01 167 then: 168 properties: 169 adi,unlock-events: false 170 adi,unlock-trigger-sec: false 171 gpio-reserved-ranges: false 172 reset-gpios: false 173 adi,keypad-pins: 174 minItems: 2 175 maxItems: 11 176 items: 177 minimum: 0 178 maximum: 10 179 adi,reset1-events: 180 items: 181 anyOf: 182 - minimum: 1 183 maximum: 30 184 - minimum: 37 185 maximum: 47 186 adi,reset2-events: 187 items: 188 anyOf: 189 - minimum: 1 190 maximum: 30 191 - minimum: 37 192 maximum: 47 193 - if: 194 properties: 195 compatible: 196 contains: 197 enum: 198 - adi,adp5585-00 199 - adi,adp5585-02 200 - adi,adp5585-03 201 - adi,adp5585-04 202 then: 203 properties: 204 adi,unlock-events: false 205 adi,unlock-trigger-sec: false 206 adi,keypad-pins: 207 minItems: 2 208 maxItems: 10 209 items: 210 enum: [0, 1, 2, 3, 4, 6, 7, 8, 9, 10] 211 adi,reset1-events: 212 items: 213 anyOf: 214 - minimum: 1 215 maximum: 25 216 - enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47] 217 adi,reset2-events: 218 items: 219 anyOf: 220 - minimum: 1 221 maximum: 25 222 - enum: [37, 38, 39, 40, 41, 43, 44, 45, 46, 47] 223 gpio-reserved-ranges: 224 maxItems: 1 225 items: 226 items: 227 - const: 5 228 - const: 1 229 230 - if: 231 properties: 232 compatible: 233 contains: 234 enum: 235 - adi,adp5589-00 236 - adi,adp5589-01 237 - adi,adp5589-02 238 then: 239 properties: 240 gpio-reserved-ranges: false 241 adi,keypad-pins: 242 minItems: 2 243 maxItems: 19 244 items: 245 minimum: 0 246 maximum: 18 247 adi,reset1-events: 248 items: 249 anyOf: 250 - minimum: 1 251 maximum: 88 252 - minimum: 97 253 maximum: 115 254 adi,reset2-events: 255 items: 256 anyOf: 257 - minimum: 1 258 maximum: 88 259 - minimum: 97 260 maximum: 115 261 262unevaluatedProperties: false 263 264examples: 265 - | 266 #include <dt-bindings/input/input.h> 267 #include <dt-bindings/interrupt-controller/irq.h> 268 i2c { 269 #address-cells = <1>; 270 #size-cells = <0>; 271 272 io-expander@34 { 273 compatible = "adi,adp5585-00", "adi,adp5585"; 274 reg = <0x34>; 275 276 vdd-supply = <®_3v3>; 277 278 gpio-controller; 279 #gpio-cells = <2>; 280 gpio-reserved-ranges = <5 1>; 281 282 #pwm-cells = <3>; 283 284 interrupts = <16 IRQ_TYPE_EDGE_FALLING>; 285 interrupt-parent = <&gpio>; 286 287 adi,reset1-events = <1 43>; 288 adi,reset2-events = <2 3>; 289 adi,reset-trigger-ms = <2000>; 290 291 /* 292 * col0, col1, col2 293 * row0, row1, row2 294 */ 295 adi,keypad-pins = <0 1 2 6 7 8>; 296 297 linux,keymap = < 298 MATRIX_KEY(0x00, 0x00, KEY_1) 299 MATRIX_KEY(0x00, 0x01, KEY_2) 300 MATRIX_KEY(0x00, 0x02, KEY_3) 301 302 MATRIX_KEY(0x01, 0x00, KEY_A) 303 MATRIX_KEY(0x01, 0x01, KEY_B) 304 MATRIX_KEY(0x01, 0x02, KEY_C) 305 306 MATRIX_KEY(0x02, 0x00, BTN_1) 307 MATRIX_KEY(0x02, 0x01, BTN_2) 308 MATRIX_KEY(0x02, 0x02, BTN_3) 309 >; 310 }; 311 }; 312 313... 314