From 36cf95c854f00a6457c85edb97cedf6891cc1f6c Mon Sep 17 00:00:00 2001 From: Zick Wei Date: Thu, 18 Jun 2020 14:31:04 +0800 Subject: morphius: update gpio's for board version 3 BUG=none BRANCH=b:150278507 TEST=make buildall Signed-off-by: Zick Wei Change-Id: I362e4797e3c59098c2b1b56277ba4771774409e1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2251136 Reviewed-by: Denis Brockus --- board/morphius/board.c | 58 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 39 insertions(+), 19 deletions(-) (limited to 'board/morphius/board.c') diff --git a/board/morphius/board.c b/board/morphius/board.c index e78bcc0546..869e86e933 100644 --- a/board/morphius/board.c +++ b/board/morphius/board.c @@ -9,6 +9,7 @@ #include "adc_chip.h" #include "battery_smart.h" #include "button.h" +#include "cros_board_info.h" #include "driver/accelgyro_bmi_common.h" #include "driver/accel_kionix.h" #include "driver/accel_kx022.h" @@ -143,25 +144,6 @@ unsigned int motion_sensor_count = ARRAY_SIZE(motion_sensors); #endif /* HAS_TASK_MOTIONSENSE */ -static void trackpoint_reset_deferred(void) -{ - gpio_set_level(GPIO_EC_PS2_RESET, 1); - msleep(2); - gpio_set_level(GPIO_EC_PS2_RESET, 0); - msleep(10); -} -DECLARE_DEFERRED(trackpoint_reset_deferred); - -void send_aux_data_to_device(uint8_t data) -{ - ps2_transmit_byte(NPCX_PS2_CH0, data); -} - -void ps2_pwr_en_interrupt(enum gpio_signal signal) -{ - hook_call_deferred(&trackpoint_reset_deferred_data, MSEC); -} - const struct pwm_t pwm_channels[] = { [PWM_CH_KBLIGHT] = { .channel = 3, @@ -289,6 +271,24 @@ BUILD_ASSERT(ARRAY_SIZE(usb_muxes) == USBC_PORT_COUNT); /***************************************************************************** * Use FW_CONFIG to set correct configuration. */ + +enum gpio_signal gpio_ec_ps2_reset = GPIO_EC_PS2_RESET_V1; + +static void board_remap_gpio(void) +{ + uint32_t board_ver = 0; + + cbi_get_board_version(&board_ver); + + if (board_ver >= 3) { + gpio_ec_ps2_reset = GPIO_EC_PS2_RESET_V1; + ccprintf("GPIO_EC_PS2_RESET_V1\n"); + } else { + gpio_ec_ps2_reset = GPIO_EC_PS2_RESET_V0; + ccprintf("GPIO_EC_PS2_RESET_V0\n"); + } +} + void setup_fw_config(void) { /* Enable Gyro interrupts */ @@ -306,6 +306,7 @@ void setup_fw_config(void) ppc_chips[USBC_PORT_C1].drv = &aoz1380_drv; } + board_remap_gpio(); } DECLARE_HOOK(HOOK_INIT, setup_fw_config, HOOK_PRIO_INIT_I2C + 2); @@ -557,3 +558,22 @@ __override int board_aoz1380_set_vbus_source_current_limit(int port, return rv; } + +static void trackpoint_reset_deferred(void) +{ + gpio_set_level(gpio_ec_ps2_reset, 1); + msleep(2); + gpio_set_level(gpio_ec_ps2_reset, 0); + msleep(10); +} +DECLARE_DEFERRED(trackpoint_reset_deferred); + +void send_aux_data_to_device(uint8_t data) +{ + ps2_transmit_byte(NPCX_PS2_CH0, data); +} + +void ps2_pwr_en_interrupt(enum gpio_signal signal) +{ + hook_call_deferred(&trackpoint_reset_deferred_data, MSEC); +} -- cgit v1.2.1