diff --git a/src/mainboard/google/bluey/board.h b/src/mainboard/google/bluey/board.h index 3d42d89a48..d5218b469b 100644 --- a/src/mainboard/google/bluey/board.h +++ b/src/mainboard/google/bluey/board.h @@ -53,6 +53,7 @@ void setup_chromeos_gpios(void); bool is_off_mode(void); void configure_parallel_charging(void); +void configure_parallel_charging_late(void); void enable_slow_battery_charging(void); void disable_slow_battery_charging(void); diff --git a/src/mainboard/google/bluey/charging.c b/src/mainboard/google/bluey/charging.c index 95f98a0799..6027dc3c6b 100644 --- a/src/mainboard/google/bluey/charging.c +++ b/src/mainboard/google/bluey/charging.c @@ -34,6 +34,8 @@ enum charging_status { #define OUTPUT_INVERT 0x80 #define PERPH_EN 0x80 +#define GPIO_PARALLEL_CHARGING_CFG GPIO(71) + /* * Enable PMC8380F GPIO07 & GPIO09 for parallel charging. */ @@ -43,12 +45,23 @@ void configure_parallel_charging(void) return; printk(BIOS_INFO, "Configure parallel charging support\n"); - spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO07_MODE_CTL), MODE_OUTPUT); spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO07_DIG_OUT_SOURCE_CTL), OUTPUT_INVERT); spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO07_EN_CTL), PERPH_EN); - spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO09_MODE_CTL), MODE_OUTPUT); + spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO07_MODE_CTL), MODE_OUTPUT); spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO09_DIG_OUT_SOURCE_CTL), OUTPUT_INVERT); spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO09_EN_CTL), PERPH_EN); + spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO09_MODE_CTL), MODE_OUTPUT); +} + +/* + * Late configuration for parallel charging. + */ +void configure_parallel_charging_late(void) +{ + if (!CONFIG(MAINBOARD_SUPPORTS_PARALLEL_CHARGING)) + return; + + gpio_output(GPIO_PARALLEL_CHARGING_CFG, 1); } /* diff --git a/src/mainboard/google/bluey/mainboard.c b/src/mainboard/google/bluey/mainboard.c index 5b6278b3a0..099f825344 100644 --- a/src/mainboard/google/bluey/mainboard.c +++ b/src/mainboard/google/bluey/mainboard.c @@ -122,6 +122,8 @@ void lb_add_boot_mode(struct lb_header *header) mode->size = sizeof(*mode); mode->boot_mode = get_boot_mode(); + configure_parallel_charging_late(); + /* Enable charging only during off-mode or low-battery mode with charger present */ if (is_low_power_boot_with_charger()) enable_slow_battery_charging();