-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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>
- Loading branch information
Jeff LaBundy
authored and
Lee Jones
committed
Mar 27, 2020
1 parent
bb6d3fb
commit d8a3c48
Showing
3 changed files
with
343 additions
and
0 deletions.
There are no files selected for viewing
132 changes: 132 additions & 0 deletions
132
Documentation/devicetree/bindings/input/iqs62x-keys.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/input/iqs62x-keys.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: Azoteq IQS620A/621/622/624/625 Keys and Switches | ||
|
||
maintainers: | ||
- Jeff LaBundy <jeff@labundy.com> | ||
|
||
description: | | ||
The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors | ||
feature a variety of self-capacitive, mutual-inductive and Hall-effect sens- | ||
ing capabilities that can facilitate a variety of contactless key and switch | ||
applications. | ||
These functions are collectively represented by a "keys" child node from the | ||
parent MFD driver. See Documentation/devicetree/bindings/mfd/iqs62x.yaml for | ||
further details and examples. Sensor hardware configuration (self-capacitive | ||
vs. mutual-inductive, etc.) is selected based on the device's firmware. | ||
properties: | ||
compatible: | ||
enum: | ||
- azoteq,iqs620a-keys | ||
- azoteq,iqs621-keys | ||
- azoteq,iqs622-keys | ||
- azoteq,iqs624-keys | ||
- azoteq,iqs625-keys | ||
|
||
linux,keycodes: | ||
allOf: | ||
- $ref: /schemas/types.yaml#/definitions/uint32-array | ||
- minItems: 1 | ||
maxItems: 16 | ||
description: | | ||
Specifies the numeric keycodes associated with each available touch or | ||
proximity event according to the following table. An 'x' indicates the | ||
event is supported for a given device. Specify 0 for unused events. | ||
------------------------------------------------------------------------- | ||
| # | Event | IQS620A | IQS621 | IQS622 | IQS624 | IQS625 | | ||
------------------------------------------------------------------------- | ||
| 0 | CH0 Touch | x | x | x | x | x | | ||
| | Antenna 1 Touch* | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 1 | CH0 Proximity | x | x | x | x | x | | ||
| | Antenna 1 Prox.* | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 2 | CH1 Touch | x | x | x | x | x | | ||
| | Ant. 1 Deep Touch* | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 3 | CH1 Proximity | x | x | x | x | x | | ||
------------------------------------------------------------------------- | ||
| 4 | CH2 Touch | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 5 | CH2 Proximity | x | | | | | | ||
| | Antenna 2 Prox.* | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 6 | Metal (+) Touch** | x | x | | | | | ||
| | Ant. 2 Deep Touch* | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 7 | Metal (+) Prox.** | x | x | | | | | ||
| | Antenna 2 Touch* | x | | | | | | ||
------------------------------------------------------------------------- | ||
| 8 | Metal (-) Touch** | x | x | | | | | ||
------------------------------------------------------------------------- | ||
| 9 | Metal (-) Prox.** | x | x | | | | | ||
------------------------------------------------------------------------- | ||
| 10 | SAR Active*** | x | | x | | | | ||
------------------------------------------------------------------------- | ||
| 11 | SAR Quick Rel.*** | x | | x | | | | ||
------------------------------------------------------------------------- | ||
| 12 | SAR Movement*** | x | | x | | | | ||
------------------------------------------------------------------------- | ||
| 13 | SAR Filter Halt*** | x | | x | | | | ||
------------------------------------------------------------------------- | ||
| 14 | Wheel Up | | | | x | | | ||
------------------------------------------------------------------------- | ||
| 15 | Wheel Down | | | | x | | | ||
------------------------------------------------------------------------- | ||
* Two-channel SAR. Replaces CH0-2 plus metal touch and proximity events | ||
if enabled via firmware. | ||
** "+" and "-" refer to the polarity of a channel's delta (LTA - counts), | ||
where "LTA" is defined as the channel's long-term average. | ||
*** One-channel SAR. Replaces CH0-2 touch and proximity events if enabled | ||
via firmware. | ||
patternProperties: | ||
"^hall-switch-(north|south)$": | ||
type: object | ||
description: | ||
Represents north/south-field Hall-effect sensor touch or proximity | ||
events. Note that north/south-field orientation is reversed on the | ||
IQS620AXzCSR device due to its flip-chip package. | ||
|
||
properties: | ||
linux,code: | ||
$ref: /schemas/types.yaml#/definitions/uint32 | ||
description: Numeric switch code associated with the event. | ||
|
||
azoteq,use-prox: | ||
$ref: /schemas/types.yaml#/definitions/flag | ||
description: | ||
If present, specifies that Hall-effect sensor reporting should | ||
use the device's wide-range proximity threshold instead of its | ||
close-range touch threshold (default). | ||
|
||
required: | ||
- linux,code | ||
|
||
additionalProperties: false | ||
|
||
if: | ||
properties: | ||
compatible: | ||
contains: | ||
enum: | ||
- azoteq,iqs624-keys | ||
- azoteq,iqs625-keys | ||
then: | ||
patternProperties: | ||
"^hall-switch-(north|south)$": false | ||
|
||
required: | ||
- compatible | ||
- linux,keycodes | ||
|
||
additionalProperties: false | ||
|
||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/mfd/iqs62x.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: Azoteq IQS620A/621/622/624/625 Multi-Function Sensors | ||
|
||
maintainers: | ||
- Jeff LaBundy <jeff@labundy.com> | ||
|
||
description: | | ||
The Azoteq IQS620A, IQS621, IQS622, IQS624 and IQS625 multi-function sensors | ||
integrate multiple sensing technologies in a single package. | ||
Link to datasheets: https://www.azoteq.com/ | ||
properties: | ||
compatible: | ||
enum: | ||
- azoteq,iqs620a | ||
- azoteq,iqs621 | ||
- azoteq,iqs622 | ||
- azoteq,iqs624 | ||
- azoteq,iqs625 | ||
|
||
reg: | ||
maxItems: 1 | ||
|
||
interrupts: | ||
maxItems: 1 | ||
|
||
firmware-name: | ||
$ref: /schemas/types.yaml#/definitions/string | ||
description: | ||
Specifies the name of the calibration and configuration file selected by | ||
the driver. If this property is omitted, the name is chosen based on the | ||
device name with ".bin" as the extension (e.g. iqs620a.bin for IQS620A). | ||
|
||
keys: | ||
$ref: ../input/iqs62x-keys.yaml | ||
|
||
pwm: | ||
$ref: ../pwm/iqs620a-pwm.yaml | ||
|
||
required: | ||
- compatible | ||
- reg | ||
- interrupts | ||
|
||
additionalProperties: false | ||
|
||
examples: | ||
- | | ||
/* | ||
* Dual capacitive buttons with proximity-activated function, unipolar lid | ||
* switch and panel-mounted LED. | ||
*/ | ||
#include <dt-bindings/input/input.h> | ||
#include <dt-bindings/interrupt-controller/irq.h> | ||
i2c { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
iqs620a@44 { | ||
compatible = "azoteq,iqs620a"; | ||
reg = <0x44>; | ||
interrupt-parent = <&gpio>; | ||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>; | ||
keys { | ||
compatible = "azoteq,iqs620a-keys"; | ||
linux,keycodes = <KEY_SELECT>, | ||
<KEY_MENU>, | ||
<KEY_OK>, | ||
<KEY_MENU>; | ||
hall-switch-south { | ||
linux,code = <SW_LID>; | ||
azoteq,use-prox; | ||
}; | ||
}; | ||
iqs620a_pwm: pwm { | ||
compatible = "azoteq,iqs620a-pwm"; | ||
#pwm-cells = <2>; | ||
}; | ||
}; | ||
}; | ||
pwmleds { | ||
compatible = "pwm-leds"; | ||
panel { | ||
pwms = <&iqs620a_pwm 0 1000000>; | ||
max-brightness = <255>; | ||
}; | ||
}; | ||
- | | ||
/* Single inductive button with bipolar dock/tablet-mode switch. */ | ||
#include <dt-bindings/input/input.h> | ||
#include <dt-bindings/interrupt-controller/irq.h> | ||
i2c { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
iqs620a@44 { | ||
compatible = "azoteq,iqs620a"; | ||
reg = <0x44>; | ||
interrupt-parent = <&gpio>; | ||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>; | ||
firmware-name = "iqs620a_coil.bin"; | ||
keys { | ||
compatible = "azoteq,iqs620a-keys"; | ||
linux,keycodes = <0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<KEY_MUTE>; | ||
hall-switch-north { | ||
linux,code = <SW_DOCK>; | ||
}; | ||
hall-switch-south { | ||
linux,code = <SW_TABLET_MODE>; | ||
}; | ||
}; | ||
}; | ||
}; | ||
- | | ||
/* Dual capacitive buttons with volume knob. */ | ||
#include <dt-bindings/input/input.h> | ||
#include <dt-bindings/interrupt-controller/irq.h> | ||
i2c { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
iqs624@44 { | ||
compatible = "azoteq,iqs624"; | ||
reg = <0x44>; | ||
interrupt-parent = <&gpio>; | ||
interrupts = <17 IRQ_TYPE_LEVEL_LOW>; | ||
keys { | ||
compatible = "azoteq,iqs624-keys"; | ||
linux,keycodes = <BTN_0>, | ||
<0>, | ||
<BTN_1>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<0>, | ||
<KEY_VOLUMEUP>, | ||
<KEY_VOLUMEDOWN>; | ||
}; | ||
}; | ||
}; | ||
... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/pwm/iqs620a-pwm.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: Azoteq IQS620A PWM Generator | ||
|
||
maintainers: | ||
- Jeff LaBundy <jeff@labundy.com> | ||
|
||
description: | | ||
The Azoteq IQS620A multi-function sensor generates a fixed-frequency PWM | ||
output represented by a "pwm" child node from the parent MFD driver. See | ||
Documentation/devicetree/bindings/mfd/iqs62x.yaml for further details as | ||
well as an example. | ||
properties: | ||
compatible: | ||
enum: | ||
- azoteq,iqs620a-pwm | ||
|
||
"#pwm-cells": | ||
const: 2 | ||
|
||
required: | ||
- compatible | ||
- "#pwm-cells" | ||
|
||
additionalProperties: false | ||
|
||
... |