summaryrefslogtreecommitdiff
path: root/board/metaknight
diff options
context:
space:
mode:
authorYu-An Chen <yu-an.chen@quanta.corp-partner.google.com>2020-11-24 13:42:45 +0800
committerCommit Bot <commit-bot@chromium.org>2020-11-25 00:03:18 +0000
commit9c1dea75ffa0c3c05faf8ff5f1dfc01671c487bd (patch)
tree406b7d31405f5d3587b9dcb315e19e9faa0b706e /board/metaknight
parent9bfe97924bfd1cefac5a83291b2a5e53d7cba935 (diff)
downloadchrome-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.c24
-rw-r--r--board/metaknight/gpio.inc1
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)