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 > >