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