summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Berg <alecaberg@chromium.org>2015-08-03 14:04:37 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-21 08:10:11 +0000
commit16cbaf1cd1c839e3d061a1a8d9cb34fe14ab288e (patch)
tree344c5d8cfaf6221dad28ab5af1460e4999c765f3
parentd862dd05982198a2f5d450820a02172e0ba6396b (diff)
downloadchrome-ec-16cbaf1cd1c839e3d061a1a8d9cb34fe14ab288e.tar.gz
oak: add usb charger tasks
Add USB charger tasks to oak to detect legacy charger type. BUG=none BRANCH=none TEST=make -j buildall Change-Id: Idb8061c39b0bb8b42f47cbe3ff213b04f14c889a Signed-off-by: Alec Berg <alecaberg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/290420 Reviewed-by: Rong Chang <rongchang@chromium.org> Commit-Queue: Rong Chang <rongchang@chromium.org> Tested-by: Rong Chang <rongchang@chromium.org>
-rw-r--r--board/oak/board.c46
-rw-r--r--board/oak/board.h1
-rw-r--r--board/oak/ec.tasklist4
-rw-r--r--board/oak/gpio.inc4
-rw-r--r--board/oak/usb_pd_policy.c8
-rw-r--r--common/usb_charger.c4
6 files changed, 15 insertions, 52 deletions
diff --git a/board/oak/board.c b/board/oak/board.c
index ba7858ffe1..3dd9d75615 100644
--- a/board/oak/board.c
+++ b/board/oak/board.c
@@ -187,54 +187,12 @@ void i2c_set_timeout(int port, uint32_t timeout)
/* Initialize board. */
static void board_init(void)
{
- int i, bc12_status;
- struct charge_port_info charge_none, charge_vbus;
- struct charge_port_info *charge_sel;
-
/* Enable rev1 testing GPIOs */
gpio_set_level(GPIO_SYSTEM_POWER_H, 1);
/* Enable PD MCU interrupt */
gpio_enable_interrupt(GPIO_PD_MCU_INT);
/* Enable VBUS interrupt */
gpio_enable_interrupt(GPIO_VBUS_WAKE_L);
-
- charge_none.voltage = USB_CHARGER_VOLTAGE_MV;
- charge_none.current = 0;
- charge_vbus.voltage = USB_CHARGER_VOLTAGE_MV;
- charge_vbus.current = USB_CHARGER_MIN_CURR_MA;
- for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++) {
- /* Initialize all pericom charge suppliers to 0 */
- charge_manager_update_charge(
- CHARGE_SUPPLIER_PROPRIETARY,
- i,
- &charge_none);
- charge_manager_update_charge(
- CHARGE_SUPPLIER_BC12_CDP,
- i,
- &charge_none);
- charge_manager_update_charge(
- CHARGE_SUPPLIER_BC12_DCP,
- i,
- &charge_none);
- charge_manager_update_charge(
- CHARGE_SUPPLIER_BC12_SDP,
- i,
- &charge_none);
- charge_manager_update_charge(
- CHARGE_SUPPLIER_OTHER,
- i,
- &charge_none);
-
- /* Initialize VBUS supplier based on VBUS */
- /* TODO(crbug.com/498974): Don't do i2c from hook_init. */
- bc12_status = pi3usb9281_get_charger_status(i);
- charge_sel = PI3USB9281_CHG_STATUS_ANY(bc12_status) ?
- &charge_vbus : &charge_none;
- charge_manager_update_charge(
- CHARGE_SUPPLIER_VBUS,
- i,
- charge_sel);
- }
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
@@ -252,8 +210,8 @@ int board_set_active_charge_port(int charge_port)
int is_real_port = (charge_port >= 0 &&
charge_port < CONFIG_USB_PD_PORT_COUNT);
/* check if we are source VBUS on the port */
- int source = gpio_get_level(charge_port == 0 ? GPIO_USB_C0_5V_OUT :
- GPIO_USB_C1_5V_OUT);
+ int source = gpio_get_level(charge_port == 0 ? GPIO_USB_C0_5V_EN :
+ GPIO_USB_C1_5V_EN);
if (is_real_port && source) {
CPRINTF("Skip enable p%d", charge_port);
diff --git a/board/oak/board.h b/board/oak/board.h
index b1c9806041..1dbc42e18f 100644
--- a/board/oak/board.h
+++ b/board/oak/board.h
@@ -57,6 +57,7 @@
#define CONFIG_PMIC_FW_LONG_PRESS_TIMER
#define CONFIG_POWER_BUTTON
#define CONFIG_POWER_COMMON
+#define CONFIG_USB_CHARGER
#define CONFIG_USBC_SS_MUX
#define CONFIG_USBC_SS_MUX_DFP_ONLY
#define CONFIG_USBC_VCONN
diff --git a/board/oak/ec.tasklist b/board/oak/ec.tasklist
index 2b74f6da5e..30b716c885 100644
--- a/board/oak/ec.tasklist
+++ b/board/oak/ec.tasklist
@@ -18,6 +18,8 @@
*/
#define CONFIG_TASK_LIST \
TASK_ALWAYS(HOOKS, hook_task, NULL, LARGER_TASK_STACK_SIZE) \
+ TASK_ALWAYS(USB_CHG_P0, usb_charger_task, NULL, TASK_STACK_SIZE) \
+ TASK_ALWAYS(USB_CHG_P1, usb_charger_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(CHARGER, charger_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_NOTEST(CHIPSET, chipset_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_NOTEST(PDCMD, pd_command_task, NULL, TASK_STACK_SIZE) \
@@ -26,5 +28,3 @@
TASK_NOTEST(KEYSCAN, keyboard_scan_task, NULL, TASK_STACK_SIZE) \
TASK_ALWAYS(PD_C0, pd_task, NULL, LARGER_TASK_STACK_SIZE) \
TASK_ALWAYS(PD_C1, pd_task, NULL, LARGER_TASK_STACK_SIZE)
-
-/* TODO: Add pericom USB charger tasks */
diff --git a/board/oak/gpio.inc b/board/oak/gpio.inc
index c45e51e785..0bcee1ee5d 100644
--- a/board/oak/gpio.inc
+++ b/board/oak/gpio.inc
@@ -104,9 +104,9 @@ GPIO(PMIC_PWRON_H, PIN(A, 12), GPIO_OUT_LOW)
GPIO(PMIC_WARM_RESET_H, PIN(B, 3), GPIO_OUT_LOW)
GPIO(LEVEL_SHIFT_EN_L, PIN(D, 3), GPIO_OUT_LOW) /* LID/AC level shift */
GPIO(USB_PD_RST_L, PIN(A, 15), GPIO_OUT_HIGH) /* PD reset */
-GPIO(USB_C0_5V_OUT, PIN(D, 8), GPIO_OUT_LOW) /* USBC port 0 5V */
+GPIO(USB_C0_5V_EN, PIN(D, 8), GPIO_OUT_LOW) /* USBC port 0 5V */
GPIO(USB_C0_CHARGE_L, PIN(D, 9), GPIO_OUT_LOW) /* USBC port 0 charge */
-GPIO(USB_C1_5V_OUT, PIN(D, 10), GPIO_OUT_LOW) /* USBC port 1 5V */
+GPIO(USB_C1_5V_EN, PIN(D, 10), GPIO_OUT_LOW) /* USBC port 1 5V */
GPIO(USB_C1_CHARGE_L, PIN(D, 11), GPIO_OUT_LOW) /* USBC port 1 charge */
GPIO(USB_PD_VBUS_WAKE, PIN(B, 15), GPIO_OUT_LOW) /* PD VBUS wake */
GPIO(USB_DP_HPD, PIN(F, 3), GPIO_OUT_LOW)
diff --git a/board/oak/usb_pd_policy.c b/board/oak/usb_pd_policy.c
index 86ceb9fe3c..7bc7a594f7 100644
--- a/board/oak/usb_pd_policy.c
+++ b/board/oak/usb_pd_policy.c
@@ -78,8 +78,8 @@ int pd_set_power_supply_ready(int port)
gpio_set_level(port ? GPIO_USB_C1_CHARGE_L :
GPIO_USB_C0_CHARGE_L, 1);
/* Provide VBUS */
- gpio_set_level(port ? GPIO_USB_C1_5V_OUT :
- GPIO_USB_C0_5V_OUT, 1);
+ gpio_set_level(port ? GPIO_USB_C1_5V_EN :
+ GPIO_USB_C0_5V_EN, 1);
return EC_SUCCESS; /* we are ready */
}
@@ -87,8 +87,8 @@ int pd_set_power_supply_ready(int port)
void pd_power_supply_reset(int port)
{
/* Disable VBUS */
- gpio_set_level(port ? GPIO_USB_C1_5V_OUT :
- GPIO_USB_C0_5V_OUT, 0);
+ gpio_set_level(port ? GPIO_USB_C1_5V_EN :
+ GPIO_USB_C0_5V_EN, 0);
/*
* TODO: Currently we can only detect VBUS when charge_l is
diff --git a/common/usb_charger.c b/common/usb_charger.c
index f686ffaff1..99263fafc9 100644
--- a/common/usb_charger.c
+++ b/common/usb_charger.c
@@ -227,8 +227,10 @@ void usb_charger_task(void)
*/
if (evt & USB_CHG_EVENT_VBUS) {
pi3usb9281_enable_interrupts(port);
+#ifndef CONFIG_USB_PD_TCPM_VBUS
CPRINTS("VBUS p%d %d", port,
pd_snk_is_vbus_provided(port));
+#endif
}
}
}
@@ -258,8 +260,10 @@ static void usb_charger_init(void)
i,
&charge_none);
+#ifndef CONFIG_USB_PD_TCPM_VBUS
/* Initialize VBUS supplier based on whether VBUS is present */
update_vbus_supplier(i, pd_snk_is_vbus_provided(i));
+#endif
}
}
DECLARE_HOOK(HOOK_INIT, usb_charger_init, HOOK_PRIO_DEFAULT);