2021-01-18 12:44:22

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 0/3] auxdisplay: ht16k33: Improvement, fix, and json-schema conversion

Hi Robin, Rob, Miguel,

This patch series contains various updates for the Holtek HT16K33 LED
controller with keyscan DT bindings and driver:
1. Make the keypad function optional, from an old patch by Robin that seem to
have fallen through the cracks,
2. Fix the default brightness range,
3. Convert DT bindings to json-schema.

Thanks!

Geert Uytterhoeven (2):
dt-bindings: auxdisplay: ht16k33: Fix default-brightness-level range
dt-bindings: auxdisplay: ht16k33: Convert to json-schema

Robin van der Gracht (1):
dt-bindings: auxdisplay: ht16k33: Keyscan function should be optional

.../bindings/auxdisplay/holtek,ht16k33.yaml | 77 +++++++++++++++++++
.../devicetree/bindings/display/ht16k33.txt | 40 ----------
MAINTAINERS | 2 +-
drivers/auxdisplay/ht16k33.c | 14 ++--
4 files changed, 84 insertions(+), 49 deletions(-)
create mode 100644 Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
delete mode 100644 Documentation/devicetree/bindings/display/ht16k33.txt

--
2.25.1

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds


2021-01-19 04:13:13

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 3/3] dt-bindings: auxdisplay: ht16k33: Convert to json-schema

Convert the Holtek HT16K33 LED controller with keyscan Device Tree
binding documentation to json-schema.

Move the file from display to auxdisplay.
Update the example:
- Sort properties in order of documentation,
- Group tuples using angle brackets to improve human readability and
enable automatic validation.

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
.../bindings/auxdisplay/holtek,ht16k33.yaml | 77 +++++++++++++++++++
.../devicetree/bindings/display/ht16k33.txt | 43 -----------
MAINTAINERS | 2 +-
3 files changed, 78 insertions(+), 44 deletions(-)
create mode 100644 Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
delete mode 100644 Documentation/devicetree/bindings/display/ht16k33.txt

diff --git a/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml b/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
new file mode 100644
index 0000000000000000..64ffff460026040f
--- /dev/null
+++ b/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
@@ -0,0 +1,77 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/auxdisplay/holtek,ht16k33.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Holtek HT16K33 RAM mapping 16*8 LED controller with keyscan
+
+maintainers:
+ - Robin van der Gracht <[email protected]>
+
+allOf:
+ - $ref: "/schemas/input/matrix-keymap.yaml#"
+
+properties:
+ compatible:
+ const: holtek,ht16k33
+
+ reg:
+ maxItems: 1
+
+ refresh-rate-hz:
+ maxItems: 1
+ description: Display update interval in Hertz
+
+ interrupts:
+ maxItems: 1
+
+ debounce-delay-ms:
+ maxItems: 1
+ description: Debouncing interval time in milliseconds
+
+ linux,keymap: true
+
+ linux,no-autorepeat:
+ description: Disable keyrepeat
+
+ default-brightness-level:
+ minimum: 1
+ maximum: 16
+ default: 16
+ description: Initial brightness level
+
+required:
+ - compatible
+ - reg
+ - refresh-rate-hz
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/input/input.h>
+ i2c1 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ht16k33: ht16k33@70 {
+ compatible = "holtek,ht16k33";
+ reg = <0x70>;
+ refresh-rate-hz = <20>;
+ interrupt-parent = <&gpio4>;
+ interrupts = <5 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>;
+ debounce-delay-ms = <50>;
+ linux,keymap = <MATRIX_KEY(2, 0, KEY_F6)>,
+ <MATRIX_KEY(3, 0, KEY_F8)>,
+ <MATRIX_KEY(4, 0, KEY_F10)>,
+ <MATRIX_KEY(5, 0, KEY_F4)>,
+ <MATRIX_KEY(6, 0, KEY_F2)>,
+ <MATRIX_KEY(2, 1, KEY_F5)>,
+ <MATRIX_KEY(3, 1, KEY_F7)>,
+ <MATRIX_KEY(4, 1, KEY_F9)>,
+ <MATRIX_KEY(5, 1, KEY_F3)>,
+ <MATRIX_KEY(6, 1, KEY_F1)>;
+ };
+ };
diff --git a/Documentation/devicetree/bindings/display/ht16k33.txt b/Documentation/devicetree/bindings/display/ht16k33.txt
deleted file mode 100644
index ec43776970164921..0000000000000000
--- a/Documentation/devicetree/bindings/display/ht16k33.txt
+++ /dev/null
@@ -1,43 +0,0 @@
-Holtek ht16k33 RAM mapping 16*8 LED controller driver with keyscan
--------------------------------------------------------------------------------
-
-Required properties:
-- compatible: "holtek,ht16k33"
-- reg: I2C slave address of the chip.
-- refresh-rate-hz: Display update interval in HZ.
-
-Optional properties:
-- linux,no-autorepeat: Disable keyrepeat.
-- default-brightness-level: Initial brightness level [1-16] (default: 16).
-
-- Keypad
- Supply the 'interrupts' property to enable the keyscan feature.
- - interrupts: Interrupt specification for the key pressed interrupt.
- - debounce-delay-ms: Debouncing interval time in milliseconds.
- - linux,keymap: The keymap for keys as described in the binding
- document (devicetree/bindings/input/matrix-keymap.txt).
-
-Example:
-
-&i2c1 {
- ht16k33: ht16k33@70 {
- compatible = "holtek,ht16k33";
- reg = <0x70>;
- refresh-rate-hz = <20>;
- debounce-delay-ms = <50>;
- interrupt-parent = <&gpio4>;
- interrupts = <5 (IRQ_TYPE_LEVEL_HIGH | IRQ_TYPE_EDGE_RISING)>;
- linux,keymap = <
- MATRIX_KEY(2, 0, KEY_F6)
- MATRIX_KEY(3, 0, KEY_F8)
- MATRIX_KEY(4, 0, KEY_F10)
- MATRIX_KEY(5, 0, KEY_F4)
- MATRIX_KEY(6, 0, KEY_F2)
- MATRIX_KEY(2, 1, KEY_F5)
- MATRIX_KEY(3, 1, KEY_F7)
- MATRIX_KEY(4, 1, KEY_F9)
- MATRIX_KEY(5, 1, KEY_F3)
- MATRIX_KEY(6, 1, KEY_F1)
- >;
- };
-};
diff --git a/MAINTAINERS b/MAINTAINERS
index cc1e6a5ee6e67357..aeb209ad82496d06 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8160,7 +8160,7 @@ F: net/hsr/
HT16K33 LED CONTROLLER DRIVER
M: Robin van der Gracht <[email protected]>
S: Maintained
-F: Documentation/devicetree/bindings/display/ht16k33.txt
+F: Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
F: drivers/auxdisplay/ht16k33.c

HTCPEN TOUCHSCREEN DRIVER
--
2.25.1

2021-01-19 04:13:09

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 1/3] dt-bindings: auxdisplay: ht16k33: Keyscan function should be optional

From: Robin van der Gracht <[email protected]>

Keyscan should be optional to support simple LED matrix displays (output
only).

Reported-by: Michael Kaplan <[email protected]>
Signed-off-by: Robin van der Gracht <[email protected]>
[geert: Rebased]
Signed-off-by: Geert Uytterhoeven <[email protected]>
---
.../devicetree/bindings/display/ht16k33.txt | 11 +++++++----
drivers/auxdisplay/ht16k33.c | 14 ++++++--------
2 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/ht16k33.txt b/Documentation/devicetree/bindings/display/ht16k33.txt
index d5a8b070b46779a4..3d602f5b9eb6bb74 100644
--- a/Documentation/devicetree/bindings/display/ht16k33.txt
+++ b/Documentation/devicetree/bindings/display/ht16k33.txt
@@ -4,16 +4,19 @@ Holtek ht16k33 RAM mapping 16*8 LED controller driver with keyscan
Required properties:
- compatible: "holtek,ht16k33"
- reg: I2C slave address of the chip.
-- interrupts: Interrupt specification for the key pressed interrupt.
- refresh-rate-hz: Display update interval in HZ.
-- debounce-delay-ms: Debouncing interval time in milliseconds.
-- linux,keymap: The keymap for keys as described in the binding
- document (devicetree/bindings/input/matrix-keymap.txt).

Optional properties:
- linux,no-autorepeat: Disable keyrepeat.
- default-brightness-level: Initial brightness level [0-15] (default: 15).

+- Keypad
+ Supply the 'interrupts' property to enable the keyscan feature.
+ - interrupts: Interrupt specification for the key pressed interrupt.
+ - debounce-delay-ms: Debouncing interval time in milliseconds.
+ - linux,keymap: The keymap for keys as described in the binding
+ document (devicetree/bindings/input/matrix-keymap.txt).
+
Example:

&i2c1 {
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index d951d54b26f5239b..444f3b1019e3d425 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -402,11 +402,6 @@ static int ht16k33_probe(struct i2c_client *client,
return -EIO;
}

- if (client->irq <= 0) {
- dev_err(&client->dev, "No IRQ specified\n");
- return -EINVAL;
- }
-
priv = devm_kzalloc(&client->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
@@ -459,9 +454,12 @@ static int ht16k33_probe(struct i2c_client *client,
if (err)
goto err_fbdev_info;

- err = ht16k33_keypad_probe(client, &priv->keypad);
- if (err)
- goto err_fbdev_unregister;
+ /* Keypad */
+ if (client->irq > 0) {
+ err = ht16k33_keypad_probe(client, &priv->keypad);
+ if (err)
+ goto err_fbdev_unregister;
+ }

/* Backlight */
memset(&bl_props, 0, sizeof(struct backlight_properties));
--
2.25.1

2021-01-19 04:15:08

by Geert Uytterhoeven

[permalink] [raw]
Subject: [PATCH 2/3] dt-bindings: auxdisplay: ht16k33: Fix default-brightness-level range

V4 changed the range from 0..15 to 1..16 in the driver, to match the
dimming set hardware register, but forgot to update the DT binding
documentation.

Signed-off-by: Geert Uytterhoeven <[email protected]>
---
v3: https://lore.kernel.org/linux-devicetree/[email protected]/
v4: https://lore.kernel.org/linux-devicetree/ae23cf26135a586440419aaa764f3a70de913c4a.1458140954.git.robin@protonic.nl/
---
Documentation/devicetree/bindings/display/ht16k33.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/display/ht16k33.txt b/Documentation/devicetree/bindings/display/ht16k33.txt
index 3d602f5b9eb6bb74..ec43776970164921 100644
--- a/Documentation/devicetree/bindings/display/ht16k33.txt
+++ b/Documentation/devicetree/bindings/display/ht16k33.txt
@@ -8,7 +8,7 @@ Required properties:

Optional properties:
- linux,no-autorepeat: Disable keyrepeat.
-- default-brightness-level: Initial brightness level [0-15] (default: 15).
+- default-brightness-level: Initial brightness level [1-16] (default: 16).

- Keypad
Supply the 'interrupts' property to enable the keyscan feature.
--
2.25.1

2021-01-19 04:25:01

by Robin van der Gracht

[permalink] [raw]
Subject: Re: [PATCH 0/3] auxdisplay: ht16k33: Improvement, fix, and json-schema conversion

Hi Geert,

Thank you for (re-)submitting your patches!

On 2021-01-18 13:35, Geert Uytterhoeven wrote:
> Hi Robin, Rob, Miguel,
>
> This patch series contains various updates for the Holtek HT16K33 LED
> controller with keyscan DT bindings and driver:
> 1. Make the keypad function optional, from an old patch by Robin that
> seem to
> have fallen through the cracks,

Thanks for digging this up. Not sure why this was dropped. I still think
it's usefull.

> 2. Fix the default brightness range,

Seems to match MIN/MAX_BRIGHTNESS now.
Acked-by: Robin van der Gracht <[email protected]>

Robin

2021-01-23 12:50:20

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH 0/3] auxdisplay: ht16k33: Improvement, fix, and json-schema conversion

On Mon, Jan 18, 2021 at 2:36 PM robin <[email protected]> wrote:
>
> Thanks for digging this up. Not sure why this was dropped. I still think
> it's usefull.

Not intentional -- probably slipped, sorry.

Cheers,
Miguel

2021-01-25 21:22:59

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH 1/3] dt-bindings: auxdisplay: ht16k33: Keyscan function should be optional

On Mon, Jan 18, 2021 at 1:35 PM Geert Uytterhoeven <[email protected]> wrote:
>
> From: Robin van der Gracht <[email protected]>
>
> Keyscan should be optional to support simple LED matrix displays (output
> only).

Applied to -next, thanks!

Cheers,
Miguel

2021-01-25 21:23:48

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH 2/3] dt-bindings: auxdisplay: ht16k33: Fix default-brightness-level range

On Mon, Jan 18, 2021 at 1:35 PM Geert Uytterhoeven <[email protected]> wrote:
>
> V4 changed the range from 0..15 to 1..16 in the driver, to match the
> dimming set hardware register, but forgot to update the DT binding
> documentation.

Applied to -next, thanks!

Cheers,
Miguel

2021-01-25 21:30:08

by Miguel Ojeda

[permalink] [raw]
Subject: Re: [PATCH 3/3] dt-bindings: auxdisplay: ht16k33: Convert to json-schema

On Mon, Jan 18, 2021 at 1:35 PM Geert Uytterhoeven <[email protected]> wrote:
>
> Convert the Holtek HT16K33 LED controller with keyscan Device Tree
> binding documentation to json-schema.

Applied to -next, thanks!

Cheers,
Miguel