M7350/kernel/Documentation/devicetree/bindings/input/touchscreen/atmel-mxt-ts.txt

184 lines
6.7 KiB
Plaintext
Raw Normal View History

2024-09-09 08:52:07 +00:00
Atmel touch controller
Required properties:
- compatible : should be "atmel,mxt-ts"
- reg : i2c slave address of the device
- interrupt-parent : parent of interrupt
- interrupts : touch sample interrupt to indicate presense or release
of fingers on the panel.
- vdd_ana-supply : Analog power supply needed to power device
- atmel,irq-gpio : irq gpio
- atmel,reset-gpio : reset gpio
- atmel,family-id : family identification of the controller
- atmel,variant-id : variant identification of the controller
- atmel,version : firmware version of the controller
- atmel,build : firmware build number of the controller
2024-09-09 08:57:42 +00:00
- pinctrl-names : This should be defined if a target uses pinctrl framework.
See "pinctrl" in Documentation/devicetree/bindings/pinctrl/msm-pinctrl.txt.
It should specify the names of the configs that pinctrl can install in driver.
Following are the pinctrl configs that can be installed:
"pmx_ts_active" : Active configuration of pins, this should specify active
config defined in pin groups of interrupt and reset gpio.
"pmx_ts_suspend" : Disabled configuration of pins, this should specify sleep
config defined in pin groups of interrupt and reset gpio.
"pmx_ts_release" : Release configuration of pins, this should specify
release config defined in pin groups of interrupt and reset gpio.
2024-09-09 08:52:07 +00:00
Required for firmware update only:
- atmel,fw-name : firmware name to use for flashing firmware
- atmel,bootldr-id : bootloader identification of the controller
Optional property:
- atmel,bl-addr : bootloader address, by default is looked up
in mxt_slave_addresses structure
- atmel,config : configuration parameter for the controller
- atmel,i2c-pull-up : specify to indicate pull up is needed
- vcc_i2c-supply : Power source required to pull up i2c bus
- atmel,dig-reg-support : specify to indicate digital regulator is
needed
- atmel,need-calibration : specify to indicate whether calibration is
needed during wakeup.
- atmel,no-force-update : flag that signifies whether force configuration
update is applicable or not
2024-09-09 08:57:42 +00:00
- atmel,no-lpm-support : flag that signifies whether low power mode is
supported or not on this platform
- atmel,i2cmode-gpio : specify gpio number for i2cmode, which provides
internal pull-ups to i2c bus in case there
is no hardware pull-up support
- atmel,panel-coords : touch panel minimum x, minimum y, maximum x and
maximum y resolution. Used to configure the input
device.
- atmel,display-coords : LCD display minimum x, minimum y, maximum x and
maximum y resolution. Used to configure the input
device.
- atmel,vkey-codes : virtual key code mappings to be used when touch controller
does not support sending keycodes and sends coordinates
instead. In this case user space programs need to translate
coordinates to keycodes instead. Virtual key region sits
between display's lower bound and touchscreen's lower bound.
Horizontally these keys are evenly distributed between touch
boundaries. These codes map to buttons from left to right
according to icons on the touch panel. The value of these
codes is taken from include/uapi/linux/input.h. If
atmel,vkey-codes are specified, it is mandatory to specify
atmel,panel-coords and atmel,display-coords as well because
rectangular area of each of the virtual key is derived using
these two properties.
- atmel,create-vkeys : Define this property to create vkey entries for Atmel
touchscreen driver. This is used when there are multiple Atmel
touchscreen controllers, and everyone has to support virtual
keys. Following are the mandatory properties that must be
defined inside the cfg nodes:
- atmel,family-id
- atmel,panel-coords
- atmel,display-coords
- atmel,vkey-codes
2024-09-09 08:52:07 +00:00
Example:
i2c@f9966000 {
cell-index = <3>;
compatible = "qcom,i2c-qup";
reg = <0xf9966000 0x1000>;
#address-cells = <1>;
#size-cells = <0>;
reg-names = "qup_phys_addr";
interrupts = <0 104 0>;
interrupt-names = "qup_err_intr";
qcom,i2c-bus-freq = <100000>;
qcom,i2c-src-freq = <24000000>;
atmel_mxt_ts@4a {
compatible = "atmel,mxt-ts";
reg = <0x4a>
interrupt-parent = <&msmgpio>
interrupts = <48 0x0>;
vdd_ana-supply = <&pm8941_l18>;
vcc_i2c-supply = <&pm8941_lvs1>;
2024-09-09 08:57:42 +00:00
/* pins used by touchscreen */
pinctrl-names = "pmx_ts_active","pmx_ts_suspend", "pmx_ts_release";
pinctrl-0 = <&ts_int_active &ts_reset_active>;
pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>;
pinctrl-2 = <&ts_release>;
2024-09-09 08:52:07 +00:00
atmel,i2c-pull-up;
atmel,no-force-update;
atmel,dig-reg-support;
atmel,key-codes = <
102 139 0 0 0 0 0 0
0 158 217 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 >;
atmel,irq-gpio = <&msmgpio 48 0>;
atmel,reset-gpio = <&msmgpio 26 0>;
2024-09-09 08:57:42 +00:00
atmel,create-vkeys;
2024-09-09 08:52:07 +00:00
atmel,cfg_1 {
atmel,family-id = <0x81>;
atmel,variant-id = <0x01>;
atmel,version = <0x10>;
atmel,build = <0xaa>;
2024-09-09 08:57:42 +00:00
atmel,panel-coords = <0 0 479 799>;
atmel,display-coords = <0 0 479 799>;
atmel,vkey-codes = <139 172 158 217>;
2024-09-09 08:52:07 +00:00
atmel,config = [
/* Object 6, Instance = 0 */
00 00 00 00 00 00
/* Object 38, Instance = 0 */
15 00 02 10 08 0C 00 00
/* Object 7, Instance = 0 */
FF FF 32 03
/* Object 8, Instance = 0 */
0F 00 0A 0A 00 00 0A 00 00 00
/* Object 9, Instance = 0 */
83 00 00 18 0E 00 70 32 02 01
00 03 01 01 05 0A 0A 0A 90 05
F8 02 00 00 0F 0F 00 00 48 2D
07 0C 00 00 00 00
/* Object 15, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
00
/* Object 18, Instance = 0 */
00 00
/* Object 19, Instance = 0 */
00 00 00 00 00 00
/* Object 23, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
/* Object 25, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
00 00 00 00 00
/* Object 40, Instance = 0 */
00 00 00 00 00
/* Object 42, Instance = 0 */
00 00 00 00 00 00 00 00 00 00
/* Object 46, Instance = 0 */
00 00 10 10 00 00 03 00 00 01
/* Object 47, Instance = 0 */
08 0A 28 0A 02 0A 00 8C 00 20
00 00 00
/* Object 55, Instance = 0 */
00 00 00 00 00 00
/* Object 56, Instance = 0 */
03 00 01 18 05 05 05 05 05 05
05 05 05 05 05 05 05 05 05 05
05 05 05 05 05 05 05 05 00 00
00 00 00 00 00 00 00 00 00 00
00 00
/* Object 57, Instance = 0 */
00 00 00
/* Object 61, Instance = 0 */
00 00 00 00 00
/* Object 61, Instance = 1 */
00 00 00 00 00
/* Object 62, Instance = 0 */
7F 03 00 16 00 00 00 00 00 00
04 08 10 18 05 00 0A 05 05 50
14 19 34 1A 64 00 00 04 40 00
00 00 00 00 30 32 02 00 01 00
05 00 00 00 00 00 00 00 00 00
00 00 0C 00
];
}
}
};