summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@google.com>2016-11-14 14:44:28 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-11-22 14:52:42 -0800
commit526adbe531581b8e6e730a742f47b06eb02748c4 (patch)
tree8a221b8e138aaa659c69d99f5d215be8f761e28d
parentf940d4f51618f00e4d4ee00c95805d0f7ec36bc5 (diff)
downloadchrome-ec-526adbe531581b8e6e730a742f47b06eb02748c4.tar.gz
hammer: Add keyscan task
This scans the keyboard matrix, and reports events. Pin layout is temporary. BRANCH=none BUG=chrome-os-partner:59083 TEST=make BOARD=hammer -j && util/flash_ec --board=hammer Change-Id: Ifec7d1bd0223d4653c40b36e068d5d082d16284f Reviewed-on: https://chromium-review.googlesource.com/411607 Commit-Ready: Nicolas Boichat <drinkcat@chromium.org> Tested-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r--board/hammer/board.c1
-rw-r--r--board/hammer/board.h4
-rw-r--r--board/hammer/ec.tasklist3
-rw-r--r--board/hammer/gpio.inc27
4 files changed, 34 insertions, 1 deletions
diff --git a/board/hammer/board.c b/board/hammer/board.c
index d993f1646b..eccf6f5cac 100644
--- a/board/hammer/board.c
+++ b/board/hammer/board.c
@@ -10,6 +10,7 @@
#include "gpio.h"
#include "hooks.h"
#include "i2c.h"
+#include "keyboard_raw.h"
#include "registers.h"
#include "task.h"
#include "update_fw.h"
diff --git a/board/hammer/board.h b/board/hammer/board.h
index 86e3cbdce8..30890804ca 100644
--- a/board/hammer/board.h
+++ b/board/hammer/board.h
@@ -58,6 +58,10 @@
/* No lid switch */
#undef CONFIG_LID_SWITCH
+/* Keyboard output port list */
+#define CONFIG_KEYBOARD_DEBUG
+#define KB_OUT_PORT_LIST GPIO_A, GPIO_B, GPIO_C, GPIO_D
+
/* Enable I2C */
#define CONFIG_I2C
#define CONFIG_I2C_MASTER
diff --git a/board/hammer/ec.tasklist b/board/hammer/ec.tasklist
index fdac481907..3cb68e222a 100644
--- a/board/hammer/ec.tasklist
+++ b/board/hammer/ec.tasklist
@@ -19,4 +19,5 @@
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(TOUCHPAD, elan_tp_task, NULL, TASK_STACK_SIZE) \
- TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE)
+ TASK_ALWAYS(CONSOLE, console_task, NULL, LARGER_TASK_STACK_SIZE) \
+ TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE)
diff --git a/board/hammer/gpio.inc b/board/hammer/gpio.inc
index 8bba90b5da..3f11a9c2a5 100644
--- a/board/hammer/gpio.inc
+++ b/board/hammer/gpio.inc
@@ -10,6 +10,33 @@
GPIO_INT(TOUCHPAD_INT, PIN(A, 1), GPIO_INT_FALLING | GPIO_PULL_UP, elan_tp_interrupt)
+/* Keyboard inputs */
+#define GPIO_KB_INPUT (GPIO_INPUT | GPIO_PULL_UP | GPIO_INT_BOTH)
+#define GPIO_KB_OUTPUT GPIO_ODR_HIGH
+
+GPIO_INT(KB_IN00, PIN(A, 3), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN01, PIN(A, 2), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN02, PIN(A, 11), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN03, PIN(A, 4), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN04, PIN(A, 5), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN05, PIN(A, 6), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN06, PIN(A, 7), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+GPIO_INT(KB_IN07, PIN(A, 8), GPIO_KB_INPUT, keyboard_raw_gpio_interrupt)
+
+GPIO(KB_OUT00, PIN(B, 0), GPIO_KB_OUTPUT)
+GPIO(KB_OUT01, PIN(B, 10), GPIO_KB_OUTPUT)
+GPIO(KB_OUT02, PIN(B, 12), GPIO_KB_OUTPUT)
+GPIO(KB_OUT03, PIN(B, 2), GPIO_KB_OUTPUT)
+GPIO(KB_OUT04, PIN(B, 11), GPIO_KB_OUTPUT)
+GPIO(KB_OUT05, PIN(D, 14), GPIO_KB_OUTPUT)
+GPIO(KB_OUT06, PIN(D, 13), GPIO_KB_OUTPUT)
+GPIO(KB_OUT07, PIN(D, 15), GPIO_KB_OUTPUT)
+GPIO(KB_OUT08, PIN(C, 2), GPIO_KB_OUTPUT)
+GPIO(KB_OUT09, PIN(B, 1), GPIO_KB_OUTPUT)
+GPIO(KB_OUT10, PIN(C, 5), GPIO_KB_OUTPUT)
+GPIO(KB_OUT11, PIN(C, 4), GPIO_KB_OUTPUT)
+GPIO(KB_OUT12, PIN(D, 5), GPIO_KB_OUTPUT)
+
/* I2C pins should be configured as inputs until I2C module is */
/* initialized. This will avoid driving the lines unintentionally.*/
GPIO(MASTER_I2C_SCL, PIN(B, 8), GPIO_INPUT)