From: mjchen <mjchen@nuvoton.com>
Add YAML bindings for MA35D1 SoC keypad.
Signed-off-by: mjchen <mjchen@nuvoton.com>
---
.../bindings/input/nvt,ma35d1-keypad.yaml | 88 +++++++++++++++++++
1 file changed, 88 insertions(+)
create mode 100755 Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
diff --git a/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml b/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
new file mode 100755
index 000000000000..3d9fc26cc132
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
@@ -0,0 +1,88 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/nvt,ma35d1-keypad.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NVT MA35D1 Keypad
+
+maintainers:
+ - Ming-jen Chen <mjchen0829@gmail.com>
+
+allOf:
+ - $ref: /schemas/input/matrix-keymap.yaml#
+
+properties:
+ compatible:
+ const: nuvoton,ma35d1-kpi
+
+ debounce-period:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: |
+ key debounce period select
+ 0 = 0 clock
+ 1 = 0 clock
+ 2 = 0 clock
+ 3 = 8 clocks
+ 4 = 16 clocks
+ 5 = 32 clocks
+ 6 = 64 clocks
+ 7 = 128 clocks
+ 8 = 256 clocks
+ 9 = 512 clocks
+ 10 = 1024 clocks
+ 11 = 2048 clocks
+ 12 = 4096 clocks
+ 13 = 8192 clocks
+
+ per-scale:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Row Scan Cycle Pre-scale Value (1 to 256).
+
+ per-scalediv:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Per-scale divider (1 to 256).
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - linux,keymap
+ - debounce-period
+ - per-scale
+ - per-scalediv
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/input/input.h>
+ keypad: keypad@404A0000 {
+ compatible = "nuvoton,ma35d1-kpi";
+ reg = <0x404A0000 0x10000>;
+ interrupts = <79>;
+ clocks = <&clk>;
+ keypad,num-rows = <2>;
+ keypad,num-columns = <2>;
+
+ linux,keymap = <
+ MATRIX_KEY(0, 0, KEY_ENTER)
+ MATRIX_KEY(0, 1, KEY_ENTER)
+ MATRIX_KEY(1, 0, KEY_SPACE)
+ MATRIX_KEY(1, 1, KEY_Z)
+ >;
+
+ debounce-period = <1>;
+ per-scale = <1>;
+ per-scalediv = <24>;
+ };
--
2.17.1
On 22/10/2024 08:31, mjchen wrote: > From: mjchen <mjchen@nuvoton.com> > > Add YAML bindings for MA35D1 SoC keypad. > > Signed-off-by: mjchen <mjchen@nuvoton.com> Don't use your login name as name, but use your known identity or full legal name. Best regards, Krzysztof
On Tue, Oct 22, 2024 at 06:31:57AM +0000, mjchen wrote:
> From: mjchen <mjchen@nuvoton.com>
>
> Add YAML bindings for MA35D1 SoC keypad.
>
> Signed-off-by: mjchen <mjchen@nuvoton.com>
> ---
> .../bindings/input/nvt,ma35d1-keypad.yaml | 88 +++++++++++++++++++
> 1 file changed, 88 insertions(+)
> create mode 100755 Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
>
Please run scripts/checkpatch.pl and fix reported warnings. Then please
run 'scripts/checkpatch.pl --strict' and (probably) fix more warnings.
Some warnings can be ignored, especially from --strict run, but the code
here looks like it needs a fix. Feel free to get in touch if the warning
is not clear.
> diff --git a/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml b/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
> new file mode 100755
> index 000000000000..3d9fc26cc132
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
Filename based on compatible. There is no nvt prefix. Entire filename is
somehowdifferent than compatible.
> @@ -0,0 +1,88 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/input/nvt,ma35d1-keypad.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVT MA35D1 Keypad
NVT? Nuvoton?
> +
> +maintainers:
> + - Ming-jen Chen <mjchen0829@gmail.com>
> +
> +allOf:
> + - $ref: /schemas/input/matrix-keymap.yaml#
> +
> +properties:
> + compatible:
> + const: nuvoton,ma35d1-kpi
> +
> + debounce-period:
> + $ref: /schemas/types.yaml#/definitions/uint32
Missing vendor prefix... or why are you not using existing properties?
> + description: |
> + key debounce period select
select? or clock cycles? I don't understand this. Say something useful
here.
> + 0 = 0 clock
> + 1 = 0 clock
> + 2 = 0 clock
Heh? So this is just 0
> + 3 = 8 clocks
This is 8
> + 4 = 16 clocks
16, not 4
> + 5 = 32 clocks
> + 6 = 64 clocks
> + 7 = 128 clocks
> + 8 = 256 clocks
> + 9 = 512 clocks
> + 10 = 1024 clocks
> + 11 = 2048 clocks
> + 12 = 4096 clocks
> + 13 = 8192 clocks
Use proper enum
> +
> + per-scale:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: Row Scan Cycle Pre-scale Value (1 to 256).
Missing constraints
> +
> + per-scalediv:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: Per-scale divider (1 to 256).
Missing constraints
Both properties are unexpected... aren't you duplicating existing
properties?
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 1
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - clocks
> + - linux,keymap
> + - debounce-period
> + - per-scale
> + - per-scalediv
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/input/input.h>
> + keypad: keypad@404A0000 {
Lowercase hex and drop the unused label
> + compatible = "nuvoton,ma35d1-kpi";
> + reg = <0x404A0000 0x10000>;
Lowercase hex
Best regards,
Krzysztof
On 2024/10/23 下午 04:40, Krzysztof Kozlowski wrote:
> On Tue, Oct 22, 2024 at 06:31:57AM +0000, mjchen wrote:
>> From: mjchen <mjchen@nuvoton.com>
>>
>> Add YAML bindings for MA35D1 SoC keypad.
>>
>> Signed-off-by: mjchen <mjchen@nuvoton.com>
>> ---
>> .../bindings/input/nvt,ma35d1-keypad.yaml | 88 +++++++++++++++++++
>> 1 file changed, 88 insertions(+)
>> create mode 100755 Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
>>
> Please run scripts/checkpatch.pl and fix reported warnings. Then please
> run 'scripts/checkpatch.pl --strict' and (probably) fix more warnings.
> Some warnings can be ignored, especially from --strict run, but the code
> here looks like it needs a fix. Feel free to get in touch if the warning
> is not clear.
Sorry, I will remember to run checkpatch.pl before uploading the
subsequent patches and fix all errors and warnings
>> diff --git a/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml b/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
>> new file mode 100755
>> index 000000000000..3d9fc26cc132
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/input/nvt,ma35d1-keypad.yaml
> Filename based on compatible. There is no nvt prefix. Entire filename is
> somehowdifferent than compatible.
I will modify it to: nuvoton,ma35d1-keypad.yaml
>> @@ -0,0 +1,88 @@
>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/input/nvt,ma35d1-keypad.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: NVT MA35D1 Keypad
> NVT? Nuvoton?
I will change NVT to Nuvoton
>
>> +
>> +maintainers:
>> + - Ming-jen Chen <mjchen0829@gmail.com>
>> +
>> +allOf:
>> + - $ref: /schemas/input/matrix-keymap.yaml#
>> +
>> +properties:
>> + compatible:
>> + const: nuvoton,ma35d1-kpi
>> +
>> + debounce-period:
>> + $ref: /schemas/types.yaml#/definitions/uint32
> Missing vendor prefix... or why are you not using existing properties?
>
>> + description: |
>> + key debounce period select
> select? or clock cycles? I don't understand this. Say something useful
> here.
>
>
>> + 0 = 0 clock
>> + 1 = 0 clock
>> + 2 = 0 clock
> Heh? So this is just 0
>
>> + 3 = 8 clocks
> This is 8
>
>> + 4 = 16 clocks
> 16, not 4
>
>> + 5 = 32 clocks
>> + 6 = 64 clocks
>> + 7 = 128 clocks
>> + 8 = 256 clocks
>> + 9 = 512 clocks
>> + 10 = 1024 clocks
>> + 11 = 2048 clocks
>> + 12 = 4096 clocks
>> + 13 = 8192 clocks
> Use proper enum
I will update the definition to specify the debounce period in terms of
keypad IP clock cycles, as follow:
nuvoton,debounce-period:
type: integer
enum: [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
description: |
Key debounce period select, specified in terms of keypad IP
clock cycles.
This value corresponds to the register setting for the keypad
interface.
The following values indicate the debounce time:
- 0 = 0 clock cycles (no debounce)
- 3 = 8 clock cycles
- 4 = 16 clock cycles
- 5 = 32 clock cycles
- 6 = 64 clock cycles
- 7 = 128 clock cycles
- 8 = 256 clock cycles
- 9 = 512 clock cycles
- 10 = 1024 clock cycles
- 11 = 2048 clock cycles
- 12 = 4096 clock cycles
- 13 = 8192 clock cycles
>
>
>> +
>> + per-scale:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: Row Scan Cycle Pre-scale Value (1 to 256).
> Missing constraints
>
>> +
>> + per-scalediv:
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + description: Per-scale divider (1 to 256).
> Missing constraints
>
> Both properties are unexpected... aren't you duplicating existing
> properties?
pre-scale:
This value configures the IC register for the row scan cycle
pre-scaling, with valid values ranging from 1 to 256
per-scalediv:(I will change pre-scalediv to pre-scale-div)
This will describe its role in setting the divisor for the row scan
cycle pre-scaling, allowing for finer control over the keypad scanning
frequency
I will change it to the following content:
nuvoton,pre-scale:
type: uint32
description: |
Row Scan Cycle Pre-scale Value, used to pre-scale the row scan
cycle. The valid range is from 1 to 256.
minimum: 1
maximum: 256
nuvoton,pre-scale-div:
type: uint32
description: |
Divider for the pre-scale value, further adjusting the scan
frequency for the keypad.
minimum: 1
maximum: 256
>
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + interrupts:
>> + maxItems: 1
>> +
>> + clocks:
>> + maxItems: 1
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - interrupts
>> + - clocks
>> + - linux,keymap
>> + - debounce-period
>> + - per-scale
>> + - per-scalediv
>> +
>> +unevaluatedProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/input/input.h>
>> + keypad: keypad@404A0000 {
> Lowercase hex and drop the unused label
I will modify it to: keypad@404a0000 {
>
>> + compatible = "nuvoton,ma35d1-kpi";
>> + reg = <0x404A0000 0x10000>;
> Lowercase hex
I will modify it to: reg = <0x404a0000 0x10000>
>
> Best regards,
> Krzysztof
Thank you for your guidance!
I look forward to your further comments.
Best regards,
Ming-Jen Chen
On 25/10/2024 07:36, Ming-Jen Chen wrote: >> >>> + 0 = 0 clock >>> + 1 = 0 clock >>> + 2 = 0 clock >> Heh? So this is just 0 >> >>> + 3 = 8 clocks >> This is 8 >> >>> + 4 = 16 clocks >> 16, not 4 >> >>> + 5 = 32 clocks >>> + 6 = 64 clocks >>> + 7 = 128 clocks >>> + 8 = 256 clocks >>> + 9 = 512 clocks >>> + 10 = 1024 clocks >>> + 11 = 2048 clocks >>> + 12 = 4096 clocks >>> + 13 = 8192 clocks >> Use proper enum > I will update the definition to specify the debounce period in terms of > keypad IP clock cycles, as follow: > > nuvoton,debounce-period: > type: integer > enum: [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] > description: | > Key debounce period select, specified in terms of keypad IP > clock cycles. > This value corresponds to the register setting for the keypad > interface. > The following values indicate the debounce time: > - 0 = 0 clock cycles (no debounce) > - 3 = 8 clock cycles > - 4 = 16 clock cycles > - 5 = 32 clock cycles > - 6 = 64 clock cycles > - 7 = 128 clock cycles > - 8 = 256 clock cycles > - 9 = 512 clock cycles > - 10 = 1024 clock cycles > - 11 = 2048 clock cycles > - 12 = 4096 clock cycles > - 13 = 8192 clock cycles No. 0, 8, 16, 32 , 64 etc. >> >> >>> + >>> + per-scale: >>> + $ref: /schemas/types.yaml#/definitions/uint32 >>> + description: Row Scan Cycle Pre-scale Value (1 to 256). >> Missing constraints >> >>> + >>> + per-scalediv: >>> + $ref: /schemas/types.yaml#/definitions/uint32 >>> + description: Per-scale divider (1 to 256). >> Missing constraints >> >> Both properties are unexpected... aren't you duplicating existing >> properties? > pre-scale: > This value configures the IC register for the row scan cycle > pre-scaling, with valid values ranging from 1 to 256 > per-scalediv:(I will change pre-scalediv to pre-scale-div) Please look for matching existing properties first. > This will describe its role in setting the divisor for the row scan > cycle pre-scaling, allowing for finer control over the keypad scanning > frequency > > I will change it to the following content: > nuvoton,pre-scale: > type: uint32 > description: | > Row Scan Cycle Pre-scale Value, used to pre-scale the row scan > cycle. The valid range is from 1 to 256. > minimum: 1 > maximum: 256 > > nuvoton,pre-scale-div: > type: uint32 > description: | > Divider for the pre-scale value, further adjusting the scan > frequency for the keypad. > minimum: 1 > maximum: 256 Best regards, Krzysztof
On 2024/10/25 下午 07:42, Krzysztof Kozlowski wrote: > On 25/10/2024 07:36, Ming-Jen Chen wrote: >>>> + 0 = 0 clock >>>> + 1 = 0 clock >>>> + 2 = 0 clock >>> Heh? So this is just 0 >>> >>>> + 3 = 8 clocks >>> This is 8 >>> >>>> + 4 = 16 clocks >>> 16, not 4 >>> >>>> + 5 = 32 clocks >>>> + 6 = 64 clocks >>>> + 7 = 128 clocks >>>> + 8 = 256 clocks >>>> + 9 = 512 clocks >>>> + 10 = 1024 clocks >>>> + 11 = 2048 clocks >>>> + 12 = 4096 clocks >>>> + 13 = 8192 clocks >>> Use proper enum >> I will update the definition to specify the debounce period in terms of >> keypad IP clock cycles, as follow: >> >> nuvoton,debounce-period: >> type: integer >> enum: [0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] >> description: | >> Key debounce period select, specified in terms of keypad IP >> clock cycles. >> This value corresponds to the register setting for the keypad >> interface. >> The following values indicate the debounce time: >> - 0 = 0 clock cycles (no debounce) >> - 3 = 8 clock cycles >> - 4 = 16 clock cycles >> - 5 = 32 clock cycles >> - 6 = 64 clock cycles >> - 7 = 128 clock cycles >> - 8 = 256 clock cycles >> - 9 = 512 clock cycles >> - 10 = 1024 clock cycles >> - 11 = 2048 clock cycles >> - 12 = 4096 clock cycles >> - 13 = 8192 clock cycles > No. 0, 8, 16, 32 , 64 etc. I will change it to the following content: nuvoton,debounce-period: type: integer enum: [0,8,16,32,64,128,256,512,1024,2048,4096,8192] description: | Key debounce period select, specified in terms of keypad IP clock cycles. Valid values include 0 (no debounce) and specific clock cycle values: 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, and 8192. >>> >>>> + >>>> + per-scale: >>>> + $ref: /schemas/types.yaml#/definitions/uint32 >>>> + description: Row Scan Cycle Pre-scale Value (1 to 256). >>> Missing constraints >>> >>>> + >>>> + per-scalediv: >>>> + $ref: /schemas/types.yaml#/definitions/uint32 >>>> + description: Per-scale divider (1 to 256). >>> Missing constraints >>> >>> Both properties are unexpected... aren't you duplicating existing >>> properties? >> pre-scale: >> This value configures the IC register for the row scan cycle >> pre-scaling, with valid values ranging from 1 to 256 >> per-scalediv:(I will change pre-scalediv to pre-scale-div) > Please look for matching existing properties first. I will change it to the following content: nuvoton,scan-time: type: uint32 description: | Set the scan time for each key, in IP clock cycles. The valid range is from 1 to 256. minimum: 1 maximum: 256 nuvoton,scan-time-div: type: uint32 description: | Divider for the scan-time, further adjusting the scan frequency for the keypad. The valid range is from 1 to 256. minimum: 1 maximum: 256 >> This will describe its role in setting the divisor for the row scan >> cycle pre-scaling, allowing for finer control over the keypad scanning >> frequency >> >> I will change it to the following content: >> nuvoton,pre-scale: >> type: uint32 >> description: | >> Row Scan Cycle Pre-scale Value, used to pre-scale the row scan >> cycle. The valid range is from 1 to 256. >> minimum: 1 >> maximum: 256 >> >> nuvoton,pre-scale-div: >> type: uint32 >> description: | >> Divider for the pre-scale value, further adjusting the scan >> frequency for the keypad. >> minimum: 1 >> maximum: 256 > > Best regards, > Krzysztof Best regards, Ming-Jen Chen
© 2016 - 2026 Red Hat, Inc.