blob: b77cc3f3075d7904a5fa4a5fee77af79dafaf504 [file] [log] [blame]
# 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>;
};
};
};
...