diff options
author | Yun-chieh, Lee <lyunjie@google.com> | 2020-09-10 23:52:50 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-09-24 18:46:38 +0000 |
commit | de120a50f59240ed76d3942b779a36bd0cdeb888 (patch) | |
tree | c97035da7d5893e04b001e89e4953bdfe64f5274 /board/fusb307bgevb | |
parent | 512b9c0ad6e72fb8db6b2038c6b835965fc6cbb1 (diff) | |
download | chrome-ec-de120a50f59240ed76d3942b779a36bd0cdeb888.tar.gz |
ucsa: fusb307 driver and enable tcpc interrupt
Enable interrupt from tcpc fusb307bg.
BUG=b:162057390
TEST=make buildall
BRANCH=master
Signed-off-by: Yun-Chieh Lee <lyunjie@google.com>
Change-Id: If2ab2998b4430abcfd746e9879abd4334de319e6
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2405713
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Diffstat (limited to 'board/fusb307bgevb')
-rw-r--r-- | board/fusb307bgevb/board.c | 58 | ||||
-rw-r--r-- | board/fusb307bgevb/board.h | 31 | ||||
-rw-r--r-- | board/fusb307bgevb/ec.tasklist | 4 |
3 files changed, 91 insertions, 2 deletions
diff --git a/board/fusb307bgevb/board.c b/board/fusb307bgevb/board.c index 9d92b5a560..a872afc7e8 100644 --- a/board/fusb307bgevb/board.c +++ b/board/fusb307bgevb/board.c @@ -6,6 +6,7 @@ #include "common.h" #include "ec_version.h" +#include "fusb307.h" #include "gpio.h" #include "hooks.h" #include "i2c.h" @@ -26,6 +27,7 @@ static void tcpc_alert_event(enum gpio_signal signal) { + schedule_deferred_pd_interrupt(0); } /****************************************************************************** @@ -151,6 +153,62 @@ const struct i2c_port_t i2c_ports[] = { const unsigned int i2c_ports_used = ARRAY_SIZE(i2c_ports); /****************************************************************************** + * PD + */ +const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_MAX_COUNT] = { + { + .bus_type = EC_BUS_TYPE_I2C, + .i2c_info = { + .port = I2C_PORT_TCPC, + .addr_flags = FUSB307_I2C_SLAVE_ADDR_FLAGS, + }, + .drv = &fusb307_tcpm_drv, + }, +}; + + +uint16_t tcpc_get_alert_status(void) +{ + uint16_t status = 0; + + if (!gpio_get_level(GPIO_USB_C0_PD_INT_ODL)) + status |= PD_STATUS_TCPC_ALERT_0; + + return status; +} + +void board_reset_pd_mcu(void) +{ +} + +int pd_snk_is_vbus_provided(int port) +{ + return EC_ERROR_UNIMPLEMENTED; +} + +void pd_set_input_current_limit(int port, uint32_t max_ma, + uint32_t supply_voltage) +{ + /* No battery, nothing to do */ +} + +void pd_power_supply_reset(int port) +{ + /* Disable VBUS */ + fusb307_power_supply_reset(port); +} + +int pd_set_power_supply_ready(int port) +{ + return EC_SUCCESS; +} + +int pd_board_checks(void) +{ + return EC_SUCCESS; +} + +/****************************************************************************** * Initialize board. */ static void board_init(void) diff --git a/board/fusb307bgevb/board.h b/board/fusb307bgevb/board.h index e920c7efd1..2497dc7c69 100644 --- a/board/fusb307bgevb/board.h +++ b/board/fusb307bgevb/board.h @@ -12,6 +12,10 @@ /* 48 MHz SYSCLK clock frequency */ #define CPU_CLOCK 48000000 +/* Debug Congifuation */ +#define DEBUG_GET_CC +#define DEBUG_ROLE_CTRL_UPDATES + /* Enable USART1,3,4 and USB streams */ #define CONFIG_STREAM_USART #define CONFIG_STREAM_USART1 @@ -34,8 +38,33 @@ #define CONFIG_USB_PID 0x1234 #define CONFIG_USB_CONSOLE +/* USB Power Delivery configuration */ +#define CONFIG_USB_POWER_DELIVERY +#define CONFIG_USB_PD_TCPMV1 +#define CONFIG_USB_PD_PORT_MAX_COUNT 1 +#define CONFIG_USB_PD_TCPM_TCPCI +#define CONFIG_USB_PD_DUAL_ROLE +#define CONFIG_USB_PD_VBUS_DETECT_TCPC +#define CONFIG_USB_PD_REV30 +#define CONFIG_USB_PD_DECODE_SOP +#define CONFIG_USBC_VCONN +#define CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE +#define CONFIG_USB_PD_TCPM_FUSB307 + +/* delay to turn on/off vconn */ +#define PD_VCONN_SWAP_DELAY 5000 /* us */ +/* Define operating power and max power */ +#define PD_OPERATING_POWER_MW 15000 +#define PD_MAX_VOLTAGE_MV 20000 +#define PD_MAX_CURRENT_MA 3000 +#define PD_MAX_POWER_MW ((PD_MAX_VOLTAGE_MV * PD_MAX_CURRENT_MA) / 1000) + +/* Degine board specific type-C power constants */ +#define PD_POWER_SUPPLY_TURN_OFF_DELAY 250000 /* us */ +#define PD_POWER_SUPPLY_TURN_ON_DELAY 160000 /* us */ + /* I2C master port connected to the TCPC */ -#define I2C_PORT_TCPC 0 +#define I2C_PORT_TCPC 1 /* LCD Configuration */ #define LCD_SLAVE_ADDR 0x27 diff --git a/board/fusb307bgevb/ec.tasklist b/board/fusb307bgevb/ec.tasklist index 0c2a274a1f..e25b8f7a68 100644 --- a/board/fusb307bgevb/ec.tasklist +++ b/board/fusb307bgevb/ec.tasklist @@ -8,4 +8,6 @@ */ #define CONFIG_TASK_LIST \ TASK_ALWAYS(HOOKS, hook_task, NULL, TASK_STACK_SIZE) \ - TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) + TASK_ALWAYS(CONSOLE, console_task, NULL, TASK_STACK_SIZE) \ + TASK_ALWAYS(PD_C0, pd_task, NULL, 1280) \ + TASK_ALWAYS(PD_INT_C0, pd_interrupt_handler_task, 0, ULTRA_TASK_STACK_SIZE) |