|
|
|
@ -18,6 +18,8 @@ DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
|
enum { |
|
|
|
|
KBC_MAX_KEYS = 8, /* Maximum keys held down at once */ |
|
|
|
|
KBC_REPEAT_RATE_MS = 30, |
|
|
|
|
KBC_REPEAT_DELAY_MS = 240, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
static struct keyb { |
|
|
|
@ -26,8 +28,6 @@ static struct keyb { |
|
|
|
|
struct key_matrix matrix; /* The key matrix layer */ |
|
|
|
|
int key_rows; /* Number of keyboard rows */ |
|
|
|
|
int key_cols; /* Number of keyboard columns */ |
|
|
|
|
unsigned int repeat_delay_ms; /* Time before autorepeat starts */ |
|
|
|
|
unsigned int repeat_rate_ms; /* Autorepeat rate in ms */ |
|
|
|
|
int ghost_filter; /* 1 to enable ghost filter, else 0 */ |
|
|
|
|
int inited; /* 1 if keyboard is ready */ |
|
|
|
|
} config; |
|
|
|
@ -188,8 +188,8 @@ static int cros_ec_keyb_decode_fdt(const void *blob, int node, |
|
|
|
|
* Get keyboard rows and columns - at present we are limited to |
|
|
|
|
* 8 columns by the protocol (one byte per row scan) |
|
|
|
|
*/ |
|
|
|
|
config->key_rows = fdtdec_get_int(blob, node, "google,key-rows", 0); |
|
|
|
|
config->key_cols = fdtdec_get_int(blob, node, "google,key-columns", 0); |
|
|
|
|
config->key_rows = fdtdec_get_int(blob, node, "keypad,num-rows", 0); |
|
|
|
|
config->key_cols = fdtdec_get_int(blob, node, "keypad,num-columns", 0); |
|
|
|
|
if (!config->key_rows || !config->key_cols || |
|
|
|
|
config->key_rows * config->key_cols / 8 |
|
|
|
|
> CROS_EC_KEYSCAN_COLS) { |
|
|
|
@ -197,10 +197,6 @@ static int cros_ec_keyb_decode_fdt(const void *blob, int node, |
|
|
|
|
config->key_rows, config->key_cols); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|
config->repeat_delay_ms = fdtdec_get_int(blob, node, |
|
|
|
|
"google,repeat-delay-ms", 0); |
|
|
|
|
config->repeat_rate_ms = fdtdec_get_int(blob, node, |
|
|
|
|
"google,repeat-rate-ms", 0); |
|
|
|
|
config->ghost_filter = fdtdec_get_bool(blob, node, |
|
|
|
|
"google,ghost-filter"); |
|
|
|
|
return 0; |
|
|
|
@ -232,8 +228,8 @@ static int cros_ec_init_keyboard(struct stdio_dev *dev) |
|
|
|
|
} |
|
|
|
|
if (cros_ec_keyb_decode_fdt(blob, node, &config)) |
|
|
|
|
return -1; |
|
|
|
|
input_set_delays(&config.input, config.repeat_delay_ms, |
|
|
|
|
config.repeat_rate_ms); |
|
|
|
|
input_set_delays(&config.input, KBC_REPEAT_DELAY_MS, |
|
|
|
|
KBC_REPEAT_RATE_MS); |
|
|
|
|
if (key_matrix_init(&config.matrix, config.key_rows, |
|
|
|
|
config.key_cols, config.ghost_filter)) { |
|
|
|
|
debug("%s: cannot init key matrix\n", __func__); |
|
|
|
|