1*4882a593Smuzhiyun* Broadcom's IPROC Touchscreen Controller
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunRequired properties:
4*4882a593Smuzhiyun- compatible: must be "brcm,iproc-touchscreen"
5*4882a593Smuzhiyun- ts_syscon: handler of syscon node defining physical base
6*4882a593Smuzhiyun  address of the controller and length of memory mapped region.
7*4882a593Smuzhiyun  If this property is selected please make sure MFD_SYSCON config
8*4882a593Smuzhiyun  is enabled in the defconfig file.
9*4882a593Smuzhiyun- clocks:  The clock provided by the SOC to driver the tsc
10*4882a593Smuzhiyun- clock-names:  name for the clock
11*4882a593Smuzhiyun- interrupts: The touchscreen controller's interrupt
12*4882a593Smuzhiyun- address-cells: Specify the number of u32 entries needed in child nodes.
13*4882a593Smuzhiyun  Should set to 1.
14*4882a593Smuzhiyun- size-cells: Specify number of u32 entries needed to specify child nodes size
15*4882a593Smuzhiyun  in reg property. Should set to 1.
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunOptional properties:
18*4882a593Smuzhiyun- scanning_period: Time between scans. Each step is 1024 us.  Valid 1-256.
19*4882a593Smuzhiyun- debounce_timeout: Each step is 512 us.  Valid 0-255
20*4882a593Smuzhiyun- settling_timeout: The settling duration (in ms) is the amount of time
21*4882a593Smuzhiyun                    the tsc waits to allow the voltage to settle after
22*4882a593Smuzhiyun                    turning on the drivers in detection mode.
23*4882a593Smuzhiyun                    Valid values: 0-11
24*4882a593Smuzhiyun                    0 =  0.008 ms
25*4882a593Smuzhiyun                    1 =  0.01 ms
26*4882a593Smuzhiyun                    2 =  0.02 ms
27*4882a593Smuzhiyun                    3 =  0.04 ms
28*4882a593Smuzhiyun                    4 =  0.08 ms
29*4882a593Smuzhiyun                    5 =  0.16 ms
30*4882a593Smuzhiyun                    6 =  0.32 ms
31*4882a593Smuzhiyun                    7 =  0.64 ms
32*4882a593Smuzhiyun                    8 =  1.28 ms
33*4882a593Smuzhiyun                    9 =  2.56 ms
34*4882a593Smuzhiyun                   10 =  5.12 ms
35*4882a593Smuzhiyun                   11 = 10.24 ms
36*4882a593Smuzhiyun- touch_timeout: The continuous number of scan periods in which touch is
37*4882a593Smuzhiyun                not detected before the controller returns to idle state.
38*4882a593Smuzhiyun                Valid values 0-255.
39*4882a593Smuzhiyun- average_data: Number of data samples which are averaged before a final
40*4882a593Smuzhiyun                data point is placed into the FIFO
41*4882a593Smuzhiyun                Valid values 0-7
42*4882a593Smuzhiyun                0 =   1 sample
43*4882a593Smuzhiyun                1 =   2 samples
44*4882a593Smuzhiyun                2 =   4 samples
45*4882a593Smuzhiyun                3 =   8 samples
46*4882a593Smuzhiyun                4 =  16 samples
47*4882a593Smuzhiyun                5 =  32 samples
48*4882a593Smuzhiyun                6 =  64 samples
49*4882a593Smuzhiyun                7 = 128 samples
50*4882a593Smuzhiyun- fifo_threshold: Interrupt is generated whenever the number of fifo
51*4882a593Smuzhiyun                entries exceeds this value
52*4882a593Smuzhiyun                Valid values 0-31
53*4882a593Smuzhiyun- touchscreen-size-x: horizontal resolution of touchscreen (in pixels)
54*4882a593Smuzhiyun- touchscreen-size-y: vertical resolution of touchscreen (in pixels)
55*4882a593Smuzhiyun- touchscreen-fuzz-x: horizontal noise value of the absolute input
56*4882a593Smuzhiyun                      device (in pixels)
57*4882a593Smuzhiyun- touchscreen-fuzz-y: vertical noise value of the absolute input
58*4882a593Smuzhiyun                      device (in pixels)
59*4882a593Smuzhiyun- touchscreen-inverted-x: X axis is inverted (boolean)
60*4882a593Smuzhiyun- touchscreen-inverted-y: Y axis is inverted (boolean)
61*4882a593Smuzhiyun
62*4882a593SmuzhiyunExample: An example of touchscreen node
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun	ts_adc_syscon: ts_adc_syscon@180a6000 {
65*4882a593Smuzhiyun		compatible = "brcm,iproc-ts-adc-syscon","syscon";
66*4882a593Smuzhiyun		reg = <0x180a6000 0xc30>;
67*4882a593Smuzhiyun	};
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun	touchscreen: touchscreen@180a6000 {
70*4882a593Smuzhiyun		compatible = "brcm,iproc-touchscreen";
71*4882a593Smuzhiyun		#address-cells = <1>;
72*4882a593Smuzhiyun		#size-cells = <1>;
73*4882a593Smuzhiyun		ts_syscon = <&ts_adc_syscon>;
74*4882a593Smuzhiyun		clocks = <&adc_clk>;
75*4882a593Smuzhiyun		clock-names = "tsc_clk";
76*4882a593Smuzhiyun		interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun		scanning_period = <5>;
79*4882a593Smuzhiyun		debounce_timeout = <40>;
80*4882a593Smuzhiyun		settling_timeout = <7>;
81*4882a593Smuzhiyun		touch_timeout = <10>;
82*4882a593Smuzhiyun		average_data = <5>;
83*4882a593Smuzhiyun		fifo_threshold = <1>;
84*4882a593Smuzhiyun		/* Touchscreen is rotated 180 degrees. */
85*4882a593Smuzhiyun		touchscreen-inverted-x;
86*4882a593Smuzhiyun		touchscreen-inverted-y;
87*4882a593Smuzhiyun	};
88