diff options
author | Yu-An Chen <yu-an.chen@quanta.corp-partner.google.com> | 2020-11-24 13:42:45 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-25 00:03:18 +0000 |
commit | 9c1dea75ffa0c3c05faf8ff5f1dfc01671c487bd (patch) | |
tree | 406b7d31405f5d3587b9dcb315e19e9faa0b706e /board/metaknight | |
parent | 9bfe97924bfd1cefac5a83291b2a5e53d7cba935 (diff) | |
download | chrome-ec-9c1dea75ffa0c3c05faf8ff5f1dfc01671c487bd.tar.gz |
Metaknight: Support pen charge
Support pen charge function:
GPIO50 low -> pen charge enable
GPIO50 high -> pen charge disable
BUG=b:169615752
BRANCH=master
TEST=make BOARD=metaknight
TEST=check pen charge pin voltage ,works as expected.
Signed-off-by: yu-an.chen@quanta.corp-partner.google.com
Change-Id: Ifd3d2535df6bbd071045cef8f6f6dae90f28da94
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2557299
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
Diffstat (limited to 'board/metaknight')
-rw-r--r-- | board/metaknight/board.c | 24 | ||||
-rw-r--r-- | board/metaknight/gpio.inc | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/board/metaknight/board.c b/board/metaknight/board.c index 1d199ed6fc..2177430822 100644 --- a/board/metaknight/board.c +++ b/board/metaknight/board.c @@ -90,6 +90,28 @@ static void sub_hdmi_hpd_interrupt(enum gpio_signal s) gpio_set_level(GPIO_EC_AP_USB_C1_HDMI_HPD, !hdmi_hpd_odl); } +/** + * Handle debounced pen input changing state. + */ +static void pen_input_deferred(void) +{ + int pen_exist = !gpio_get_level(GPIO_PEN_DET_ODL); + + if (pen_exist) + gpio_set_level(GPIO_EN_PP3300_PEN, 1); + else + gpio_set_level(GPIO_EN_PP3300_PEN, 0); + + CPRINTS("Pen charge %sable", pen_exist ? "en" : "dis"); +} +DECLARE_DEFERRED(pen_input_deferred); + +void pen_input_interrupt(enum gpio_signal signal) +{ + /* pen input debounce time */ + hook_call_deferred(&pen_input_deferred_data, (100 * MSEC)); +} + #include "gpio_list.h" /* ADC channels */ @@ -164,6 +186,8 @@ void board_init(void) on = chipset_in_state(CHIPSET_STATE_ON | CHIPSET_STATE_ANY_SUSPEND | CHIPSET_STATE_SOFT_OFF); board_power_5v_enable(on); + + gpio_enable_interrupt(GPIO_PEN_DET_ODL); } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); diff --git a/board/metaknight/gpio.inc b/board/metaknight/gpio.inc index caea1bc4f2..556d2071df 100644 --- a/board/metaknight/gpio.inc +++ b/board/metaknight/gpio.inc @@ -37,6 +37,7 @@ GPIO_INT(LID_OPEN, PIN(D, 2), GPIO_INT_BOTH, lid_interrupt) GPIO_INT(EC_WP_OD, PIN(A, 1), GPIO_INT_BOTH, switch_interrupt) GPIO_INT(BASE_SIXAXIS_INT_L, PIN(5, 6), GPIO_INT_FALLING | GPIO_SEL_1P8V, bmi160_interrupt) GPIO_INT(LID_360_L, PIN(9, 5), GPIO_INT_BOTH, gmr_tablet_switch_isr) +GPIO_INT(PEN_DET_ODL, PIN(5, 0), GPIO_INT_BOTH, pen_input_interrupt) /* I2C Ports */ GPIO(EC_I2C_EEPROM_SCL, PIN(B, 3), GPIO_INPUT) |