Commit 9ae2940c authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull input updates from Dmitry Torokhov:

 - support for PixArt PS/2 touchpad

 - updates to tsc2004/5, usbtouchscreen, and zforce_ts drivers

 - support for GPIO-only mode for ADP55888 controller

 - support for touch keys in Zinitix driver

 - support for querying density of Synaptics sensors

 - sysfs interface for Goodex "Berlin" devices to read and write touch
   IC registers

 - more quirks to i8042 to handle various Tuxedo laptops

 - a number of drivers have been converted to using "guard" notation
   when acquiring various locks, as well as using other cleanup
   functions to simplify releasing of resources (with more drivers to
   follow)

 - evdev will limit amount of data that can be written into an evdev
   instance at a given time to 4096 bytes (170 input events) to avoid
   holding evdev->mutex for too long and starving other users

 - Spitz has been converted to use software nodes/properties to describe
   its matrix keypad and GPIO-connected LEDs

 - msc5000_ts, msc_touchkey and keypad-nomadik-ske drivers have been
   removed since noone in mainline have been using them

 - other assorted cleanups and fixes

* tag 'input-for-v6.12-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (98 commits)
  ARM: spitz: fix compile error when matrix keypad driver is enabled
  Input: hynitron_cstxxx - drop explicit initialization of struct i2c_device_id::driver_data to 0
  Input: adp5588-keys - fix check on return code
  Input: Convert comma to semicolon
  Input: i8042 - add TUXEDO Stellaris 15 Slim Gen6 AMD to i8042 quirk table
  Input: i8042 - add another board name for TUXEDO Stellaris Gen5 AMD line
  Input: tegra-kbc - use of_property_read_variable_u32_array() and of_property_present()
  Input: ps2-gpio - use IRQF_NO_AUTOEN flag in request_irq()
  Input: ims-pcu - fix calling interruptible mutex
  Input: zforce_ts - switch to using asynchronous probing
  Input: zforce_ts - remove assert/deassert wrappers
  Input: zforce_ts - do not hardcode interrupt level
  Input: zforce_ts - switch to using devm_regulator_get_enable()
  Input: zforce_ts - stop treating VDD regulator as optional
  Input: zforce_ts - make zforce_idtable constant
  Input: zforce_ts - use dev_err_probe() where appropriate
  Input: zforce_ts - do not ignore errors when acquiring regulator
  Input: zforce_ts - make parsing of contacts less confusing
  Input: zforce_ts - switch to using get_unaligned_le16
  Input: zforce_ts - use guard notation when acquiring mutexes
  ...
parents 6db6a19f 358800b7
Loading
Loading
Loading
Loading
+33 −5
Original line number Diff line number Diff line
@@ -49,7 +49,10 @@ properties:
  interrupt-controller:
    description:
      This property applies if either keypad,num-rows lower than 8 or
      keypad,num-columns lower than 10.
      keypad,num-columns lower than 10. This property is optional if
      keypad,num-rows or keypad,num-columns are not specified as the
      device is then configured to be used purely for gpio during which
      interrupts may or may not be utilized.

  '#interrupt-cells':
    const: 2
@@ -65,13 +68,23 @@ properties:
    minItems: 1
    maxItems: 2

dependencies:
  keypad,num-rows:
    - linux,keymap
    - keypad,num-columns
  keypad,num-columns:
    - linux,keymap
    - keypad,num-rows
  linux,keymap:
    - keypad,num-rows
    - keypad,num-columns
    - interrupts
  interrupt-controller:
    - interrupts

required:
  - compatible
  - reg
  - interrupts
  - keypad,num-rows
  - keypad,num-columns
  - linux,keymap

unevaluatedProperties: false

@@ -108,4 +121,19 @@ examples:
            >;
        };
    };

  - |
    #include <dt-bindings/gpio/gpio.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;
        gpio@34 {
            compatible = "adi,adp5588";
            reg = <0x34>;

            #gpio-cells = <2>;
            gpio-controller;
        };
    };

...
+0 −50
Original line number Diff line number Diff line
Rotary encoder DT bindings

Required properties:
- gpios: a spec for at least two GPIOs to be used, most significant first

Optional properties:
- linux,axis: the input subsystem axis to map to this rotary encoder.
  Defaults to 0 (ABS_X / REL_X)
- rotary-encoder,steps: Number of steps in a full turnaround of the
  encoder. Only relevant for absolute axis. Defaults to 24 which is a
  typical value for such devices.
- rotary-encoder,relative-axis: register a relative axis rather than an
  absolute one. Relative axis will only generate +1/-1 events on the input
  device, hence no steps need to be passed.
- rotary-encoder,rollover: Automatic rollover when the rotary value becomes
  greater than the specified steps or smaller than 0. For absolute axis only.
- rotary-encoder,steps-per-period: Number of steps (stable states) per period.
  The values have the following meaning:
  1: Full-period mode (default)
  2: Half-period mode
  4: Quarter-period mode
- wakeup-source: Boolean, rotary encoder can wake up the system.
- rotary-encoder,encoding: String, the method used to encode steps.
  Supported are "gray" (the default and more common) and "binary".

Deprecated properties:
- rotary-encoder,half-period: Makes the driver work on half-period mode.
  This property is deprecated. Instead, a 'steps-per-period ' value should
  be used, such as "rotary-encoder,steps-per-period = <2>".

See Documentation/input/devices/rotary-encoder.rst for more information.

Example:

		rotary@0 {
			compatible = "rotary-encoder";
			gpios = <&gpio 19 1>, <&gpio 20 0>; /* GPIO19 is inverted */
			linux,axis = <0>; /* REL_X */
			rotary-encoder,encoding = "gray";
			rotary-encoder,relative-axis;
		};

		rotary@1 {
			compatible = "rotary-encoder";
			gpios = <&gpio 21 0>, <&gpio 22 0>;
			linux,axis = <1>; /* ABS_Y */
			rotary-encoder,steps = <24>;
			rotary-encoder,encoding = "binary";
			rotary-encoder,rollover;
		};
+90 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/rotary-encoder.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Rotary encoder

maintainers:
  - Frank Li <Frank.Li@nxp.com>

description:
  See Documentation/input/devices/rotary-encoder.rst for more information.

properties:
  compatible:
    const: rotary-encoder

  gpios:
    minItems: 2

  linux,axis:
    default: 0
    description:
      the input subsystem axis to map to this rotary encoder.
      Defaults to 0 (ABS_X / REL_X)

  rotary-encoder,steps:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 24
    description:
      Number of steps in a full turnaround of the
      encoder. Only relevant for absolute axis. Defaults to 24 which is a
      typical value for such devices.

  rotary-encoder,relative-axis:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      register a relative axis rather than an
      absolute one. Relative axis will only generate +1/-1 events on the input
      device, hence no steps need to be passed.

  rotary-encoder,rollover:
    $ref: /schemas/types.yaml#/definitions/int32
    description:
      Automatic rollover when the rotary value becomes
      greater than the specified steps or smaller than 0. For absolute axis only.

  rotary-encoder,steps-per-period:
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 1
    enum: [1, 2, 4]
    description: |
      Number of steps (stable states) per period.
      The values have the following meaning:
      1: Full-period mode (default)
      2: Half-period mode
      4: Quarter-period mode

  wakeup-source: true

  rotary-encoder,encoding:
    $ref: /schemas/types.yaml#/definitions/string
    description: the method used to encode steps.
    enum: [gray, binary]

  rotary-encoder,half-period:
    $ref: /schemas/types.yaml#/definitions/flag
    deprecated: true
    description:
      Makes the driver work on half-period mode.
      This property is deprecated. Instead, a 'steps-per-period ' value should
      be used, such as "rotary-encoder,steps-per-period = <2>".

required:
  - compatible
  - gpios

additionalProperties: false

examples:
  - |
    rotary {
        compatible = "rotary-encoder";
        gpios = <&gpio 19 1>, <&gpio 20 0>; /* GPIO19 is inverted */
        linux,axis = <0>; /* REL_X */
        rotary-encoder,encoding = "gray";
        rotary-encoder,relative-axis;
    };
+0 −71
Original line number Diff line number Diff line
* Analog Devices AD7879(-1)/AD7889(-1) touchscreen interface (SPI/I2C)

Required properties:
- compatible			: for SPI slave, use "adi,ad7879"
				  for I2C slave, use "adi,ad7879-1"
- reg				: SPI chipselect/I2C slave address
				  See spi-bus.txt for more SPI slave properties
- interrupts			: touch controller interrupt
- touchscreen-max-pressure	: maximum reported pressure
- adi,resistance-plate-x	: total resistance of X-plate (for pressure
				  calculation)
Optional properties:
- touchscreen-swapped-x-y	: X and Y axis are swapped (boolean)
- adi,first-conversion-delay	: 0-12: In 128us steps (starting with 128us)
				  13  : 2.560ms
				  14  : 3.584ms
				  15  : 4.096ms
				  This property has to be a '/bits/ 8' value
- adi,acquisition-time		: 0: 2us
				  1: 4us
				  2: 8us
				  3: 16us
				  This property has to be a '/bits/ 8' value
- adi,median-filter-size	: 0: disabled
				  1: 4 measurements
				  2: 8 measurements
				  3: 16 measurements
				  This property has to be a '/bits/ 8' value
- adi,averaging			: 0: 2 middle values (1 if median disabled)
				  1: 4 middle values
				  2: 8 middle values
				  3: 16 values
				  This property has to be a '/bits/ 8' value
- adi,conversion-interval:	: 0    : convert one time only
				  1-255: 515us + val * 35us (up to 9.440ms)
				  This property has to be a '/bits/ 8' value
- gpio-controller		: Switch AUX/VBAT/GPIO pin to GPIO mode

Example:

	touchscreen0@2c {
		compatible = "adi,ad7879-1";
		reg = <0x2c>;
		interrupt-parent = <&gpio1>;
		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
		touchscreen-max-pressure = <4096>;
		adi,resistance-plate-x = <120>;
		adi,first-conversion-delay = /bits/ 8 <3>;
		adi,acquisition-time = /bits/ 8 <1>;
		adi,median-filter-size = /bits/ 8 <2>;
		adi,averaging = /bits/ 8 <1>;
		adi,conversion-interval = /bits/ 8 <255>;
	};

	touchscreen1@1 {
		compatible = "adi,ad7879";
		spi-max-frequency = <5000000>;
		reg = <1>;
		spi-cpol;
		spi-cpha;
		gpio-controller;
		interrupt-parent = <&gpio1>;
		interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
		touchscreen-max-pressure = <4096>;
		adi,resistance-plate-x = <120>;
		adi,first-conversion-delay = /bits/ 8 <3>;
		adi,acquisition-time = /bits/ 8 <1>;
		adi,median-filter-size = /bits/ 8 <2>;
		adi,averaging = /bits/ 8 <1>;
		adi,conversion-interval = /bits/ 8 <255>;
	};
+150 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/touchscreen/adi,ad7879.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices AD7879(-1)/AD7889(-1) touchscreen interface (SPI/I2C)

maintainers:
  - Frank Li <Frank.Li@nxp.com>

properties:
  compatible:
    description: |
      for SPI slave, use "adi,ad7879"
      for I2C slave, use "adi,ad7879-1"
    enum:
      - adi,ad7879
      - adi,ad7879-1

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  touchscreen-max-pressure:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: maximum reported pressure

  adi,resistance-plate-x:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: total resistance of X-plate (for pressure calculation)

  touchscreen-swapped-x-y:
    $ref: /schemas/types.yaml#/definitions/flag
    description: X and Y axis are swapped (boolean)

  adi,first-conversion-delay:
    $ref: /schemas/types.yaml#/definitions/uint8
    default: 0
    minimum: 0
    maximum: 15
    description: |
      0-12: In 128us steps (starting with 128us)
      13  : 2.560ms
      14  : 3.584ms
      15  : 4.096ms
      This property has to be a '/bits/ 8' value

  adi,acquisition-time:
    $ref: /schemas/types.yaml#/definitions/uint8
    default: 0
    enum: [0, 1, 2, 3]
    description: |
      0: 2us
      1: 4us
      2: 8us
      3: 16us
      This property has to be a '/bits/ 8' value

  adi,median-filter-size:
    $ref: /schemas/types.yaml#/definitions/uint8
    default: 0
    enum: [0, 1, 2, 3]
    description: |
      0: disabled
      1: 4 measurements
      2: 8 measurements
      3: 16 measurements
      This property has to be a '/bits/ 8' value

  adi,averaging:
    $ref: /schemas/types.yaml#/definitions/uint8
    default: 0
    enum: [0, 1, 2, 3]
    description: |
      0: 2 middle values (1 if median disabled)
      1: 4 middle values
      2: 8 middle values
      3: 16 values
      This property has to be a '/bits/ 8' value

  adi,conversion-interval:
    $ref: /schemas/types.yaml#/definitions/uint8
    default: 0
    description: |
      0    : convert one time only
      1-255: 515us + val * 35us (up to 9.440ms)
      This property has to be a '/bits/ 8' value

  gpio-controller: true

  "#gpio-cells":
    const: 1

required:
  - compatible
  - reg

allOf:
  - $ref: /schemas/spi/spi-peripheral-props.yaml

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        touchscreen0@2c {
            compatible = "adi,ad7879-1";
            reg = <0x2c>;
            interrupt-parent = <&gpio1>;
            interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
            touchscreen-max-pressure = <4096>;
            adi,resistance-plate-x = <120>;
            adi,first-conversion-delay = /bits/ 8 <3>;
            adi,acquisition-time = /bits/ 8 <1>;
            adi,median-filter-size = /bits/ 8 <2>;
            adi,averaging = /bits/ 8 <1>;
            adi,conversion-interval = /bits/ 8 <255>;
        };
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        touchscreen1@1 {
            compatible = "adi,ad7879";
            reg = <1>;
            spi-max-frequency = <5000000>;
            gpio-controller;
            #gpio-cells = <1>;
            interrupt-parent = <&gpio1>;
            interrupts = <13 IRQ_TYPE_EDGE_FALLING>;
            touchscreen-max-pressure = <4096>;
            adi,resistance-plate-x = <120>;
            adi,first-conversion-delay = /bits/ 8 <3>;
            adi,acquisition-time = /bits/ 8 <1>;
            adi,median-filter-size = /bits/ 8 <2>;
            adi,averaging = /bits/ 8 <1>;
            adi,conversion-interval = /bits/ 8 <255>;
        };
    };
Loading