Re: [PATCH v2 02/18] dt-bindings: auxdisplay: ht16k33: Document Adafruit segment displays

From: Rob Herring
Date: Wed Jul 14 2021 - 16:36:32 EST


On Fri, Jun 25, 2021 at 02:58:46PM +0200, Geert Uytterhoeven wrote:
> The Holtek HT16K33 LED controller is not only used for driving
> dot-matrix displays, but also for driving segment displays.
>
> Document compatible values for the Adafruit 7-segment[1] and
> 14-segment[2] FeatherWing expansion boards with red displays. According
> to the schematics, all other Adafruit 7-segment and 14-segment display
> backpack and FeatherWing expansion boards (including bare boards and
> boards fitted with displays) are compatible with these two boards.
> Add a "color" property to support the different color variants.
>
> [1] https://www.adafruit.com/product/3108
> [2] https://www.adafruit.com/product/3130
>
> Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> ---
> v2:
> - Fix type of color to uint32,
> - "refresh-rate-hz" is still required for dot-matrix displays.
>
> Alternatives I considered:
> 1. Document the attached display type in a child node.
> I.e. specify segment type, number of characters, and wiring.
> Especially the latter would become really complex, due to the sheer
> amount of possible wiring combinations.
> Using this method, you also loose the ability to just connect a
> display to an i2c bus, and instantiate the device from sysfs,
> without using DT:
>
> echo adafruit,3130 0x70 > /sys/class/i2c/i2c-adapter/.../new_device
>
> 2. Do not use the "color" property, but document all Adafruit
> 7-segment and 14-segment display backpack and FeatherWing expansion
> boards.
> This would lead to a myriad of compatible values:
>
> - items:
> - enum:
> - adafruit,878 # 0.56" 4-Digit 7-Segment Display Backpack (Red)
> - adafruit,879 # 0.56" 4-Digit 7-Segment Display Backpack (Yellow)
> - adafruit,880 # 0.56" 4-Digit 7-Segment Display Backpack (Green)
> - adafruit,881 # 0.56" 4-Digit 7-Segment Display Backpack (Blue)
> - adafruit,1002 # 0.56" 4-Digit 7-Segment Display Backpack (White)
> - const: adafruit,877 # 0.56" 4-Digit 7-Segment Backpack
> - const: holtek,ht16k33
>
> - items:
> - enum:
> - adafruit,1268 # 1.2" 4-Digit 7-Segment Display Backpack (Green)
> - adafruit,1269 # 1.2" 4-Digit 7-Segment Display Backpack (Yellow)
> - adafruit,1270 # 1.2" 4-Digit 7-Segment Display Backpack (Red)
> - const: adafruit,1271 # 1.2" 4-Digit 7-Segment Backpack
> - const: holtek,ht16k33
>
> - items:
> - enum:
> - adafruit,1911 # 0.54" Quad Alphanumeric Display Backpack (Red)
> - adafruit,1912 # 0.54" Quad Alphanumeric Display Backpack (Blue)
> - adafruit,2157 # 0.54" Quad Alphanumeric Display Backpack (White)
> - adafruit,2158 # 0.54" Quad Alphanumeric Display Backpack (Yellow)
> - adafruit,2159 # 0.54" Quad Alphanumeric Display Backpack (Yellow-Green)
> - adafruit,2160 # 0.54" Quad Alphanumeric Display Backpack (Green)
> - const: adafruit,1910 # 0.54" Quad 14-segment Alphanumeric Backpack
> - const: holtek,ht16k33
>
> - items:
> - enum:
> - adafruit,3106 # 0.56" 4-Digit 7-Segment FeatherWing Display (Blue)
> - adafruit,3107 # 0.56" 4-Digit 7-Segment FeatherWing Display (Green)
> - adafruit,3108 # 0.56" 4-Digit 7-Segment FeatherWing Display (Red)
> - adafruit,3109 # 0.56" 4-Digit 7-Segment FeatherWing Display (White)
> - adafruit,3110 # 0.56" 4-Digit 7-Segment FeatherWing Display (Yellow)
> - const: adafruit,3088 # 0.56" 4-Digit 7-Segment FeatherWing
> - const: holtek,ht16k33
>
> - items:
> - enum:
> - adafruit,3127 # 0.54" Quad Alphanumeric FeatherWing Display (White)
> - adafruit,3128 # 0.54" Quad Alphanumeric FeatherWing Display (Blue)
> - adafruit,3129 # 0.54" Quad Alphanumeric FeatherWing Display (Green)
> - adafruit,3130 # 0.54" Quad Alphanumeric FeatherWing Display (Red)
> - adafruit,3131 # 0.54" Quad Alphanumeric FeatherWing Display (Yellow)
> - adafruit,3132 # 0.54" Quad Alphanumeric FeatherWing Display (Yellow-Green)
> - const: adafruit,3089 # 0.54" Quad 14-segment Alphanumeric FeatherWing
> - const: holtek,ht16k33
> ---
> .../bindings/auxdisplay/holtek,ht16k33.yaml | 31 +++++++++++++++++--
> 1 file changed, 28 insertions(+), 3 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml b/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
> index 64ffff460026040f..616aca817874bdc8 100644
> --- a/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
> +++ b/Documentation/devicetree/bindings/auxdisplay/holtek,ht16k33.yaml
> @@ -14,14 +14,23 @@ allOf:
>
> properties:
> compatible:
> - const: holtek,ht16k33
> + oneOf:
> + - items:
> + - const: adafruit,3108 # 0.56" 4-Digit 7-Segment FeatherWing Display (Red)
> + - const: holtek,ht16k33
> +
> + - items:
> + - const: adafruit,3130 # 0.54" Quad Alphanumeric FeatherWing Display (Red)
> + - const: holtek,ht16k33

These 2 entries can be combined. Or make the comment a 'description'.

> +
> + - const: holtek,ht16k33 # Generic 16*8 LED controller with dot-matrix display
>
> reg:
> maxItems: 1
>
> refresh-rate-hz:
> maxItems: 1
> - description: Display update interval in Hertz
> + description: Display update interval in Hertz for dot-matrix displays
>
> interrupts:
> maxItems: 1
> @@ -41,10 +50,26 @@ properties:
> default: 16
> description: Initial brightness level
>
> + color:
> + description:
> + Color of the display. Use one of the LED_COLOR_ID_* prefixed definitions
> + from the header include/dt-bindings/leds/common.h. The default is red.
> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 0
> + maximum: 9
> + default: 1
> +
> required:
> - compatible
> - reg
> - - refresh-rate-hz
> +
> +if:
> + properties:
> + compatible:
> + const: holtek,ht16k33

Isn't this always true?

> +then:
> + required:
> + - refresh-rate-hz
>
> additionalProperties: false
>
> --
> 2.25.1
>
>