summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/nvidia/seaboard/tegra2-kaen.dts52
-rw-r--r--common/fdt_decode.c5
-rwxr-xr-xinclude/tegra-kbc.h8
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 {