diff options
-rw-r--r-- | board/nvidia/seaboard/tegra2-kaen.dts | 52 | ||||
-rw-r--r-- | common/fdt_decode.c | 5 | ||||
-rwxr-xr-x | include/tegra-kbc.h | 8 |
3 files changed, 60 insertions, 5 deletions
diff --git a/board/nvidia/seaboard/tegra2-kaen.dts b/board/nvidia/seaboard/tegra2-kaen.dts index 9363fbc0031..53a6eb6d4dd 100644 --- a/board/nvidia/seaboard/tegra2-kaen.dts +++ b/board/nvidia/seaboard/tegra2-kaen.dts @@ -89,4 +89,56 @@ utmi = <&usbphy>; host-mode = <0>; }; + kbc@0x7000e200 { + keycode-plain = [00 00 DD 00 DC 00 00 00 + 00 1b 09 '`' 'a' 'z' '1' 'q' + 00 00 00 00 'd' 'c' '3' 'e' + 00 00 00 00 00 00 00 00 + 'b' 'g' 't' '5' 'f' 'v' '4' 'r' + 00 00 00 00 's' 'x' '2' 'w' + 00 00 ']' 00 'k' ',' '8' 'i' + 00 00 00 00 00 00 00 00 + 'n' 'h' 'y' '6' 'j' 'm' '7' 'u' + 00 00 00 00 00 DF 00 DF + '=' 5D '[' '-' ';' '/' '0' 'p' + 00 00 00 00 'l' '.' '9' 'o' + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 08 00 5C 0D ' ' 00 00 + 00 00 00 00 00 00 00 00]; + + keycode-shift = [00 00 00 00 00 00 00 00 + 00 1B 09 '~' 'A' 'Z' '!' 'Q' + 00 00 00 00 'D' 'C' '#' 'E' + 00 00 00 00 00 00 00 00 + 'B' 'G' 'T' '%' 'F' 'V' '$' 'R' + 00 00 00 00 'S' 'X' '@' 'W' + 00 00 '}' 00 'K' '<' '*' 'I' + 00 00 00 00 00 00 00 00 + 'N' 'H' 'Y' '^' 'J' 'M' '&' 'U' + 00 00 00 00 00 DF 00 DF + '+' '"' '{' '_' ':' '?' ')' 'P' + 00 00 00 00 'L' '>' '(' 'O' + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 08 00 '|' 0D ' ' 00 00 + 00 00 00 00 00 00 00 00]; + + keycode-ctrl = [00 00 00 00 00 00 00 00 + 00 00 00 00 01 1a 00 11 + 00 00 00 00 04 03 00 05 + 00 00 00 00 00 00 00 00 + 02 07 14 00 06 16 00 12 + 00 00 00 00 13 18 00 17 + 00 00 00 00 0b 00 00 09 + 00 00 00 00 00 00 00 00 + 0e 08 19 00 0a 0d 00 15 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 10 + 00 00 00 00 0c 00 00 0f + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00 + 00 00 00 00 00 00 00 00]; + }; }; diff --git a/common/fdt_decode.c b/common/fdt_decode.c index 7a8c2b747ba..1bfee8c3b66 100644 --- a/common/fdt_decode.c +++ b/common/fdt_decode.c @@ -584,13 +584,16 @@ int fdt_decode_kbc(const void *blob, int node, struct fdt_kbc *config) { int err; + memset(config, '\0', sizeof(*config)); err = get_byte_array(blob, node, "keycode-plain", config->plain_keycode, FDT_KBC_KEY_COUNT); if (!err) err = get_byte_array(blob, node, "keycode-shift", config->shift_keycode, FDT_KBC_KEY_COUNT); + + /* Some keyboards don't have a Fn key */ if (!err) - err = get_byte_array(blob, node, "keycode-fn", + get_byte_array(blob, node, "keycode-fn", config->fn_keycode, FDT_KBC_KEY_COUNT); if (!err) err = get_byte_array(blob, node, "keycode-ctrl", diff --git a/include/tegra-kbc.h b/include/tegra-kbc.h index ddc6379cc36..fd1fe3cdcbd 100755 --- a/include/tegra-kbc.h +++ b/include/tegra-kbc.h @@ -27,10 +27,10 @@ enum { struct tegra_keyboard_config { /* keycode tables, one for each row/col position */ - int plain_keycode[KBC_KEY_COUNT]; /* when no Shift or Fn */ - int shift_keycode[KBC_KEY_COUNT]; /* Shift modifier key is pressed */ - int fn_keycode[KBC_KEY_COUNT]; /* Fn modifier key is pressed */ - int ctrl_keycode[KBC_KEY_COUNT]; /* Ctrl modifier key is pressed */ + u8 plain_keycode[KBC_KEY_COUNT]; /* when no Shift or Fn */ + u8 shift_keycode[KBC_KEY_COUNT]; /* Shift modifier key is pressed */ + u8 fn_keycode[KBC_KEY_COUNT]; /* Fn modifier key is pressed */ + u8 ctrl_keycode[KBC_KEY_COUNT]; /* Ctrl modifier key is pressed */ }; struct kbc_tegra { |