summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2017-08-17 17:55:02 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-09-14 20:14:17 -0700
commit4566523837774988a9862e07dd42c10c0e4284bc (patch)
treeed1c1905100fb5250ffa9316c7ac7819a5f53bba
parent0697132df7ffc36ab697ce4de134f585f1644097 (diff)
downloadchrome-ec-4566523837774988a9862e07dd42c10c0e4284bc.tar.gz
Fizz: Detect BJ as a power source
Proto2 board has the line ADP_IN, which is raised to 2.5 V when a BJ adapter is plugged. This patch makes EC running on proto2 and above use this line to detect the power source at boot (as opposed to proto1 guessing a BJ adapter is plugged if PPVAR_BOOSTIN_SENSE is 19v). BUG=b:37573548 BRANCH=none TEST=Boot proto3 Fizz on BJ and Type-C. Change-Id: I4052a73729d62694ce154bfb33255974dc110841 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/626879
-rw-r--r--board/fizz/board.c6
-rw-r--r--board/fizz/gpio.inc1
-rw-r--r--board/fizz/usb_pd_policy.c17
3 files changed, 17 insertions, 7 deletions
diff --git a/board/fizz/board.c b/board/fizz/board.c
index 9c810a772b..0fd6e6dd76 100644
--- a/board/fizz/board.c
+++ b/board/fizz/board.c
@@ -60,6 +60,12 @@ static void tcpc_alert_event(enum gpio_signal signal)
#endif
}
+void adp_in(enum gpio_signal signal)
+{
+ /* TODO: Switch power source from USB-C to BJ only if we're in S5. */
+ CPRINTS("BJ detected");
+}
+
void vbus0_evt(enum gpio_signal signal)
{
task_wake(TASK_ID_PD_C0);
diff --git a/board/fizz/gpio.inc b/board/fizz/gpio.inc
index 4b76e8ee5b..4640e3c4da 100644
--- a/board/fizz/gpio.inc
+++ b/board/fizz/gpio.inc
@@ -22,6 +22,7 @@ GPIO_INT(PCH_SLP_SUS_L, PIN(6, 2), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(RSMRST_L_PGOOD, PIN(B, 0), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(PMIC_DPWROK, PIN(C, 7), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(WP_L, PIN(9, 3), GPIO_INT_BOTH, switch_interrupt)
+GPIO_INT(ADP_IN_L, PIN(C, 5), GPIO_INT_LOW | GPIO_PULL_UP, adp_in) /* Low: BJ detected */
GPIO_INT(USB_C0_VBUS_WAKE_L, PIN(9, 7), GPIO_INT_BOTH | GPIO_PULL_UP, vbus0_evt)
GPIO_INT(RECOVERY_L, PIN(8, 2), GPIO_INT_BOTH, button_interrupt) /* Recovery button */
GPIO(PCH_RTCRST, PIN(E, 7), GPIO_OUT_LOW) /* RTCRST# to SOC */
diff --git a/board/fizz/usb_pd_policy.c b/board/fizz/usb_pd_policy.c
index 70983a7966..c64652ec8e 100644
--- a/board/fizz/usb_pd_policy.c
+++ b/board/fizz/usb_pd_policy.c
@@ -271,22 +271,25 @@ static void board_charge_manager_init(void)
}
input_voltage = adc_read_channel(ADC_VBUS);
- input_port = input_voltage > 5500 ?
+ if (system_get_board_version() == 0)
+ /* TODO(dnojiri): Remove this case after proto1 is deprecated */
+ input_port = input_voltage > 5500 ?
CHARGE_PORT_BARRELJACK : CHARGE_PORT_TYPEC0;
+ else /* proto2 and onward */
+ input_port = gpio_get_level(GPIO_ADP_IN_L) ?
+ CHARGE_PORT_TYPEC0 : CHARGE_PORT_BARRELJACK;
CPRINTS("Power Source: p%d (%dmV)", input_port, input_voltage);
/* Initialize the power source supplier */
switch (input_port) {
+ case CHARGE_PORT_TYPEC0:
+ typec_set_input_current_limit(input_port, 3000, input_voltage);
+ break;
case CHARGE_PORT_BARRELJACK:
cpi.voltage = input_voltage;
- cpi.current = 3330; /* TODO: Set right value */
+ cpi.current = 3330; /* TODO(dnojiri): Set right value */
charge_manager_update_charge(CHARGE_SUPPLIER_DEDICATED, 1,
&cpi);
- /* Source only. Disable PD negotiation as a sink */
- break;
- case CHARGE_PORT_TYPEC0:
- typec_set_input_current_limit(input_port, 3000, input_voltage);
- /* Sink only. Disable PD negotiation as a source */
break;
}
}