| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mfd/st,stmpe.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: STMicroelectonics Port Expander (STMPE) |
| |
| description: STMicroelectronics Port Expander (STMPE) is a series of slow |
| bus controllers for various expanded peripherals such as GPIO, keypad, |
| touchscreen, ADC, PWM or rotator. It can contain one or several different |
| peripherals connected to SPI or I2C. |
| |
| maintainers: |
| - Linus Walleij <linus.walleij@linaro.org> |
| |
| allOf: |
| - $ref: /schemas/spi/spi-peripheral-props.yaml# |
| |
| properties: |
| compatible: |
| enum: |
| - st,stmpe601 |
| - st,stmpe801 |
| - st,stmpe811 |
| - st,stmpe1600 |
| - st,stmpe1601 |
| - st,stmpe2401 |
| - st,stmpe2403 |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| maxItems: 1 |
| |
| vcc-supply: true |
| |
| vio-supply: true |
| |
| reset-gpios: |
| maxItems: 1 |
| |
| wakeup-source: true |
| |
| st,autosleep-timeout: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 4, 16, 32, 64, 128, 256, 512, 1024 ] |
| description: Time idle before going to automatic sleep to save power |
| |
| st,sample-time: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3, 4, 5, 6 ] |
| description: | |
| Sample time per iteration |
| 0 = 36 clock ticks |
| 1 = 44 clock ticks |
| 2 = 56 clock ticks |
| 3 = 64 clock ticks |
| 4 = 80 clock ticks - recommended |
| 5 = 96 clock ticks |
| 6 = 124 clock ticks |
| |
| st,mod-12b: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1 ] |
| description: ADC bit mode 0 = 10bit ADC, 1 = 12bit ADC |
| |
| st,ref-sel: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1 ] |
| description: ADC reference source 0 = internal, 1 = external |
| |
| st,adc-freq: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3 ] |
| description: | |
| ADC clock speed |
| 0 = 1.625 MHz |
| 1 = 3.25 MHz |
| 2, 3 = 6.5 MHz |
| |
| adc: |
| type: object |
| $ref: /schemas/iio/adc/st,stmpe-adc.yaml# |
| |
| gpio: |
| type: object |
| $ref: /schemas/gpio/st,stmpe-gpio.yaml# |
| |
| keyboard-controller: |
| type: object |
| $ref: /schemas/input/matrix-keymap.yaml# |
| |
| unevaluatedProperties: false |
| |
| properties: |
| compatible: |
| const: st,stmpe-keypad |
| |
| debounce-interval: |
| description: Debouncing interval in milliseconds |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| |
| st,no-autorepeat: |
| description: If present, the keys will not autorepeat when pressed |
| $ref: /schemas/types.yaml#/definitions/flag |
| |
| st,scan-count: |
| description: Scanning cycles elapsed before key data is updated |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| |
| required: |
| - compatible |
| - linux,keymap |
| |
| pwm: |
| type: object |
| $ref: /schemas/pwm/pwm.yaml# |
| |
| unevaluatedProperties: false |
| |
| properties: |
| compatible: |
| const: st,stmpe-pwm |
| |
| "#pwm-cells": |
| const: 2 |
| |
| touchscreen: |
| type: object |
| $ref: /schemas/input/touchscreen/touchscreen.yaml# |
| |
| unevaluatedProperties: false |
| |
| properties: |
| compatible: |
| const: st,stmpe-ts |
| |
| st,ave-ctrl: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3 ] |
| description: | |
| Sample average control |
| 0 = 1 sample |
| 1 = 2 samples |
| 2 = 4 samples |
| 3 = 8 samples |
| |
| st,touch-det-delay: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3, 4, 5, 6, 7 ] |
| description: | |
| Touch detection delay |
| 0 = 10 us |
| 1 = 50 us |
| 2 = 100 us |
| 3 = 500 us - recommended |
| 4 = 1 ms |
| 5 = 5 ms |
| 6 = 10 ms |
| 7 = 50 ms |
| |
| st,settling: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3, 4, 5, 6, 7 ] |
| description: | |
| Panel driver settling time |
| 0 = 10 us |
| 1 = 100 us |
| 2 = 500 us - recommended |
| 3 = 1 ms |
| 4 = 5 ms |
| 5 = 10 ms |
| 6 = 50 ms |
| 7 = 100 ms |
| |
| st,fraction-z: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1, 2, 3, 4, 5, 6, 7 ] |
| description: Length of the fractional part in z, recommended is 7 |
| (fraction-z ([0..7]) = Count of the fractional part) |
| |
| st,i-drive: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| enum: [ 0, 1 ] |
| description: | |
| current limit value of the touchscreen drivers |
| 0 = 20 mA (typical 35 mA max) |
| 1 = 50 mA (typical 80 mA max) |
| |
| required: |
| - compatible |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| |
| examples: |
| - | |
| #include <dt-bindings/gpio/gpio.h> |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/input/input.h> |
| i2c { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| port-expander@43 { |
| compatible = "st,stmpe2401"; |
| reg = <0x43>; |
| reset-gpios = <&gpio 13 GPIO_ACTIVE_LOW>; |
| interrupts = <26 IRQ_TYPE_EDGE_FALLING>; |
| interrupt-parent = <&gpio>; |
| vcc-supply = <&db8500_vsmps2_reg>; |
| vio-supply = <&db8500_vsmps2_reg>; |
| wakeup-source; |
| st,autosleep-timeout = <1024>; |
| |
| gpio { |
| compatible = "st,stmpe-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| st,norequest-mask = <0xf0f002>; |
| }; |
| |
| keyboard-controller { |
| compatible = "st,stmpe-keypad"; |
| debounce-interval = <64>; |
| st,scan-count = <8>; |
| st,no-autorepeat; |
| keypad,num-rows = <8>; |
| keypad,num-columns = <8>; |
| linux,keymap = < |
| MATRIX_KEY(0x00, 0x00, KEY_1) |
| MATRIX_KEY(0x00, 0x01, KEY_2) |
| MATRIX_KEY(0x00, 0x02, KEY_3) |
| MATRIX_KEY(0x00, 0x03, KEY_4) |
| MATRIX_KEY(0x00, 0x04, KEY_5) |
| MATRIX_KEY(0x00, 0x05, KEY_6) |
| MATRIX_KEY(0x00, 0x06, KEY_7) |
| MATRIX_KEY(0x00, 0x07, KEY_8) |
| MATRIX_KEY(0x00, 0x08, KEY_9) |
| MATRIX_KEY(0x00, 0x09, KEY_0) |
| >; |
| }; |
| |
| pwm { |
| compatible = "st,stmpe-pwm"; |
| #pwm-cells = <2>; |
| }; |
| }; |
| |
| port-expander@41 { |
| compatible = "st,stmpe811"; |
| reg = <0x41>; |
| interrupts = <10 IRQ_TYPE_LEVEL_LOW>; |
| interrupt-parent = <&gpio>; |
| st,adc-freq = <1>; |
| st,mod-12b = <1>; |
| st,ref-sel = <0>; |
| st,sample-time = <4>; |
| |
| adc { |
| compatible = "st,stmpe-adc"; |
| st,norequest-mask = <0x0f>; |
| #io-channel-cells = <1>; |
| }; |
| |
| gpio { |
| compatible = "st,stmpe-gpio"; |
| gpio-controller; |
| #gpio-cells = <2>; |
| interrupt-controller; |
| #interrupt-cells = <2>; |
| }; |
| |
| pwm { |
| compatible = "st,stmpe-pwm"; |
| #pwm-cells = <2>; |
| }; |
| |
| touchscreen { |
| compatible = "st,stmpe-ts"; |
| st,ave-ctrl = <3>; |
| st,touch-det-delay = <5>; |
| st,settling = <3>; |
| st,fraction-z = <7>; |
| st,i-drive = <1>; |
| }; |
| }; |
| }; |
| ... |