Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: Add bindings for Azoteq IQS620A/621/622/624/625

This patch adds device tree bindings for the Azoteq IQS620A, IQS621,
IQS622, IQS624 and IQS625 multi-function sensors.

A total of three bindings are presented (one MFD and two child nodes);
they are submitted as a single patch because the child node bindings
have no meaning in the absence of the MFD binding.

Signed-off-by: Jeff LaBundy <jeff@labundy.com>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>

authored by

Jeff LaBundy and committed by
Lee Jones
d8a3c488 bb6d3fb3

+343
+132
Documentation/devicetree/bindings/input/iqs62x-keys.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/input/iqs62x-keys.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Azoteq IQS620A/621/622/624/625 Keys and Switches 8 + 9 + maintainers: 10 + - Jeff LaBundy <jeff@labundy.com> 11 + 12 + description: | 13 + The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors 14 + feature a variety of self-capacitive, mutual-inductive and Hall-effect sens- 15 + ing capabilities that can facilitate a variety of contactless key and switch 16 + applications. 17 + 18 + These functions are collectively represented by a "keys" child node from the 19 + parent MFD driver. See Documentation/devicetree/bindings/mfd/iqs62x.yaml for 20 + further details and examples. Sensor hardware configuration (self-capacitive 21 + vs. mutual-inductive, etc.) is selected based on the device's firmware. 22 + 23 + properties: 24 + compatible: 25 + enum: 26 + - azoteq,iqs620a-keys 27 + - azoteq,iqs621-keys 28 + - azoteq,iqs622-keys 29 + - azoteq,iqs624-keys 30 + - azoteq,iqs625-keys 31 + 32 + linux,keycodes: 33 + allOf: 34 + - $ref: /schemas/types.yaml#/definitions/uint32-array 35 + - minItems: 1 36 + maxItems: 16 37 + description: | 38 + Specifies the numeric keycodes associated with each available touch or 39 + proximity event according to the following table. An 'x' indicates the 40 + event is supported for a given device. Specify 0 for unused events. 41 + 42 + ------------------------------------------------------------------------- 43 + | # | Event | IQS620A | IQS621 | IQS622 | IQS624 | IQS625 | 44 + ------------------------------------------------------------------------- 45 + | 0 | CH0 Touch | x | x | x | x | x | 46 + | | Antenna 1 Touch* | x | | | | | 47 + ------------------------------------------------------------------------- 48 + | 1 | CH0 Proximity | x | x | x | x | x | 49 + | | Antenna 1 Prox.* | x | | | | | 50 + ------------------------------------------------------------------------- 51 + | 2 | CH1 Touch | x | x | x | x | x | 52 + | | Ant. 1 Deep Touch* | x | | | | | 53 + ------------------------------------------------------------------------- 54 + | 3 | CH1 Proximity | x | x | x | x | x | 55 + ------------------------------------------------------------------------- 56 + | 4 | CH2 Touch | x | | | | | 57 + ------------------------------------------------------------------------- 58 + | 5 | CH2 Proximity | x | | | | | 59 + | | Antenna 2 Prox.* | x | | | | | 60 + ------------------------------------------------------------------------- 61 + | 6 | Metal (+) Touch** | x | x | | | | 62 + | | Ant. 2 Deep Touch* | x | | | | | 63 + ------------------------------------------------------------------------- 64 + | 7 | Metal (+) Prox.** | x | x | | | | 65 + | | Antenna 2 Touch* | x | | | | | 66 + ------------------------------------------------------------------------- 67 + | 8 | Metal (-) Touch** | x | x | | | | 68 + ------------------------------------------------------------------------- 69 + | 9 | Metal (-) Prox.** | x | x | | | | 70 + ------------------------------------------------------------------------- 71 + | 10 | SAR Active*** | x | | x | | | 72 + ------------------------------------------------------------------------- 73 + | 11 | SAR Quick Rel.*** | x | | x | | | 74 + ------------------------------------------------------------------------- 75 + | 12 | SAR Movement*** | x | | x | | | 76 + ------------------------------------------------------------------------- 77 + | 13 | SAR Filter Halt*** | x | | x | | | 78 + ------------------------------------------------------------------------- 79 + | 14 | Wheel Up | | | | x | | 80 + ------------------------------------------------------------------------- 81 + | 15 | Wheel Down | | | | x | | 82 + ------------------------------------------------------------------------- 83 + * Two-channel SAR. Replaces CH0-2 plus metal touch and proximity events 84 + if enabled via firmware. 85 + ** "+" and "-" refer to the polarity of a channel's delta (LTA - counts), 86 + where "LTA" is defined as the channel's long-term average. 87 + *** One-channel SAR. Replaces CH0-2 touch and proximity events if enabled 88 + via firmware. 89 + 90 + patternProperties: 91 + "^hall-switch-(north|south)$": 92 + type: object 93 + description: 94 + Represents north/south-field Hall-effect sensor touch or proximity 95 + events. Note that north/south-field orientation is reversed on the 96 + IQS620AXzCSR device due to its flip-chip package. 97 + 98 + properties: 99 + linux,code: 100 + $ref: /schemas/types.yaml#/definitions/uint32 101 + description: Numeric switch code associated with the event. 102 + 103 + azoteq,use-prox: 104 + $ref: /schemas/types.yaml#/definitions/flag 105 + description: 106 + If present, specifies that Hall-effect sensor reporting should 107 + use the device's wide-range proximity threshold instead of its 108 + close-range touch threshold (default). 109 + 110 + required: 111 + - linux,code 112 + 113 + additionalProperties: false 114 + 115 + if: 116 + properties: 117 + compatible: 118 + contains: 119 + enum: 120 + - azoteq,iqs624-keys 121 + - azoteq,iqs625-keys 122 + then: 123 + patternProperties: 124 + "^hall-switch-(north|south)$": false 125 + 126 + required: 127 + - compatible 128 + - linux,keycodes 129 + 130 + additionalProperties: false 131 + 132 + ...
+179
Documentation/devicetree/bindings/mfd/iqs62x.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/iqs62x.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Azoteq IQS620A/621/622/624/625 Multi-Function Sensors 8 + 9 + maintainers: 10 + - Jeff LaBundy <jeff@labundy.com> 11 + 12 + description: | 13 + The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors 14 + integrate multiple sensing technologies in a single package. 15 + 16 + Link to datasheets: https://www.azoteq.com/ 17 + 18 + properties: 19 + compatible: 20 + enum: 21 + - azoteq,iqs620a 22 + - azoteq,iqs621 23 + - azoteq,iqs622 24 + - azoteq,iqs624 25 + - azoteq,iqs625 26 + 27 + reg: 28 + maxItems: 1 29 + 30 + interrupts: 31 + maxItems: 1 32 + 33 + firmware-name: 34 + $ref: /schemas/types.yaml#/definitions/string 35 + description: 36 + Specifies the name of the calibration and configuration file selected by 37 + the driver. If this property is omitted, the name is chosen based on the 38 + device name with ".bin" as the extension (e.g. iqs620a.bin for IQS620A). 39 + 40 + keys: 41 + $ref: ../input/iqs62x-keys.yaml 42 + 43 + pwm: 44 + $ref: ../pwm/iqs620a-pwm.yaml 45 + 46 + required: 47 + - compatible 48 + - reg 49 + - interrupts 50 + 51 + additionalProperties: false 52 + 53 + examples: 54 + - | 55 + /* 56 + * Dual capacitive buttons with proximity-activated function, unipolar lid 57 + * switch and panel-mounted LED. 58 + */ 59 + #include <dt-bindings/input/input.h> 60 + #include <dt-bindings/interrupt-controller/irq.h> 61 + 62 + i2c { 63 + #address-cells = <1>; 64 + #size-cells = <0>; 65 + 66 + iqs620a@44 { 67 + compatible = "azoteq,iqs620a"; 68 + reg = <0x44>; 69 + interrupt-parent = <&gpio>; 70 + interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 71 + 72 + keys { 73 + compatible = "azoteq,iqs620a-keys"; 74 + 75 + linux,keycodes = <KEY_SELECT>, 76 + <KEY_MENU>, 77 + <KEY_OK>, 78 + <KEY_MENU>; 79 + 80 + hall-switch-south { 81 + linux,code = <SW_LID>; 82 + azoteq,use-prox; 83 + }; 84 + }; 85 + 86 + iqs620a_pwm: pwm { 87 + compatible = "azoteq,iqs620a-pwm"; 88 + #pwm-cells = <2>; 89 + }; 90 + }; 91 + }; 92 + 93 + pwmleds { 94 + compatible = "pwm-leds"; 95 + 96 + panel { 97 + pwms = <&iqs620a_pwm 0 1000000>; 98 + max-brightness = <255>; 99 + }; 100 + }; 101 + 102 + - | 103 + /* Single inductive button with bipolar dock/tablet-mode switch. */ 104 + #include <dt-bindings/input/input.h> 105 + #include <dt-bindings/interrupt-controller/irq.h> 106 + 107 + i2c { 108 + #address-cells = <1>; 109 + #size-cells = <0>; 110 + 111 + iqs620a@44 { 112 + compatible = "azoteq,iqs620a"; 113 + reg = <0x44>; 114 + interrupt-parent = <&gpio>; 115 + interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 116 + 117 + firmware-name = "iqs620a_coil.bin"; 118 + 119 + keys { 120 + compatible = "azoteq,iqs620a-keys"; 121 + 122 + linux,keycodes = <0>, 123 + <0>, 124 + <0>, 125 + <0>, 126 + <0>, 127 + <0>, 128 + <KEY_MUTE>; 129 + 130 + hall-switch-north { 131 + linux,code = <SW_DOCK>; 132 + }; 133 + 134 + hall-switch-south { 135 + linux,code = <SW_TABLET_MODE>; 136 + }; 137 + }; 138 + }; 139 + }; 140 + 141 + - | 142 + /* Dual capacitive buttons with volume knob. */ 143 + #include <dt-bindings/input/input.h> 144 + #include <dt-bindings/interrupt-controller/irq.h> 145 + 146 + i2c { 147 + #address-cells = <1>; 148 + #size-cells = <0>; 149 + 150 + iqs624@44 { 151 + compatible = "azoteq,iqs624"; 152 + reg = <0x44>; 153 + interrupt-parent = <&gpio>; 154 + interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 155 + 156 + keys { 157 + compatible = "azoteq,iqs624-keys"; 158 + 159 + linux,keycodes = <BTN_0>, 160 + <0>, 161 + <BTN_1>, 162 + <0>, 163 + <0>, 164 + <0>, 165 + <0>, 166 + <0>, 167 + <0>, 168 + <0>, 169 + <0>, 170 + <0>, 171 + <0>, 172 + <0>, 173 + <KEY_VOLUMEUP>, 174 + <KEY_VOLUMEDOWN>; 175 + }; 176 + }; 177 + }; 178 + 179 + ...
+32
Documentation/devicetree/bindings/pwm/iqs620a-pwm.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/pwm/iqs620a-pwm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Azoteq IQS620A PWM Generator 8 + 9 + maintainers: 10 + - Jeff LaBundy <jeff@labundy.com> 11 + 12 + description: | 13 + The Azoteq IQS620A multi-function sensor generates a fixed-frequency PWM 14 + output represented by a "pwm" child node from the parent MFD driver. See 15 + Documentation/devicetree/bindings/mfd/iqs62x.yaml for further details as 16 + well as an example. 17 + 18 + properties: 19 + compatible: 20 + enum: 21 + - azoteq,iqs620a-pwm 22 + 23 + "#pwm-cells": 24 + const: 2 25 + 26 + required: 27 + - compatible 28 + - "#pwm-cells" 29 + 30 + additionalProperties: false 31 + 32 + ...