dt-bindings: auxdisplay: ht16k33: Keyscan function should be optional
authorRobin van der Gracht <robin@protonic.nl>
Mon, 18 Jan 2021 12:35:36 +0000 (13:35 +0100)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 25 Jan 2021 21:14:19 +0000 (22:14 +0100)
Keyscan should be optional to support simple LED matrix displays (output
only).

Reported-by: Michael Kaplan <M.KAPLAN@evva.com>
Signed-off-by: Robin van der Gracht <robin@protonic.nl>
[geert: Rebased]
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: Robin van der Gracht <robin@protonic.nl>
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Documentation/devicetree/bindings/display/ht16k33.txt
drivers/auxdisplay/ht16k33.c

index d5a8b07..3d602f5 100644 (file)
@@ -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 {
index d951d54..444f3b1 100644 (file)
@@ -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));