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

 - a new driver for IBM Operational Panel

 - a new driver for PinePhone keyboards

 - RT5120 PMIC power key support

 - various enhancements and support for new models in xpad (Xbox) driver

 - a new compatible ID for Elan touchscreen driver

 - rework of adp5588-keys driver to support configuring via device
   properties (OF, ACPI, etc) instead of platform data, and proper
   support of optional gpiochip functionality (and removal of
   gpio-adp5588 driver)

 - improvements to firmware update handling in Synaptics RMI4 driver

 - support for double key matrix in mt6779-keypad

 - support for polled mode in adc-joystick driver

 - other assorted driver fixes, cleanups and improvements

* tag 'input-for-v6.1-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (90 commits)
  Input: i8042 - fix refount leak on sparc
  Input: i8042 - add LoongArch support in i8042-acpipnpio.h
  Input: i8042 - rename i8042-x86ia64io.h to i8042-acpipnpio.h
  Input: pinephone-keyboard - support the proxied I2C bus
  Input: pinephone-keyboard - add PinePhone keyboard driver
  dt-bindings: input: Add the PinePhone keyboard binding
  dt-bindings: input: Convert hid-over-i2c to DT schema
  input: drop empty comment blocks
  Input: xpad - add X-Box Adaptive Profile button
  Input: add ABS_PROFILE to uapi and documentation
  Input: xpad - add X-Box Adaptive XBox button
  Input: xpad - add X-Box Adaptive support
  Input: ims-pcu - fix spelling mistake "BOOLTLOADER" -> "BOOTLOADER"
  Input: ibm-panel - add missing MODULE_DEVICE_TABLE
  Input: icn8505 - utilize acpi_get_subsystem_id()
  Input: xpad - decipher xpadone packages with GIP defines
  Input: xpad - refactor using BIT() macro
  Input: synaptics-rmi4 - convert to use sysfs_emit() APIs
  Input: twl4030-pwrbutton - add missing of.h include
  Input: applespi - replace zero-length array with DECLARE_FLEX_ARRAY() helper
  ...
parents eec4ed31 5f8f8574
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -14,6 +14,9 @@ description: >
  Bindings for joystick devices connected to ADC controllers supporting
  the Industrial I/O subsystem.

allOf:
  - $ref: input.yaml#

properties:
  compatible:
    const: adc-joystick
@@ -28,6 +31,8 @@ properties:
      https://github.com/devicetree-org/dt-schema/blob/master/schemas/iio/iio-consumer.yaml
      for details.

  poll-interval: true

  '#address-cells':
    const: 1

+111 −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/adi,adp5588.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Analog Devices ADP5588 Keypad Controller

maintainers:
  - Nuno Sá <nuno.sa@analog.com>

description: |
  Analog Devices Mobile I/O Expander and QWERTY Keypad Controller
  https://www.analog.com/media/en/technical-documentation/data-sheets/ADP5588.pdf

allOf:
  - $ref: matrix-keymap.yaml#
  - $ref: input.yaml#

properties:
  compatible:
    enum:
      - adi,adp5587
      - adi,adp5588

  reg:
    maxItems: 1

  vcc-supply:
    description: Supply Voltage Input

  reset-gpios:
    description:
      If specified, it will be asserted during driver probe. As the line is
      active low, it should be marked GPIO_ACTIVE_LOW.
    maxItems: 1

  interrupts:
    maxItems: 1

  gpio-controller:
    description:
      This property applies if either keypad,num-rows lower than 8 or
      keypad,num-columns lower than 10.

  '#gpio-cells':
    const: 2

  interrupt-controller:
    description:
      This property applies if either keypad,num-rows lower than 8 or
      keypad,num-columns lower than 10.

  '#interrupt-cells':
    const: 2

  adi,unlock-keys:
    description:
      Specifies a maximum of 2 keys that can be used to unlock the keypad.
      If this property is set, the keyboard will be locked and only unlocked
      after these keys are pressed. If only one key is set, a double click is
      needed to unlock the keypad. The value of this property cannot be bigger
      or equal than keypad,num-rows * keypad,num-columns.
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 1
    maxItems: 2

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

unevaluatedProperties: false

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

        keys@34 {
            compatible = "adi,adp5588";
            reg = <0x34>;

            vcc-supply = <&vcc>;
            interrupts = <21 IRQ_TYPE_EDGE_FALLING>;
            interrupt-parent = <&gpio>;
            reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;

            keypad,num-rows = <1>;
            keypad,num-columns = <9>;
            linux,keymap = <
                MATRIX_KEY(0x00, 0x00, KEY_1)
                MATRIX_KEY(0x00, 0x01, KEY_2)
                MATRIX_KEY(0x00, 0x02, KEY_3)
                MATRIX_KEY(0x00, 0x03, KEY_4)
                MATRIX_KEY(0x00, 0x04, KEY_5)
                MATRIX_KEY(0x00, 0x05, KEY_6)
                MATRIX_KEY(0x00, 0x06, KEY_7)
                MATRIX_KEY(0x00, 0x07, KEY_8)
                MATRIX_KEY(0x00, 0x08, KEY_9)
            >;
        };
    };
...
+0 −46
Original line number Diff line number Diff line
* HID over I2C Device-Tree bindings

HID over I2C provides support for various Human Interface Devices over the
I2C bus. These devices can be for example touchpads, keyboards, touch screens
or sensors.

The specification has been written by Microsoft and is currently available here:
http://msdn.microsoft.com/en-us/library/windows/hardware/hh852380.aspx

If this binding is used, the kernel module i2c-hid will handle the communication
with the device and the generic hid core layer will handle the protocol.

Required properties:
- compatible: must be "hid-over-i2c"
- reg: i2c slave address
- hid-descr-addr: HID descriptor address
- interrupts: interrupt line

Additional optional properties:

Some devices may support additional optional properties to help with, e.g.,
power sequencing. The following properties can be supported by one or more
device-specific compatible properties, which should be used in addition to the
"hid-over-i2c" string.

- compatible:
  * "wacom,w9013" (Wacom W9013 digitizer). Supports:
    - vdd-supply (3.3V)
    - vddl-supply (1.8V)
    - post-power-on-delay-ms

- vdd-supply: phandle of the regulator that provides the supply voltage.
- post-power-on-delay-ms: time required by the device after enabling its regulators
  or powering it on, before it is ready for communication.
- touchscreen-inverted-x: See touchscreen.txt
- touchscreen-inverted-y: See touchscreen.txt

Example:

	i2c-hid-dev@2c {
		compatible = "hid-over-i2c";
		reg = <0x2c>;
		hid-descr-addr = <0x0020>;
		interrupt-parent = <&gpx3>;
		interrupts = <3 2>;
	};
+83 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/hid-over-i2c.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: HID over I2C Devices

maintainers:
  - Benjamin Tissoires <benjamin.tissoires@redhat.com>
  - Jiri Kosina <jkosina@suse.cz>

description: |+
  HID over I2C provides support for various Human Interface Devices over the
  I2C bus. These devices can be for example touchpads, keyboards, touch screens
  or sensors.

  The specification has been written by Microsoft and is currently available here:
  https://msdn.microsoft.com/en-us/library/windows/hardware/hh852380.aspx

  If this binding is used, the kernel module i2c-hid will handle the communication
  with the device and the generic hid core layer will handle the protocol.

allOf:
  - $ref: /schemas/input/touchscreen/touchscreen.yaml#

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - wacom,w9013
          - const: hid-over-i2c
      - description: Just "hid-over-i2c" alone is allowed, but not recommended.
        const: hid-over-i2c

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  hid-descr-addr:
    description: HID descriptor address
    $ref: /schemas/types.yaml#/definitions/uint32

  post-power-on-delay-ms:
    description: Time required by the device after enabling its regulators
      or powering it on, before it is ready for communication.

  touchscreen-inverted-x: true

  touchscreen-inverted-y: true

  vdd-supply:
    description: 3.3V supply

  vddl-supply:
    description: 1.8V supply

  wakeup-source: true

required:
  - compatible
  - reg
  - interrupts

additionalProperties: false

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        hid@2c {
            compatible = "hid-over-i2c";
            reg = <0x2c>;
            hid-descr-addr = <0x0020>;
            interrupts = <3 2>;
        };
    };
...
+50 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/ibm,op-panel.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: IBM Operation Panel

maintainers:
  - Eddie James <eajames@linux.ibm.com>

allOf:
  - $ref: input.yaml#

description: |
  The IBM Operation Panel provides a simple interface to control the connected
  server. It has a display and three buttons: two directional arrows and one
  'Enter' button.

properties:
  compatible:
    const: ibm,op-panel

  reg:
    maxItems: 1

  linux,keycodes:
    minItems: 1
    maxItems: 3

required:
  - compatible
  - reg

additionalProperties: false

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

        ibm-op-panel@62 {
            compatible = "ibm,op-panel";
            reg = <(0x62 | I2C_OWN_SLAVE_ADDRESS)>;
            linux,keycodes = <KEY_UP>, <KEY_DOWN>, <KEY_ENTER>;
        };
    };
Loading