mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-31 08:15:07 -04:00
The st,stmpe-pwm binding is already covered by the MFD schema in Documentation/devicetree/bindings/mfd/st,stmpe.yaml. However, the PWM subnode was missing a 'required' properties block. This allowed Device Tree nodes to pass validation even if the 'compatible' string was omitted. This omission could lead to probe failures at runtime. Fix the schema by adding the missing 'required' block. Signed-off-by: Manish Baing <manishbaing2789@gmail.com> Acked-by: Conor Dooley <conor.dooley@microchip.com> Acked-by: Uwe Kleine-König <ukleinek@kernel.org> Reviewed-by: Linus Walleij <linusw@kernel.org> Link: https://patch.msgid.link/20260523173251.72540-2-manishbaing2789@gmail.com Signed-off-by: Lee Jones <lee@kernel.org>
302 lines
7.2 KiB
YAML
302 lines
7.2 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 <linusw@kernel.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
|
|
|
|
required:
|
|
- compatible
|
|
- "#pwm-cells"
|
|
|
|
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>;
|
|
};
|
|
};
|
|
};
|
|
...
|