diff mbox series

[v7,1/2] dt-bindings: input: cros-ec-keyb: Add a new property

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

Commit Message

Philip Chen Jan. 15, 2021, 8:24 p.m. UTC
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(+)

Comments

Stephen Boyd Jan. 15, 2021, 8:34 p.m. UTC | #1
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>
Rob Herring (Arm) Jan. 25, 2021, 11:15 p.m. UTC | #2
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>
Philip Chen Feb. 4, 2021, 11:58 p.m. UTC | #3
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>
Dmitry Torokhov Feb. 23, 2021, 5:07 a.m. UTC | #4
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.
Dmitry Torokhov Feb. 23, 2021, 5:07 a.m. UTC | #5
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 mbox series

Patch

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