diff options
Diffstat (limited to 'zephyr/shim/chip/it8xxx2/keyboard_raw.c')
-rw-r--r-- | zephyr/shim/chip/it8xxx2/keyboard_raw.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/zephyr/shim/chip/it8xxx2/keyboard_raw.c b/zephyr/shim/chip/it8xxx2/keyboard_raw.c index 5fe99b7efa..442b51a59a 100644 --- a/zephyr/shim/chip/it8xxx2/keyboard_raw.c +++ b/zephyr/shim/chip/it8xxx2/keyboard_raw.c @@ -6,6 +6,7 @@ /* Functions needed by keyboard scanner module for Chrome EC */ #include "drivers/cros_kb_raw.h" +#include "gpio_it8xxx2.h" #include "keyboard_raw.h" #include <zephyr/device.h> @@ -15,13 +16,27 @@ #include <soc.h> /** - * Return true if the current value of the given input GPIO port is zero + * Return true if the current value of the given gpioksi/gpioksoh/gpioksol + * port is zero */ int keyboard_raw_is_input_low(int port, int id) { - /* - * TODO: implement for factory testing KSI and KSO pin as GPIO - * function. - */ - return 0; + const struct device *dev; + + switch ((enum gpio_port_to_node)port) { + case GPIO_KSI: + dev = DEVICE_DT_GET(DT_NODELABEL(gpioksi)); + break; + case GPIO_KSOH: + dev = DEVICE_DT_GET(DT_NODELABEL(gpioksoh)); + break; + case GPIO_KSOL: + dev = DEVICE_DT_GET(DT_NODELABEL(gpioksol)); + break; + default: + printk("Error port number %d, return 0\n", port); + return 0; + } + + return (gpio_pin_get_raw(dev, id) == 0); } |