Kernel-4.18.0-80.el8_brcm,iproc-touchscreen

  • Broadcom’s IPROC Touchscreen Controller

Required properties:

  • compatible: must be “brcm,iproc-touchscreen”
  • ts_syscon: handler of syscon node defining physical base
    address of the controller and length of memory mapped region.
    If this property is selected please make sure MFD_SYSCON config
    is enabled in the defconfig file.
  • clocks: The clock provided by the SOC to driver the tsc
  • clock-names: name for the clock
  • interrupts: The touchscreen controller’s interrupt
  • address-cells: Specify the number of u32 entries needed in child nodes.
    Should set to 1.
  • size-cells: Specify number of u32 entries needed to specify child nodes size
    in reg property. Should set to 1.

Optional properties:

  • scanning_period: Time between scans. Each step is 1024 us. Valid 1-256.
  • debounce_timeout: Each step is 512 us. Valid 0-255
  • settling_timeout: The settling duration (in ms) is the amount of time
                  the tsc waits to allow the voltage to settle after
                  turning on the drivers in detection mode.
                  Valid values: 0-11
                  0 =  0.008 ms
                  1 =  0.01 ms
                  2 =  0.02 ms
                  3 =  0.04 ms
                  4 =  0.08 ms
                  5 =  0.16 ms
                  6 =  0.32 ms
                  7 =  0.64 ms
                  8 =  1.28 ms
                  9 =  2.56 ms
                 10 =  5.12 ms
                 11 = 10.24 ms
    
  • touch_timeout: The continuous number of scan periods in which touch is
              not detected before the controller returns to idle state.
              Valid values 0-255.
    
  • average_data: Number of data samples which are averaged before a final
              data point is placed into the FIFO
              Valid values 0-7
              0 =   1 sample
              1 =   2 samples
              2 =   4 samples
              3 =   8 samples
              4 =  16 samples
              5 =  32 samples
              6 =  64 samples
              7 = 128 samples
    
  • fifo_threshold: Interrupt is generated whenever the number of fifo
              entries exceeds this value
              Valid values 0-31
    
  • touchscreen-size-x: horizontal resolution of touchscreen (in pixels)
  • touchscreen-size-y: vertical resolution of touchscreen (in pixels)
  • touchscreen-fuzz-x: horizontal noise value of the absolute input
                    device (in pixels)
    
  • touchscreen-fuzz-y: vertical noise value of the absolute input
                    device (in pixels)
    
  • touchscreen-inverted-x: X axis is inverted (boolean)
  • touchscreen-inverted-y: Y axis is inverted (boolean)

Example: An example of touchscreen node

ts_adc_syscon: ts_adc_syscon@180a6000 {
    compatible = "brcm,iproc-ts-adc-syscon","syscon";
    reg = <0x180a6000 0xc30>;
};

touchscreen: touchscreen@180a6000 {
    compatible = "brcm,iproc-touchscreen";
    #address-cells = <1>;
    #size-cells = <1>;
    ts_syscon = <&ts_adc_syscon>;
    clocks = <&adc_clk>;
    clock-names = "tsc_clk";
    interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;

    scanning_period = <5>;
    debounce_timeout = <40>;
    settling_timeout = <7>;
    touch_timeout = <10>;
    average_data = <5>;
    fifo_threshold = <1>;
    /* Touchscreen is rotated 180 degrees. */
    touchscreen-inverted-x;
    touchscreen-inverted-y;
};