Message ID | 20210115122412.v7.1.I025fb861cd5fa0ef5286b7dce514728e9df7ae74@changeid |
---|---|
State | Accepted |
Commit | 311a27da6271394afdca5773f4272eb6f48fae2d |
Headers | show |
Series | [v7,1/2] dt-bindings: input: cros-ec-keyb: Add a new property | expand |
Quoting Philip Chen (2021-01-15 12:24:29) > Add a new property `function-row-physmap` to the > device tree for the custom keyboard top row design. > > The property describes the rows/columns of the top row keys > from left to right. > > Signed-off-by: Philip Chen <philipchen@chromium.org> > --- Reviewed-by: Stephen Boyd <swboyd@chromium.org>
On Fri, 15 Jan 2021 12:24:29 -0800, Philip Chen wrote: > Add a new property `function-row-physmap` to the > device tree for the custom keyboard top row design. > > The property describes the rows/columns of the top row keys > from left to right. > > Signed-off-by: Philip Chen <philipchen@chromium.org> > --- > > Changes in v7: > - Use MATRIX_KEY macro to describe `function-row-physmap` > > Changes in v6: > - remove $ref and add `function-row-physmap` to the example > > Changes in v5: > - add minItems and maxItems for `function-row-physmap` > > Changes in v2: > - add `function-row-physmap` instead of `google,custom-keyb-top-row` > > .../bindings/input/google,cros-ec-keyb.yaml | 24 +++++++++++++++++++ > 1 file changed, 24 insertions(+) > Reviewed-by: Rob Herring <robh@kernel.org>
Hi maintainers, Friendly ping - can we actually land patch series v7? Or do you expect any update from me? On Fri, Jan 15, 2021 at 12:34 PM Stephen Boyd <swboyd@chromium.org> wrote: > > Quoting Philip Chen (2021-01-15 12:24:30) > > The top-row keys in a keyboard usually have dual functionalities. > > E.g. A function key "F1" is also an action key "Browser back". > > > > Therefore, when an application receives an action key code from > > a top-row key press, the application needs to know how to correlate > > the action key code with the function key code and do the conversion > > whenever necessary. > > > > Since the userpace already knows the key scanlines (row/column) > > associated with a received key code. Essentially, the userspace only > > needs a mapping between the key row/column and the matching physical > > location in the top row. > > > > So, enhance the cros-ec-keyb driver to create such a mapping > > and expose it to userspace in the form of a function_row_physmap > > attribute. The attribute would be a space separated ordered list of > > row/column codes for the keys in the function row, in a left-to-right > > order. > > > > The attribute will only be present when the device has a custom design > > for the top-row keys. > > > > Signed-off-by: Philip Chen <philipchen@chromium.org> > > --- > > Reviewed-by: Stephen Boyd <swboyd@chromium.org>
On Fri, Jan 15, 2021 at 12:24:29PM -0800, Philip Chen wrote: > Add a new property `function-row-physmap` to the > device tree for the custom keyboard top row design. > > The property describes the rows/columns of the top row keys > from left to right. > > Signed-off-by: Philip Chen <philipchen@chromium.org> Applied, thank you.
On Fri, Jan 15, 2021 at 12:24:30PM -0800, Philip Chen wrote: > The top-row keys in a keyboard usually have dual functionalities. > E.g. A function key "F1" is also an action key "Browser back". > > Therefore, when an application receives an action key code from > a top-row key press, the application needs to know how to correlate > the action key code with the function key code and do the conversion > whenever necessary. > > Since the userpace already knows the key scanlines (row/column) > associated with a received key code. Essentially, the userspace only > needs a mapping between the key row/column and the matching physical > location in the top row. > > So, enhance the cros-ec-keyb driver to create such a mapping > and expose it to userspace in the form of a function_row_physmap > attribute. The attribute would be a space separated ordered list of > row/column codes for the keys in the function row, in a left-to-right > order. > > The attribute will only be present when the device has a custom design > for the top-row keys. > > Signed-off-by: Philip Chen <philipchen@chromium.org> Applied, thank you. -- Dmitry
diff --git a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml index 8e50c14a9d778..5377b232fa10f 100644 --- a/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml +++ b/Documentation/devicetree/bindings/input/google,cros-ec-keyb.yaml @@ -31,6 +31,17 @@ properties: if the EC does not have its own logic or hardware for this. type: boolean + function-row-physmap: + minItems: 1 + maxItems: 15 + description: | + An ordered u32 array describing the rows/columns (in the scan matrix) + of top row keys from physical left (KEY_F1) to right. Each entry + encodes the row/column as: + (((row) & 0xFF) << 24) | (((column) & 0xFF) << 16) + where the lower 16 bits are reserved. This property is specified only + when the keyboard has a custom design for the top row keys. + required: - compatible @@ -38,11 +49,24 @@ unevaluatedProperties: false examples: - | + #include <dt-bindings/input/input.h> cros-ec-keyb { compatible = "google,cros-ec-keyb"; keypad,num-rows = <8>; keypad,num-columns = <13>; google,needs-ghost-filter; + function-row-physmap = < + MATRIX_KEY(0x00, 0x02, 0) /* T1 */ + MATRIX_KEY(0x03, 0x02, 0) /* T2 */ + MATRIX_KEY(0x02, 0x02, 0) /* T3 */ + MATRIX_KEY(0x01, 0x02, 0) /* T4 */ + MATRIX_KEY(0x03, 0x04, 0) /* T5 */ + MATRIX_KEY(0x02, 0x04, 0) /* T6 */ + MATRIX_KEY(0x01, 0x04, 0) /* T7 */ + MATRIX_KEY(0x02, 0x09, 0) /* T8 */ + MATRIX_KEY(0x01, 0x09, 0) /* T9 */ + MATRIX_KEY(0x00, 0x04, 0) /* T10 */ + >; /* * Keymap entries take the form of 0xRRCCKKKK where * RR=Row CC=Column KKKK=Key Code
Add a new property `function-row-physmap` to the device tree for the custom keyboard top row design. The property describes the rows/columns of the top row keys from left to right. Signed-off-by: Philip Chen <philipchen@chromium.org> --- Changes in v7: - Use MATRIX_KEY macro to describe `function-row-physmap` Changes in v6: - remove $ref and add `function-row-physmap` to the example Changes in v5: - add minItems and maxItems for `function-row-physmap` Changes in v2: - add `function-row-physmap` instead of `google,custom-keyb-top-row` .../bindings/input/google,cros-ec-keyb.yaml | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+)