Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

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