# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---

$id: http://devicetree.org/schemas/input/google,cros-ec-keyb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ChromeOS EC Keyboard

maintainers:
  - Simon Glass <sjg@chromium.org>
  - Benson Leung <bleung@chromium.org>

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. This device also supports
  switches/buttons like power and volume buttons.

properties:
  compatible:
    oneOf:
      - description: ChromeOS EC with only buttons/switches
        const: google,cros-ec-keyb-switches
      - description: ChromeOS EC with keyboard and possibly buttons/switches
        const: google,cros-ec-keyb

  google,needs-ghost-filter:
    description:
      Enable a ghost filter for the matrix keyboard. This is recommended
      if the EC does not have its own logic or hardware for this.
    type: boolean

  function-row-physmap:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    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.

dependencies:
  function-row-physmap: [ 'linux,keymap' ]
  google,needs-ghost-filter: [ 'linux,keymap' ]

required:
  - compatible

if:
  properties:
    compatible:
      contains:
        const: google,cros-ec-keyb
then:
  $ref: /schemas/input/matrix-keymap.yaml#
  required:
    - keypad,num-rows
    - keypad,num-columns
    - linux,keymap

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/input/input.h>
    keyboard-controller {
        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
         * The values below are for a US keyboard layout and
         * are taken from the Linux driver. Note that the
         * 102ND key is not used for US keyboards.
         */
        linux,keymap = <
            /* CAPSLCK F1         B          F10     */
            0x0001003a 0x0002003b 0x00030030 0x00040044
            /* N       =          R_ALT      ESC     */
            0x00060031 0x0008000d 0x000a0064 0x01010001
            /* F4      G          F7         H       */
            0x0102003e 0x01030022 0x01040041 0x01060023
            /* '       F9         BKSPACE    L_CTRL  */
            0x01080028 0x01090043 0x010b000e 0x0200001d
            /* TAB     F3         T          F6      */
            0x0201000f 0x0202003d 0x02030014 0x02040040
            /* ]       Y          102ND      [       */
            0x0205001b 0x02060015 0x02070056 0x0208001a
            /* F8      GRAVE      F2         5       */
            0x02090042 0x03010029 0x0302003c 0x03030006
            /* F5      6          -          \       */
            0x0304003f 0x03060007 0x0308000c 0x030b002b
            /* R_CTRL  A          D          F       */
            0x04000061 0x0401001e 0x04020020 0x04030021
            /* S       K          J          ;       */
            0x0404001f 0x04050025 0x04060024 0x04080027
            /* L       ENTER      Z          C       */
            0x04090026 0x040b001c 0x0501002c 0x0502002e
            /* V       X          ,          M       */
            0x0503002f 0x0504002d 0x05050033 0x05060032
            /* L_SHIFT /          .          SPACE   */
            0x0507002a 0x05080035 0x05090034 0x050B0039
            /* 1       3          4          2       */
            0x06010002 0x06020004 0x06030005 0x06040003
            /* 8       7          0          9       */
            0x06050009 0x06060008 0x0608000b 0x0609000a
            /* L_ALT   DOWN       RIGHT      Q       */
            0x060a0038 0x060b006c 0x060c006a 0x07010010
            /* E       R          W          I       */
            0x07020012 0x07030013 0x07040011 0x07050017
            /* U       R_SHIFT    P          O       */
            0x07060016 0x07070036 0x07080019 0x07090018
            /* UP      LEFT    */
            0x070b0067 0x070c0069>;
    };
  - |
    /* No matrix keyboard, just buttons/switches */
    keyboard-controller {
        compatible = "google,cros-ec-keyb-switches";
    };
...
