Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8691c130 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull input subsystem updates from Dmitry Torokhov:
 "You will get the following new drivers:

   - Qualcomm PM8941 power key drver
   - ChipOne icn8318 touchscreen controller driver
   - Broadcom iProc touchscreen and keypad drivers
   - Semtech SX8654 I2C touchscreen controller driver

  ALPS driver now supports newer SS4 devices; Elantech got a fix that
  should make it work on some ASUS laptops; and a slew of other
  enhancements and random fixes"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (51 commits)
  Input: alps - non interleaved V2 dualpoint has separate stick button bits
  Input: alps - fix touchpad buttons getting stuck when used with trackpoint
  Input: atkbd - document "no new force-release quirks" policy
  Input: ALPS - make alps_get_pkt_id_ss4_v2() and others static
  Input: ALPS - V7 devices can report 5-finger taps
  Input: ALPS - add support for SS4 touchpad devices
  Input: ALPS - refactor alps_set_abs_params_mt()
  Input: elantech - fix absolute mode setting on some ASUS laptops
  Input: atmel_mxt_ts - split out touchpad initialisation logic
  Input: atmel_mxt_ts - implement support for T100 touch object
  Input: cros_ec_keyb - fix clearing keyboard state on wakeup
  Input: gscps2 - drop pci_ids dependency
  Input: synaptics - allocate 3 slots to keep stability in image sensors
  Input: Revert "Revert "synaptics - use dmax in input_mt_assign_slots""
  Input: MT - make slot assignment work for overcovered solutions
  mfd: tc3589x: enforce device-tree only mode
  Input: tc3589x - localize platform data
  Input: tsc2007 - Convert msecs to jiffies only once
  Input: edt-ft5x06 - remove EV_SYN event report
  Input: edt-ft5x06 - allow to setting the maximum axes value through the DT
  ...
parents c3a416a6 85a36858
Loading
Loading
Loading
Loading
+108 −0
Original line number Diff line number Diff line
* Broadcom Keypad Controller device tree bindings

Broadcom Keypad controller is used to interface a SoC with a matrix-type
keypad device. The keypad controller supports multiple row and column lines.
A key can be placed at each intersection of a unique row and a unique column.
The keypad controller can sense a key-press and key-release and report the
event using a interrupt to the cpu.

This binding is based on the matrix-keymap binding with the following
changes:

keypad,num-rows and keypad,num-columns are required.

Required SoC Specific Properties:
- compatible: should be "brcm,bcm-keypad"

- reg: physical base address of the controller and length of memory mapped
  region.

- interrupts: The interrupt number to the cpu.

Board Specific Properties:
- keypad,num-rows: Number of row lines connected to the keypad
  controller.

- keypad,num-columns: Number of column lines connected to the
  keypad controller.

- col-debounce-filter-period: The debounce period for the Column filter.

	KEYPAD_DEBOUNCE_1_ms	=	0
	KEYPAD_DEBOUNCE_2_ms	=	1
	KEYPAD_DEBOUNCE_4_ms	=	2
	KEYPAD_DEBOUNCE_8_ms	=	3
	KEYPAD_DEBOUNCE_16_ms	=	4
	KEYPAD_DEBOUNCE_32_ms	=	5
	KEYPAD_DEBOUNCE_64_ms	=	6
	KEYPAD_DEBOUNCE_128_ms	=	7

- status-debounce-filter-period: The debounce period for the Status filter.

	KEYPAD_DEBOUNCE_1_ms	=	0
	KEYPAD_DEBOUNCE_2_ms	=	1
	KEYPAD_DEBOUNCE_4_ms	=	2
	KEYPAD_DEBOUNCE_8_ms	=	3
	KEYPAD_DEBOUNCE_16_ms	=	4
	KEYPAD_DEBOUNCE_32_ms	=	5
	KEYPAD_DEBOUNCE_64_ms	=	6
	KEYPAD_DEBOUNCE_128_ms	=	7

- row-output-enabled: An optional property indicating whether the row or
  column is being used as output. If specified the row is being used
  as the output. Else defaults to column.

- pull-up-enabled: An optional property indicating the Keypad scan mode.
  If specified implies the keypad scan pull-up has been enabled.

- autorepeat: Boolean, Enable auto repeat feature of Linux input
	  subsystem (optional).

- linux,keymap: The keymap for keys as described in the binding document
  devicetree/bindings/input/matrix-keymap.txt.

Example:
#include "dt-bindings/input/input.h"

/ {
	keypad: keypad@180ac000 {
		/* Required SoC specific properties */
		compatible = "brcm,bcm-keypad";

		/* Required Board specific properties */
		keypad,num-rows = <5>;
		keypad,num-columns = <5>;
		status = "okay";

		linux,keymap = <MATRIX_KEY(0x00, 0x02, KEY_F) /* key_forward */
		MATRIX_KEY(0x00, 0x03, KEY_HOME) /* key_home */
		MATRIX_KEY(0x00, 0x04, KEY_M) /* key_message */
		MATRIX_KEY(0x01, 0x00, KEY_A) /* key_contacts */
		MATRIX_KEY(0x01, 0x01, KEY_1) /* key_1 */
		MATRIX_KEY(0x01, 0x02, KEY_2) /* key_2 */
		MATRIX_KEY(0x01, 0x03, KEY_3) /* key_3 */
		MATRIX_KEY(0x01, 0x04, KEY_S) /* key_speaker */
		MATRIX_KEY(0x02, 0x00, KEY_P) /* key_phone */
		MATRIX_KEY(0x02, 0x01, KEY_4) /* key_4 */
		MATRIX_KEY(0x02, 0x02, KEY_5) /* key_5 */
		MATRIX_KEY(0x02, 0x03, KEY_6) /* key_6 */
		MATRIX_KEY(0x02, 0x04, KEY_VOLUMEUP) /* key_vol_up */
		MATRIX_KEY(0x03, 0x00, KEY_C) /* key_call_log */
		MATRIX_KEY(0x03, 0x01, KEY_7) /* key_7 */
		MATRIX_KEY(0x03, 0x02, KEY_8) /* key_8 */
		MATRIX_KEY(0x03, 0x03, KEY_9) /* key_9 */
		MATRIX_KEY(0x03, 0x04, KEY_VOLUMEDOWN) /* key_vol_down */
		MATRIX_KEY(0x04, 0x00, KEY_H) /* key_headset */
		MATRIX_KEY(0x04, 0x01, KEY_KPASTERISK) /* key_* */
		MATRIX_KEY(0x04, 0x02, KEY_0) /* key_0 */
		MATRIX_KEY(0x04, 0x03, KEY_GRAVE) /* key_# */
		MATRIX_KEY(0x04, 0x04, KEY_MUTE) /* key_mute */
		>;

		/* Optional board specific properties */
		col-debounce-filter-period = <5>;
		row-output-enabled;
		pull-up-enabled;

	};
};
+43 −0
Original line number Diff line number Diff line
Qualcomm PM8941 PMIC Power Key

PROPERTIES

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,pm8941-pwrkey"

- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: base address of registers for block

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: key change interrupt; The format of the specifier is
		    defined by the binding document describing the node's
		    interrupt parent.

- debounce:
	Usage: optional
	Value type: <u32>
	Definition: time in microseconds that key must be pressed or released
		    for state change interrupt to trigger.

- bias-pull-up:
	Usage: optional
	Value type: <empty>
	Definition: presence of this property indicates that the KPDPWR_N pin
		    should be configured for pull up.

EXAMPLE

	pwrkey@800 {
		compatible = "qcom,pm8941-pwrkey";
		reg = <0x800>;
		interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>;
		debounce = <15625>;
		bias-pull-up;
	};
+76 −0
Original line number Diff line number Diff line
* Broadcom's IPROC Touchscreen Controller

Required properties:
- compatible: must be "brcm,iproc-touchscreen"
- reg: physical base address of the controller and length of memory mapped
  region.
- clocks:  The clock provided by the SOC to driver the tsc
- clock-name:  name for the clock
- interrupts: The touchscreen controller's interrupt

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:

	touchscreen: tsc@0x180A6000 {
		compatible = "brcm,iproc-touchscreen";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0x180A6000 0x40>;
		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;
	};
+46 −0
Original line number Diff line number Diff line
* ChipOne icn8318 I2C touchscreen controller

Required properties:
 - compatible		  : "chipone,icn8318"
 - reg			  : I2C slave address of the chip (0x40)
 - interrupt-parent	  : a phandle pointing to the interrupt controller
			    serving the interrupt for this chip
 - interrupts		  : interrupt specification for the icn8318 interrupt
 - wake-gpios		  : GPIO specification for the WAKE input
 - touchscreen-size-x	  : horizontal resolution of touchscreen (in pixels)
 - touchscreen-size-y	  : vertical resolution of touchscreen (in pixels)

Optional properties:
 - pinctrl-names	  : should be "default"
 - pinctrl-0:		  : a phandle pointing to the pin settings for the
			    control gpios
 - 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)
 - touchscreen-swapped-x-y	  : X and Y axis are swapped (boolean)
			    Swapping is done after inverting the axis

Example:

i2c@00000000 {
	/* ... */

	chipone_icn8318@40 {
		compatible = "chipone,icn8318";
		reg = <0x40>;
		interrupt-parent = <&pio>;
		interrupts = <9 IRQ_TYPE_EDGE_FALLING>; /* EINT9 (PG9) */
		pinctrl-names = "default";
		pinctrl-0 = <&ts_wake_pin_p66>;
		wake-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */
		touchscreen-size-x = <800>;
		touchscreen-size-y = <480>;
		touchscreen-inverted-x;
		touchscreen-swapped-x-y;
	};

	/* ... */
};
+29 −0
Original line number Diff line number Diff line
Device tree bindings for Goodix GT9xx series touchscreen controller

Required properties:

 - compatible		: Should be "goodix,gt911"
				 or "goodix,gt9110"
				 or "goodix,gt912"
				 or "goodix,gt927"
				 or "goodix,gt9271"
				 or "goodix,gt928"
				 or "goodix,gt967"
 - reg			: I2C address of the chip. Should be 0x5d or 0x14
 - interrupt-parent	: Interrupt controller to which the chip is connected
 - interrupts		: Interrupt to which the chip is connected

Example:

	i2c@00000000 {
		/* ... */

		gt928@5d {
			compatible = "goodix,gt928";
			reg = <0x5d>;
			interrupt-parent = <&gpio>;
			interrupts = <0 0>;
		};

		/* ... */
	};
Loading