1*713cb680SHung-ying TyanCROS_EC Keyboard
2*713cb680SHung-ying Tyan
3*713cb680SHung-ying TyanThe CROS_EC (Matrix Keyboard Protocol) allows communcation with a secondary
4*713cb680SHung-ying Tyanmicro used for keyboard, and possible other features.
5*713cb680SHung-ying Tyan
6*713cb680SHung-ying TyanThe CROS_EC keyboard uses this protocol to receive key scans and produce input
7*713cb680SHung-ying Tyanin U-Boot.
8*713cb680SHung-ying Tyan
9*713cb680SHung-ying TyanRequired properties :
10*713cb680SHung-ying Tyan- compatible : "google,cros-ec-keyb"
11*713cb680SHung-ying Tyan- google,key-rows : Number of key rows
12*713cb680SHung-ying Tyan- google,key-columns : Number of key columns
13*713cb680SHung-ying Tyan
14*713cb680SHung-ying TyanOptional properties, in addition to those specified by the shared
15*713cb680SHung-ying Tyanmatrix-keyboard bindings:
16*713cb680SHung-ying Tyan
17*713cb680SHung-ying Tyan- linux,fn-keymap: a second keymap, same specification as the
18*713cb680SHung-ying Tyan  matrix-keyboard-controller spec but to be used when the KEY_FN modifier
19*713cb680SHung-ying Tyan  key is pressed.
20*713cb680SHung-ying Tyan- google,repeat-delay-ms : delay in milliseconds before repeat starts
21*713cb680SHung-ying Tyan- google,repeat-rate-ms : delay between each subsequent key press
22*713cb680SHung-ying Tyan- google,ghost-filter : enable ghost filtering for this device
23*713cb680SHung-ying Tyan
24*713cb680SHung-ying TyanExample, taken from daisy:
25*713cb680SHung-ying Tyan
26*713cb680SHung-ying Tyancros-ec-keyb {
27*713cb680SHung-ying Tyan	compatible = "google,cros-ec-keyb";
28*713cb680SHung-ying Tyan	google,key-rows = <8>;
29*713cb680SHung-ying Tyan	google,key-columns = <13>;
30*713cb680SHung-ying Tyan	google,ghost-filter;
31*713cb680SHung-ying Tyan	google,repeat-delay-ms = <240>;
32*713cb680SHung-ying Tyan	google,repeat-rate-ms = <30>;
33*713cb680SHung-ying Tyan	/*
34*713cb680SHung-ying Tyan		* Keymap entries take the form of 0xRRCCKKKK where
35*713cb680SHung-ying Tyan		* RR=Row CC=Column KKKK=Key Code
36*713cb680SHung-ying Tyan		* The values below are for a US keyboard layout and
37*713cb680SHung-ying Tyan		* are taken from the Linux driver. Note that the
38*713cb680SHung-ying Tyan		* 102ND key is not used for US keyboards.
39*713cb680SHung-ying Tyan		*/
40*713cb680SHung-ying Tyan	linux,keymap = <
41*713cb680SHung-ying Tyan		/* CAPSLCK F1         B          F10     */
42*713cb680SHung-ying Tyan		0x0001003a 0x0002003c 0x00030030 0x00040044
43*713cb680SHung-ying Tyan		/* N       =          R_ALT      ESC     */
44*713cb680SHung-ying Tyan		0x00060031 0x0008000d 0x000a0064 0x01010001
45*713cb680SHung-ying Tyan		/* F4      G          F7         H       */
46*713cb680SHung-ying Tyan		0x0102003e 0x01030022 0x01040041 0x01060023
47*713cb680SHung-ying Tyan		/* '       F9         BKSPACE    L_CTRL  */
48*713cb680SHung-ying Tyan		0x01080028 0x01090043 0x010b000e 0x0200001d
49*713cb680SHung-ying Tyan		/* TAB     F3         T          F6      */
50*713cb680SHung-ying Tyan		0x0201000f 0x0202003d 0x02030014 0x02040040
51*713cb680SHung-ying Tyan		/* ]       Y          102ND      [       */
52*713cb680SHung-ying Tyan		0x0205001b 0x02060015 0x02070056 0x0208001a
53*713cb680SHung-ying Tyan		/* F8      GRAVE      F2         5       */
54*713cb680SHung-ying Tyan		0x02090042 0x03010029 0x0302003c 0x03030006
55*713cb680SHung-ying Tyan		/* F5      6          -          \       */
56*713cb680SHung-ying Tyan		0x0304003f 0x03060007 0x0308000c 0x030b002b
57*713cb680SHung-ying Tyan		/* R_CTRL  A          D          F       */
58*713cb680SHung-ying Tyan		0x04000061 0x0401001e 0x04020020 0x04030021
59*713cb680SHung-ying Tyan		/* S       K          J          ;       */
60*713cb680SHung-ying Tyan		0x0404001f 0x04050025 0x04060024 0x04080027
61*713cb680SHung-ying Tyan		/* L       ENTER      Z          C       */
62*713cb680SHung-ying Tyan		0x04090026 0x040b001c 0x0501002c 0x0502002e
63*713cb680SHung-ying Tyan		/* V       X          ,          M       */
64*713cb680SHung-ying Tyan		0x0503002f 0x0504002d 0x05050033 0x05060032
65*713cb680SHung-ying Tyan		/* L_SHIFT /          .          SPACE   */
66*713cb680SHung-ying Tyan		0x0507002a 0x05080035 0x05090034 0x050B0039
67*713cb680SHung-ying Tyan		/* 1       3          4          2       */
68*713cb680SHung-ying Tyan		0x06010002 0x06020004 0x06030005 0x06040003
69*713cb680SHung-ying Tyan		/* 8       7          0          9       */
70*713cb680SHung-ying Tyan		0x06050009 0x06060008 0x0608000b 0x0609000a
71*713cb680SHung-ying Tyan		/* L_ALT   DOWN       RIGHT      Q       */
72*713cb680SHung-ying Tyan		0x060a0038 0x060b006c 0x060c006a 0x07010010
73*713cb680SHung-ying Tyan		/* E       R          W          I       */
74*713cb680SHung-ying Tyan		0x07020012 0x07030013 0x07040011 0x07050017
75*713cb680SHung-ying Tyan		/* U       R_SHIFT    P          O       */
76*713cb680SHung-ying Tyan		0x07060016 0x07070036 0x07080019 0x07090018
77*713cb680SHung-ying Tyan		/* UP      LEFT    */
78*713cb680SHung-ying Tyan		0x070b0067 0x070c0069>;
79*713cb680SHung-ying Tyan};
80