Re: [PATCH 1/2] dt-bindings: google,cros-ec-keyb: Introduce switches only compatible

From: Stephen Boyd
Date: Thu Apr 28 2022 - 02:24:33 EST


Quoting Krzysztof Kozlowski (2022-04-27 23:12:47)
> On 27/04/2022 22:30, Stephen Boyd wrote:
> > If the device is a detachable, this device won't have a matrix keyboard
> > but it may have some button switches, e.g. volume buttons and power
> > buttons. Let's add a more specific compatible for this type of device
> > that indicates to the OS that there are only switches and no matrix
> > keyboard present.
> >
> > Cc: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
> > Cc: Rob Herring <robh+dt@xxxxxxxxxx>
> > Cc: <devicetree@xxxxxxxxxxxxxxx>
> > Cc: Benson Leung <bleung@xxxxxxxxxxxx>
> > Cc: Guenter Roeck <groeck@xxxxxxxxxxxx>
> > Cc: Douglas Anderson <dianders@xxxxxxxxxxxx>
> > Cc: Hsin-Yi Wang <hsinyi@xxxxxxxxxxxx>
> > Cc: "Joseph S. Barrera III" <joebar@xxxxxxxxxxxx>
> > Signed-off-by: Stephen Boyd <swboyd@xxxxxxxxxxxx>
> > ---
> > .../bindings/input/google,cros-ec-keyb.yaml | 12 +++++++++---
> > 1 file changed, 9 insertions(+), 3 deletions(-)
> >
> > diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> > index e8f137abb03c..edc1194d558d 100644
> > --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> > +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml
> > @@ -15,14 +15,20 @@ description: |
> > Google's ChromeOS EC Keyboard is a simple matrix keyboard
> > implemented on a separate EC (Embedded Controller) device. It provides
> > a message for reading key scans from the EC. These are then converted
> > - into keycodes for processing by the kernel.
> > + into keycodes for processing by the kernel. This device also supports
> > + switches/buttons like power and volume buttons.
> >
> > allOf:
> > - $ref: "/schemas/input/matrix-keymap.yaml#"
> >
> > properties:
> > compatible:
> > - const: google,cros-ec-keyb
> > + oneOf:
> > + - items:
> > + - const: google,cros-ec-keyb-switches
> > + - const: google,cros-ec-keyb
> > + - items:
> > + - const: google,cros-ec-keyb
> >
>
> In such case matrix-keymap properties are not valid, right? The
> matrix-keymap should not be referenced, IOW, you need to move allOf
> below "required" and add:
> if:not:...then: $ref: "/schemas/input/matrix-keymap.yaml
>

Eventually that sounds doable, but for the time being I want to merely
add this new compatible in front of the original compatible so that
updated DTBs still work with older kernels, i.e. the switches still get
registered because the driver works with the original
google,cros-ec-keyb compatible. Given that none of the properties are
required for google,cros-ec-keyb it didn't seem necessary to make having
the google,cros-ec-keyb-switches compatible deny the existence of the
matrix-keymap properties.