mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 18:11:05 +00:00
Enable PD communication in RO for external display
This patch makes EC enable PD communication if it's running in manual recovery mode. This is required to show recovery screen on a type-c monitor. This patch also makes EC-EFS ignore power availability. It will make EC verify & jump to RW even if power is sourced by a barrel jack adapter. This should allow depthcharge to show screens (e.g. broken, warning) on a type-c monitor. BUG=b:72387533 BRANCH=none TEST=On Fizz with type-c monitor, verify - Recovery screen is displayed in manual recovery mode. - Critical update screen is displayed in normal mode. - Warning screen is displayed in developer mode. Monitors tested: Dingdong, Dell S2718D Change-Id: Ib53e02d1e5c0f5b2d96d9a02fd33022f92e52b04 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/898346 Reviewed-by: Randall Spangler <rspangler@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
cd5173dfe0
commit
044cc72496
@@ -236,9 +236,10 @@ void board_tcpc_init(void)
|
||||
{
|
||||
int port, reg;
|
||||
|
||||
/* Only reset TCPC in RO boot. */
|
||||
if (!system_jumped_to_this_image())
|
||||
board_reset_pd_mcu();
|
||||
/* This needs to be executed only once per boot. It could be run by RO
|
||||
* if we boot in recovery mode. It could be run by RW if we boot in
|
||||
* normal or dev mode. Note EFS makes RO jump to RW before HOOK_INIT. */
|
||||
board_reset_pd_mcu();
|
||||
|
||||
/*
|
||||
* Wake up PS8751. If PS8751 remains in low power mode after sysjump,
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "adc.h"
|
||||
#include "atomic.h"
|
||||
#include "extpower.h"
|
||||
#include "charge_manager.h"
|
||||
@@ -254,10 +253,9 @@ static int restore_active_charge_port(struct charge_port_info *cpi)
|
||||
*/
|
||||
static void board_charge_manager_init(void)
|
||||
{
|
||||
int input_voltage;
|
||||
enum charge_port input_port;
|
||||
int i, j;
|
||||
enum charge_port port;
|
||||
struct charge_port_info cpi = { 0 };
|
||||
int i, j;
|
||||
|
||||
/* Initialize all charge suppliers to 0 */
|
||||
for (i = 0; i < CHARGE_PORT_COUNT; i++) {
|
||||
@@ -265,17 +263,19 @@ static void board_charge_manager_init(void)
|
||||
charge_manager_update_charge(j, i, &cpi);
|
||||
}
|
||||
|
||||
input_voltage = adc_read_channel(ADC_VBUS);
|
||||
input_port = gpio_get_level(GPIO_ADP_IN_L) ?
|
||||
port = gpio_get_level(GPIO_ADP_IN_L) ?
|
||||
CHARGE_PORT_TYPEC0 : CHARGE_PORT_BARRELJACK;
|
||||
CPRINTS("Power Source: p%d (%dmV)", input_port, input_voltage);
|
||||
CPRINTS("Power source is p%d (%s)", port,
|
||||
port == CHARGE_PORT_TYPEC0 ? "USB-C" : "BJ");
|
||||
|
||||
/* Initialize the power source supplier */
|
||||
switch (input_port) {
|
||||
switch (port) {
|
||||
case CHARGE_PORT_TYPEC0:
|
||||
typec_set_input_current_limit(input_port, 3000, input_voltage);
|
||||
typec_set_input_current_limit(port, 3000, 5000);
|
||||
break;
|
||||
case CHARGE_PORT_BARRELJACK:
|
||||
/* TODO: Once transition from GPIO to CBI completes, get BJ
|
||||
* adapter info locally. No need to save & restore it. */
|
||||
if (restore_active_charge_port(&cpi)) {
|
||||
/* Set it to the default. Will be updated by AP. */
|
||||
CPRINTS("Previous charge info not found. Use default.");
|
||||
@@ -287,7 +287,8 @@ static void board_charge_manager_init(void)
|
||||
break;
|
||||
}
|
||||
}
|
||||
DECLARE_HOOK(HOOK_INIT, board_charge_manager_init, HOOK_PRIO_INIT_ADC + 1);
|
||||
DECLARE_HOOK(HOOK_INIT, board_charge_manager_init,
|
||||
HOOK_PRIO_CHARGE_MANAGER_INIT + 1);
|
||||
|
||||
static void preserve_active_charge_port(void)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user