summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--baseboard/kalista/baseboard.h2
-rw-r--r--baseboard/kukui/baseboard.h2
-rw-r--r--baseboard/trogdor/baseboard.h2
-rw-r--r--board/ambassador/board.h2
-rw-r--r--board/cheza/board.h2
-rw-r--r--board/coachz/board.h2
-rw-r--r--board/dooly/board.h2
-rw-r--r--board/endeavour/board.h2
-rw-r--r--board/fizz/board.h2
-rw-r--r--board/flapjack/board.h2
-rw-r--r--board/genesis/board.h2
-rw-r--r--board/homestar/board.h2
-rw-r--r--board/kakadu/board.h1
-rw-r--r--board/katsu/board.h1
-rw-r--r--board/kodama/board.h1
-rw-r--r--board/kukui/board.h1
-rw-r--r--board/lazor/board.h1
-rw-r--r--board/marzipan/board.h1
-rw-r--r--board/nocturne/board.h2
-rw-r--r--board/pompom/board.h1
-rw-r--r--board/poppy/board.h2
-rw-r--r--board/puff/board.h2
-rw-r--r--board/rainier/board.h2
-rw-r--r--board/scarlet/board.h3
-rw-r--r--board/trogdor/board.h1
-rw-r--r--common/keyboard_mkbp.c66
-rw-r--r--common/mkbp_input_devices.c67
27 files changed, 94 insertions, 82 deletions
diff --git a/baseboard/kalista/baseboard.h b/baseboard/kalista/baseboard.h
index 5cda6c310c..7579acd2d7 100644
--- a/baseboard/kalista/baseboard.h
+++ b/baseboard/kalista/baseboard.h
@@ -25,7 +25,7 @@
#define CONFIG_DEDICATED_RECOVERY_BUTTON
#define CONFIG_EMULATED_SYSRQ
#define CONFIG_LED_COMMON
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#define CONFIG_DPTF
#define CONFIG_FLASH_SIZE_BYTES 0x80000
diff --git a/baseboard/kukui/baseboard.h b/baseboard/kukui/baseboard.h
index 9aa1362534..f4869ce943 100644
--- a/baseboard/kukui/baseboard.h
+++ b/baseboard/kukui/baseboard.h
@@ -239,8 +239,6 @@
#undef CONFIG_PSTORE
#define CONFIG_TASK_PROFILING
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
-#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_USE_GPIO
/*
diff --git a/baseboard/trogdor/baseboard.h b/baseboard/trogdor/baseboard.h
index 8e3dbe4b1e..570bf16f83 100644
--- a/baseboard/trogdor/baseboard.h
+++ b/baseboard/trogdor/baseboard.h
@@ -44,8 +44,6 @@
#define CONFIG_HOSTCMD_SPS
#define CONFIG_HOST_COMMAND_STATUS
#define CONFIG_HOSTCMD_SECTION_SORTED
-#define CONFIG_MKBP_EVENT
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
#define CONFIG_KEYBOARD_COL2_INVERTED
#define CONFIG_MKBP_USE_GPIO
diff --git a/board/ambassador/board.h b/board/ambassador/board.h
index d44a0ec681..52412b4bfe 100644
--- a/board/ambassador/board.h
+++ b/board/ambassador/board.h
@@ -34,7 +34,7 @@
#define CONFIG_CROS_BOARD_INFO
#define CONFIG_EMULATED_SYSRQ
#undef CONFIG_KEYBOARD_BOOT_KEYS
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#undef CONFIG_KEYBOARD_RUNTIME_KEYS
#undef CONFIG_HIBERNATE
diff --git a/board/cheza/board.h b/board/cheza/board.h
index 45a1927c82..f30219aaf5 100644
--- a/board/cheza/board.h
+++ b/board/cheza/board.h
@@ -54,7 +54,7 @@
#define CONFIG_HOST_COMMAND_STATUS
#define CONFIG_HOSTCMD_SECTION_SORTED /* Host commands are sorted. */
#define CONFIG_MKBP_EVENT
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_GPIO
#define CONFIG_BOARD_VERSION_GPIO
diff --git a/board/coachz/board.h b/board/coachz/board.h
index f60ce352d9..268dcb5b89 100644
--- a/board/coachz/board.h
+++ b/board/coachz/board.h
@@ -51,6 +51,8 @@
#define CONFIG_GMR_TABLET_MODE
#define CONFIG_FRONT_PROXIMITY_SWITCH
+#define CONFIG_MKBP_INPUT_DEVICES
+
#define CONFIG_DETACHABLE_BASE
#define CONFIG_BASE_ATTACHED_SWITCH
diff --git a/board/dooly/board.h b/board/dooly/board.h
index 6043ad6aeb..51259c006b 100644
--- a/board/dooly/board.h
+++ b/board/dooly/board.h
@@ -69,7 +69,7 @@
#define CONFIG_CROS_BOARD_INFO
#define CONFIG_EMULATED_SYSRQ
#undef CONFIG_KEYBOARD_BOOT_KEYS
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#undef CONFIG_KEYBOARD_RUNTIME_KEYS
#undef CONFIG_HIBERNATE
diff --git a/board/endeavour/board.h b/board/endeavour/board.h
index a3d871604f..eca98dad6d 100644
--- a/board/endeavour/board.h
+++ b/board/endeavour/board.h
@@ -24,7 +24,7 @@
#define CONFIG_DEDICATED_RECOVERY_BUTTON
#define CONFIG_EMULATED_SYSRQ
#define CONFIG_LED_COMMON
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#define CONFIG_DPTF
#define CONFIG_FLASH_SIZE_BYTES 0x80000
diff --git a/board/fizz/board.h b/board/fizz/board.h
index da48944973..160680edb6 100644
--- a/board/fizz/board.h
+++ b/board/fizz/board.h
@@ -25,7 +25,7 @@
#define CONFIG_DEDICATED_RECOVERY_BUTTON
#define CONFIG_EMULATED_SYSRQ
#define CONFIG_LED_COMMON
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#define CONFIG_DPTF
#define CONFIG_FLASH_SIZE_BYTES 0x80000
diff --git a/board/flapjack/board.h b/board/flapjack/board.h
index 4d077ad21d..be9ec8b9b4 100644
--- a/board/flapjack/board.h
+++ b/board/flapjack/board.h
@@ -251,7 +251,7 @@
/* Enable Accel over SPI */
#define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_USE_GPIO
/* Define the host events which are allowed to wakeup AP in S3. */
diff --git a/board/genesis/board.h b/board/genesis/board.h
index de82b84540..b380ac28f9 100644
--- a/board/genesis/board.h
+++ b/board/genesis/board.h
@@ -34,7 +34,7 @@
#define CONFIG_CROS_BOARD_INFO
#define CONFIG_EMULATED_SYSRQ
#undef CONFIG_KEYBOARD_BOOT_KEYS
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#undef CONFIG_KEYBOARD_RUNTIME_KEYS
#undef CONFIG_HIBERNATE
diff --git a/board/homestar/board.h b/board/homestar/board.h
index 12bfb53879..4267d8bacb 100644
--- a/board/homestar/board.h
+++ b/board/homestar/board.h
@@ -71,6 +71,8 @@
#define GMR_TABLET_MODE_GPIO_L GPIO_LID_OPEN_EC
#define GPIO_SWITCHCAP_PG_INT_L GPIO_LN9310_INT
+#define CONFIG_MKBP_INPUT_DEVICES
+
#ifndef __ASSEMBLER__
#include "gpio_signal.h"
diff --git a/board/kakadu/board.h b/board/kakadu/board.h
index 2dd4ff2c5d..6cecfaed2b 100644
--- a/board/kakadu/board.h
+++ b/board/kakadu/board.h
@@ -65,6 +65,7 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MODE_CHANGE))
/* MKBP */
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_EVENT_WAKEUP_MASK \
(BIT(EC_MKBP_EVENT_SENSOR_FIFO) | BIT(EC_MKBP_EVENT_HOST_EVENT))
diff --git a/board/katsu/board.h b/board/katsu/board.h
index 44d6e9de59..bdc552a9c5 100644
--- a/board/katsu/board.h
+++ b/board/katsu/board.h
@@ -65,6 +65,7 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MODE_CHANGE))
/* MKBP */
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_EVENT_WAKEUP_MASK \
(BIT(EC_MKBP_EVENT_SENSOR_FIFO) | BIT(EC_MKBP_EVENT_HOST_EVENT))
diff --git a/board/kodama/board.h b/board/kodama/board.h
index 60bace8cc8..98e9b219ac 100644
--- a/board/kodama/board.h
+++ b/board/kodama/board.h
@@ -63,6 +63,7 @@
#define I2C_PORT_VIRTUAL_BATTERY I2C_PORT_BATTERY
/* Define the host events which are allowed to wakeup AP in S3. */
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_HOST_EVENT_WAKEUP_MASK \
(EC_HOST_EVENT_MASK(EC_HOST_EVENT_LID_OPEN) |\
EC_HOST_EVENT_MASK(EC_HOST_EVENT_POWER_BUTTON))
diff --git a/board/kukui/board.h b/board/kukui/board.h
index 28f0c80cf1..bbb66d4e41 100644
--- a/board/kukui/board.h
+++ b/board/kukui/board.h
@@ -94,6 +94,7 @@
EC_HOST_EVENT_MASK(EC_HOST_EVENT_MODE_CHANGE))
/* MKBP */
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_EVENT_WAKEUP_MASK \
(BIT(EC_MKBP_EVENT_SENSOR_FIFO) | BIT(EC_MKBP_EVENT_HOST_EVENT))
diff --git a/board/lazor/board.h b/board/lazor/board.h
index 3a1edee983..d4f4426d05 100644
--- a/board/lazor/board.h
+++ b/board/lazor/board.h
@@ -17,6 +17,7 @@
#define CONFIG_LN9310
/* Keyboard */
+#define CONFIG_KEYBOARD_PROTOCOL_MKBP
#define CONFIG_KEYBOARD_BOARD_CONFIG
#define CONFIG_PWM_KBLIGHT
diff --git a/board/marzipan/board.h b/board/marzipan/board.h
index bc070bc02f..54054456eb 100644
--- a/board/marzipan/board.h
+++ b/board/marzipan/board.h
@@ -14,6 +14,7 @@
#define CONFIG_FLASH_SIZE_BYTES (512 * 1024) /* 512KB internal spi flash */
/* Keyboard */
+#define CONFIG_KEYBOARD_PROTOCOL_MKBP
#define CONFIG_KEYBOARD_BOARD_CONFIG
#define CONFIG_PWM_KBLIGHT
diff --git a/board/nocturne/board.h b/board/nocturne/board.h
index 046b41d7db..a009cc118a 100644
--- a/board/nocturne/board.h
+++ b/board/nocturne/board.h
@@ -89,7 +89,7 @@
/* MKBP */
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_EVENT_WAKEUP_MASK (1<<EC_MKBP_EVENT_SWITCH)
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_GPIO_AND_HOST_EVENT
/* Sensors */
diff --git a/board/pompom/board.h b/board/pompom/board.h
index 8152d7f113..6cbe7a4d27 100644
--- a/board/pompom/board.h
+++ b/board/pompom/board.h
@@ -15,6 +15,7 @@
#define CONFIG_FLASH_SIZE_BYTES (512 * 1024) /* 512KB internal spi flash */
/* Keyboard */
+#define CONFIG_KEYBOARD_PROTOCOL_MKBP
#define CONFIG_KEYBOARD_BOARD_CONFIG
#define CONFIG_KEYBOARD_REFRESH_ROW3
#define CONFIG_PWM_KBLIGHT
diff --git a/board/poppy/board.h b/board/poppy/board.h
index 607108a8e5..7f0b3eb95a 100644
--- a/board/poppy/board.h
+++ b/board/poppy/board.h
@@ -120,7 +120,7 @@
#define CONFIG_TEMP_SENSOR_BD99992GW
#define CONFIG_THERMISTOR_NCP15WB
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_USE_HOST_EVENT
#define CONFIG_ACCELGYRO_BMI160
diff --git a/board/puff/board.h b/board/puff/board.h
index 10885d8449..11d6deaae3 100644
--- a/board/puff/board.h
+++ b/board/puff/board.h
@@ -34,7 +34,7 @@
#define CONFIG_CROS_BOARD_INFO
#define CONFIG_EMULATED_SYSRQ
#undef CONFIG_KEYBOARD_BOOT_KEYS
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_USE_HOST_EVENT
#undef CONFIG_KEYBOARD_RUNTIME_KEYS
#undef CONFIG_HIBERNATE
diff --git a/board/rainier/board.h b/board/rainier/board.h
index 20c0de975e..01a9950af9 100644
--- a/board/rainier/board.h
+++ b/board/rainier/board.h
@@ -131,7 +131,7 @@
/* Enable Accel over SPI */
#define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_USE_GPIO
/* Define the host events which are allowed to wakeup AP in S3. */
diff --git a/board/scarlet/board.h b/board/scarlet/board.h
index 12d4d14c87..318ec0911d 100644
--- a/board/scarlet/board.h
+++ b/board/scarlet/board.h
@@ -181,7 +181,8 @@
/* Enable Accel over SPI */
#define CONFIG_SPI_ACCEL_PORT 0 /* The first SPI master port (SPI2) */
-#define CONFIG_KEYBOARD_PROTOCOL_MKBP
+#define CONFIG_KEYBOARD_PROTOCOL_
+#define CONFIG_MKBP_INPUT_DEVICES
#define CONFIG_MKBP_EVENT
#define CONFIG_MKBP_USE_GPIO
/* Define the host events which are allowed to wakeup AP in S3. */
diff --git a/board/trogdor/board.h b/board/trogdor/board.h
index f41c5d2fe6..1fe7668d39 100644
--- a/board/trogdor/board.h
+++ b/board/trogdor/board.h
@@ -25,6 +25,7 @@
#define CONFIG_FLASH_SIZE_BYTES (512 * 1024) /* 512KB internal spi flash */
/* Keyboard */
+#define CONFIG_KEYBOARD_PROTOCOL_MKBP
#define CONFIG_KEYBOARD_BOARD_CONFIG
#define CONFIG_PWM_KBLIGHT
diff --git a/common/keyboard_mkbp.c b/common/keyboard_mkbp.c
index eabb4c5829..d8e9f8d909 100644
--- a/common/keyboard_mkbp.c
+++ b/common/keyboard_mkbp.c
@@ -31,9 +31,7 @@
#define BATTERY_KEY_ROW_MASK BIT(BATTERY_KEY_ROW)
#ifndef HAS_TASK_KEYSCAN
-/* Keys simulated-pressed */
-static uint8_t __bss_slow simulated_key[KEYBOARD_COLS_MAX];
-uint8_t keyboard_cols = KEYBOARD_COLS_MAX;
+#error "Task KEYSCAN has to be enabled for MKBP keyboard"
#endif /* !defined(HAS_TASK_KEYSCAN) */
/* Config for mkbp protocol; does not include fields from scan config */
@@ -98,67 +96,6 @@ void keyboard_send_battery_key(void)
void clear_typematic_key(void)
{ }
-#ifndef HAS_TASK_KEYSCAN
-/* For boards without a keyscan task, try and simulate keyboard presses. */
-static void simulate_key(int row, int col, int pressed)
-{
- if ((simulated_key[col] & BIT(row)) == ((pressed ? 1 : 0) << row))
- return; /* No change */
-
- simulated_key[col] &= ~BIT(row);
- if (pressed)
- simulated_key[col] |= BIT(row);
-
- mkbp_keyboard_add(simulated_key);
-}
-
-static int command_mkbp_keyboard_press(int argc, char **argv)
-{
- if (argc == 1) {
- int i, j;
-
- ccputs("Simulated keys:\n");
- for (i = 0; i < keyboard_cols; ++i) {
- if (simulated_key[i] == 0)
- continue;
- for (j = 0; j < KEYBOARD_ROWS; ++j)
- if (simulated_key[i] & BIT(j))
- ccprintf("\t%d %d\n", i, j);
- }
-
- } else if (argc == 3 || argc == 4) {
- int r, c, p;
- char *e;
-
- c = strtoi(argv[1], &e, 0);
- if (*e || c < 0 || c >= keyboard_cols)
- return EC_ERROR_PARAM1;
-
- r = strtoi(argv[2], &e, 0);
- if (*e || r < 0 || r >= KEYBOARD_ROWS)
- return EC_ERROR_PARAM2;
-
- if (argc == 3) {
- /* Simulate a press and release */
- simulate_key(r, c, 1);
- simulate_key(r, c, 0);
- } else {
- p = strtoi(argv[3], &e, 0);
- if (*e || p < 0 || p > 1)
- return EC_ERROR_PARAM3;
-
- simulate_key(r, c, p);
- }
- }
-
- return EC_SUCCESS;
-}
-DECLARE_CONSOLE_COMMAND(kbpress, command_mkbp_keyboard_press,
- "[col row [0 | 1]]",
- "Simulate keypress");
-#endif /* !defined(HAS_TASK_KEYSCAN) */
-
-#ifdef HAS_TASK_KEYSCAN
static void set_keyscan_config(const struct ec_mkbp_config *src,
struct ec_mkbp_protocol_config *dst,
uint32_t valid_mask, uint8_t new_flags)
@@ -285,4 +222,3 @@ host_command_mkbp_get_config(struct host_cmd_handler_args *args)
DECLARE_HOST_COMMAND(EC_CMD_MKBP_GET_CONFIG,
host_command_mkbp_get_config,
EC_VER_MASK(0));
-#endif /* HAS_TASK_KEYSCAN */
diff --git a/common/mkbp_input_devices.c b/common/mkbp_input_devices.c
index 56d2234775..e058c9d320 100644
--- a/common/mkbp_input_devices.c
+++ b/common/mkbp_input_devices.c
@@ -11,6 +11,7 @@
#include "hooks.h"
#include "host_command.h"
#include "keyboard_mkbp.h"
+#include "keyboard_scan.h"
#include "lid_switch.h"
#include "mkbp_event.h"
#include "mkbp_fifo.h"
@@ -176,3 +177,69 @@ static int sysrq_get_next_event(uint8_t *out)
}
DECLARE_EVENT_SOURCE(EC_MKBP_EVENT_SYSRQ, sysrq_get_next_event);
#endif
+
+/************************ Keyboard press simulation ************************/
+#ifndef HAS_TASK_KEYSCAN
+/* Keys simulated-pressed */
+static uint8_t __bss_slow simulated_key[KEYBOARD_COLS_MAX];
+uint8_t keyboard_cols = KEYBOARD_COLS_MAX;
+
+/* For boards without a keyscan task, try and simulate keyboard presses. */
+static void simulate_key(int row, int col, int pressed)
+{
+ if ((simulated_key[col] & BIT(row)) == ((pressed ? 1 : 0) << row))
+ return; /* No change */
+
+ simulated_key[col] &= ~BIT(row);
+ if (pressed)
+ simulated_key[col] |= BIT(row);
+
+ mkbp_fifo_add((uint8_t)EC_MKBP_EVENT_KEY_MATRIX, simulated_key);
+}
+
+static int command_mkbp_keyboard_press(int argc, char **argv)
+{
+ if (argc == 1) {
+ int i, j;
+
+ ccputs("Simulated keys:\n");
+ for (i = 0; i < keyboard_cols; ++i) {
+ if (simulated_key[i] == 0)
+ continue;
+ for (j = 0; j < KEYBOARD_ROWS; ++j)
+ if (simulated_key[i] & BIT(j))
+ ccprintf("\t%d %d\n", i, j);
+ }
+
+ } else if (argc == 3 || argc == 4) {
+ int r, c, p;
+ char *e;
+
+ c = strtoi(argv[1], &e, 0);
+ if (*e || c < 0 || c >= keyboard_cols)
+ return EC_ERROR_PARAM1;
+
+ r = strtoi(argv[2], &e, 0);
+ if (*e || r < 0 || r >= KEYBOARD_ROWS)
+ return EC_ERROR_PARAM2;
+
+ if (argc == 3) {
+ /* Simulate a press and release */
+ simulate_key(r, c, 1);
+ simulate_key(r, c, 0);
+ } else {
+ p = strtoi(argv[3], &e, 0);
+ if (*e || p < 0 || p > 1)
+ return EC_ERROR_PARAM3;
+
+ simulate_key(r, c, p);
+ }
+ }
+
+ return EC_SUCCESS;
+}
+DECLARE_CONSOLE_COMMAND(kbpress, command_mkbp_keyboard_press,
+ "[col row [0 | 1]]",
+ "Simulate keypress");
+
+#endif /* !defined(HAS_TASK_KEYSCAN) */