summaryrefslogtreecommitdiff
path: root/board/fusb307bgevb
diff options
context:
space:
mode:
authorYun-chieh, Lee <lyunjie@google.com>2020-09-10 23:52:50 +0800
committerCommit Bot <commit-bot@chromium.org>2020-09-24 18:46:38 +0000
commitde120a50f59240ed76d3942b779a36bd0cdeb888 (patch)
treec97035da7d5893e04b001e89e4953bdfe64f5274 /board/fusb307bgevb
parent512b9c0ad6e72fb8db6b2038c6b835965fc6cbb1 (diff)
downloadchrome-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.c58
-rw-r--r--board/fusb307bgevb/board.h31
-rw-r--r--board/fusb307bgevb/ec.tasklist4
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)