mb/google/bluey: Add parallel charging configuration

BUG=b:468120472
TEST=Probe and verify the GPIOs on Google/Quartz.

Change-Id: I414509d40e3c6e4495dcdb56a8abfd300caf47d9
Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/91153
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Kapil Porwal 2026-02-11 13:34:26 +05:30 committed by Matt DeVillier
commit 93c52ed340
3 changed files with 18 additions and 2 deletions

View file

@ -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);

View file

@ -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);
}
/*

View file

@ -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();