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
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
};
|