Message ID | 20241105130322.213623-4-markus.burri@mt.com |
---|---|
State | New |
Headers | show |
Series | Input: matrix-keypad: Various performance improvements | expand |
On Tue, Nov 05, 2024 at 02:03:18PM +0100, Markus Burri wrote: > Convert the gpio-matrix-keypad bindings from text to DT schema. Please don't thread new versions to previous thread. > > Signed-off-by: Markus Burri <markus.burri@mt.com> > --- > .../bindings/input/gpio-matrix-keypad.txt | 49 --------- > .../bindings/input/gpio-matrix-keypad.yaml | 99 +++++++++++++++++++ > 2 files changed, 99 insertions(+), 49 deletions(-) > delete mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt > create mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt > deleted file mode 100644 > index 570dc10..0000000 > --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt > +++ /dev/null > @@ -1,49 +0,0 @@ > -* GPIO driven matrix keypad device tree bindings > - > -GPIO driven matrix keypad is used to interface a SoC with a matrix keypad. > -The matrix keypad supports multiple row and column lines, a key can be > -placed at each intersection of a unique row and a unique column. The matrix > -keypad can sense a key-press and key-release by means of GPIO lines and > -report the event using GPIO interrupts to the cpu. > - > -Required Properties: > -- compatible: Should be "gpio-matrix-keypad" > -- row-gpios: List of gpios used as row lines. The gpio specifier > - for this property depends on the gpio controller to > - which these row lines are connected. > -- col-gpios: List of gpios used as column lines. The gpio specifier > - for this property depends on the gpio controller to > - which these column lines are connected. > -- linux,keymap: The definition can be found at > - bindings/input/matrix-keymap.txt > - > -Optional Properties: > -- linux,no-autorepeat: do no enable autorepeat feature. > -- wakeup-source: use any event on keypad as wakeup event. > - (Legacy property supported: "linux,wakeup") > -- debounce-delay-ms: debounce interval in milliseconds > -- col-scan-delay-us: delay, measured in microseconds, that is needed > - before we can scan keypad after activating column gpio > -- drive-inactive-cols: drive inactive columns during scan, > - default is to turn inactive columns into inputs. > - > -Example: > - matrix-keypad { > - compatible = "gpio-matrix-keypad"; > - debounce-delay-ms = <5>; > - col-scan-delay-us = <2>; > - > - row-gpios = <&gpio2 25 0 > - &gpio2 26 0 > - &gpio2 27 0>; > - > - col-gpios = <&gpio2 21 0 > - &gpio2 22 0>; > - > - linux,keymap = <0x0000008B > - 0x0100009E > - 0x02000069 > - 0x0001006A > - 0x0101001C > - 0x0201006C>; > - }; > diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > new file mode 100644 > index 0000000..745652b > --- /dev/null > +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml > @@ -0,0 +1,99 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > + > +$id: http://devicetree.org/schemas/input/gpio-matrix-keypad.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: GPIO matrix keypad > + > +description: | Don't need '|' if no formatting. > + GPIO driven matrix keypad is used to interface a SoC with a matrix keypad. > + The matrix keypad supports multiple row and column lines, a key can be > + placed at each intersection of a unique row and a unique column. The matrix > + keypad can sense a key-press and key-release by means of GPIO lines and > + report the event using GPIO interrupts to the cpu. > + > +maintainers: > + - Marek Vasut <marek.vasut@gmail.com> > + > +properties: > + compatible: > + const: gpio-matrix-keypad > + > + row-gpios: > + description: | Ditto. > + List of GPIOs used as row lines. The gpio specifier > + for this property depends on the gpio controller to > + which these row lines are connected. Why the odd line length? Wrap at 80 char unless there's some exceptional reason to go to 100. > + > + col-gpios: > + description: | > + List of GPIOs used as column lines. The gpio specifier > + for this property depends on the gpio controller to > + which these column lines are connected. Is there some reasonable range of GPIOs? 1xN is in theory possible, but surely no one would use N+1 GPIOs for what could be done with N GPIOs? So 'minItems: 2'. A max is not so clear. Eventually, I guess you couldn't scan them fast enough. 64 or 128 seems like way more than anyone would do. > + > + linux,keymap: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + description: | > + An array of packed 1-cell entries containing the equivalent of row, > + column and linux key-code. The 32-bit big endian cell is packed as: > + row << 24 | column << 16 | key-code If you are copying another schema, you are doing it wrong... You need a $ref to matrix-keymap.yaml. > + > + linux,no-autorepeat: > + type: boolean > + description: Do not enable autorepeat feature. > + default: false Drop 'default'. Doesn't apply to booleans. > + > + wakeup-source: > + description: | > + Use any event on keypad as wakeup event. > + (Legacy property supported: "linux,wakeup") Not supported if it is not in the schema. I imagine that's been deprecated long enough, you can just drop mentioning it. > + default: false Drop. > + > + debounce-delay-ms: > + description: Debounce interval in milliseconds. > + default: 0 > + > + col-scan-delay-us: > + description: | > + Delay, measured in microseconds, that is needed > + before we can scan keypad after activating column gpio. > + default: 0 > + > + drive-inactive-cols: > + type: boolean > + description: | > + Drive inactive columns during scan, > + default is to turn inactive columns into inputs. > + default: false Drop > + > +required: > + - compatible > + - row-gpios > + - col-gpios > + - linux,keymap > + > +additionalProperties: false > + > +examples: > + - | > + matrix-keypad { > + compatible = "gpio-matrix-keypad"; > + debounce-delay-ms = <5>; > + col-scan-delay-us = <2>; > + > + row-gpios = <&gpio2 25 0 > + &gpio2 26 0 > + &gpio2 27 0>; > + > + col-gpios = <&gpio2 21 0 > + &gpio2 22 0>; > + > + linux,keymap = <0x0000008B > + 0x0100009E > + 0x02000069 > + 0x0001006A > + 0x0101001C > + 0x0201006C>; > + }; > -- > 2.39.5 >
diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt deleted file mode 100644 index 570dc10..0000000 --- a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt +++ /dev/null @@ -1,49 +0,0 @@ -* GPIO driven matrix keypad device tree bindings - -GPIO driven matrix keypad is used to interface a SoC with a matrix keypad. -The matrix keypad supports multiple row and column lines, a key can be -placed at each intersection of a unique row and a unique column. The matrix -keypad can sense a key-press and key-release by means of GPIO lines and -report the event using GPIO interrupts to the cpu. - -Required Properties: -- compatible: Should be "gpio-matrix-keypad" -- row-gpios: List of gpios used as row lines. The gpio specifier - for this property depends on the gpio controller to - which these row lines are connected. -- col-gpios: List of gpios used as column lines. The gpio specifier - for this property depends on the gpio controller to - which these column lines are connected. -- linux,keymap: The definition can be found at - bindings/input/matrix-keymap.txt - -Optional Properties: -- linux,no-autorepeat: do no enable autorepeat feature. -- wakeup-source: use any event on keypad as wakeup event. - (Legacy property supported: "linux,wakeup") -- debounce-delay-ms: debounce interval in milliseconds -- col-scan-delay-us: delay, measured in microseconds, that is needed - before we can scan keypad after activating column gpio -- drive-inactive-cols: drive inactive columns during scan, - default is to turn inactive columns into inputs. - -Example: - matrix-keypad { - compatible = "gpio-matrix-keypad"; - debounce-delay-ms = <5>; - col-scan-delay-us = <2>; - - row-gpios = <&gpio2 25 0 - &gpio2 26 0 - &gpio2 27 0>; - - col-gpios = <&gpio2 21 0 - &gpio2 22 0>; - - linux,keymap = <0x0000008B - 0x0100009E - 0x02000069 - 0x0001006A - 0x0101001C - 0x0201006C>; - }; diff --git a/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml new file mode 100644 index 0000000..745652b --- /dev/null +++ b/Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml @@ -0,0 +1,99 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- + +$id: http://devicetree.org/schemas/input/gpio-matrix-keypad.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: GPIO matrix keypad + +description: | + GPIO driven matrix keypad is used to interface a SoC with a matrix keypad. + The matrix keypad supports multiple row and column lines, a key can be + placed at each intersection of a unique row and a unique column. The matrix + keypad can sense a key-press and key-release by means of GPIO lines and + report the event using GPIO interrupts to the cpu. + +maintainers: + - Marek Vasut <marek.vasut@gmail.com> + +properties: + compatible: + const: gpio-matrix-keypad + + row-gpios: + description: | + List of GPIOs used as row lines. The gpio specifier + for this property depends on the gpio controller to + which these row lines are connected. + + col-gpios: + description: | + List of GPIOs used as column lines. The gpio specifier + for this property depends on the gpio controller to + which these column lines are connected. + + linux,keymap: + $ref: /schemas/types.yaml#/definitions/uint32-array + description: | + An array of packed 1-cell entries containing the equivalent of row, + column and linux key-code. The 32-bit big endian cell is packed as: + row << 24 | column << 16 | key-code + + linux,no-autorepeat: + type: boolean + description: Do not enable autorepeat feature. + default: false + + wakeup-source: + description: | + Use any event on keypad as wakeup event. + (Legacy property supported: "linux,wakeup") + default: false + + debounce-delay-ms: + description: Debounce interval in milliseconds. + default: 0 + + col-scan-delay-us: + description: | + Delay, measured in microseconds, that is needed + before we can scan keypad after activating column gpio. + default: 0 + + drive-inactive-cols: + type: boolean + description: | + Drive inactive columns during scan, + default is to turn inactive columns into inputs. + default: false + +required: + - compatible + - row-gpios + - col-gpios + - linux,keymap + +additionalProperties: false + +examples: + - | + matrix-keypad { + compatible = "gpio-matrix-keypad"; + debounce-delay-ms = <5>; + col-scan-delay-us = <2>; + + row-gpios = <&gpio2 25 0 + &gpio2 26 0 + &gpio2 27 0>; + + col-gpios = <&gpio2 21 0 + &gpio2 22 0>; + + linux,keymap = <0x0000008B + 0x0100009E + 0x02000069 + 0x0001006A + 0x0101001C + 0x0201006C>; + };
Convert the gpio-matrix-keypad bindings from text to DT schema. Signed-off-by: Markus Burri <markus.burri@mt.com> --- .../bindings/input/gpio-matrix-keypad.txt | 49 --------- .../bindings/input/gpio-matrix-keypad.yaml | 99 +++++++++++++++++++ 2 files changed, 99 insertions(+), 49 deletions(-) delete mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.txt create mode 100644 Documentation/devicetree/bindings/input/gpio-matrix-keypad.yaml