297 lines
7.1 KiB
YAML
297 lines
7.1 KiB
YAML
# 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>;
|
|
};
|
|
};
|
|
};
|
|
...
|