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