mb/google/bluey: Add parallel charging infrastructure

Add support for parallel charging by configuring PMC8380F GPIO07
and GPIO09. These GPIOs are configured as outputs with inverted
logic. A new Kconfig option MAINBOARD_SUPPORTS_PARALLEL_CHARGING
is introduced to allow variants to opt-in to this configuration.

BUG=b:468120472
TEST=Build Google/Quartz.

Change-Id: I0126d987650c660e305f704708c09356908633e4
Signed-off-by: Kapil Porwal <kapilporwal@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/90514
Reviewed-by: Pranava Y N <pranavayn@google.com>
Reviewed-by: Jayvik Desai <jayvik@google.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Kapil Porwal 2025-12-16 00:41:54 +05:30 committed by Subrata Banik
commit de87ea0efa
4 changed files with 38 additions and 0 deletions

View file

@ -94,6 +94,12 @@ config MAINBOARD_NO_USB_A_PORT
help
Enable this option if your mainboard is not equipped with USB-A port.
config MAINBOARD_SUPPORTS_PARALLEL_CHARGING
bool
default n
help
Enable this option if your mainboard supports parallel charging.
config MAINBOARD_HAS_GOOGLE_TPM
bool
default n

View file

@ -42,6 +42,7 @@
void setup_chromeos_gpios(void);
bool is_off_mode(void);
void configure_parallel_charging(void);
void enable_slow_battery_charging(void);
void disable_slow_battery_charging(void);

View file

@ -21,6 +21,35 @@ enum charging_status {
CHRG_ENABLE,
};
#define PMC8380F_SLAVE_ID 0x05
#define GPIO07_MODE_CTL 0x8E40
#define GPIO07_DIG_OUT_SOURCE_CTL 0x8E44
#define GPIO07_EN_CTL 0x8E46
#define GPIO09_MODE_CTL 0x9040
#define GPIO09_DIG_OUT_SOURCE_CTL 0x9044
#define GPIO09_EN_CTL 0x9046
#define MODE_OUTPUT 0x01
#define OUTPUT_INVERT 0x80
#define PERPH_EN 0x80
/*
* Enable PMC8380F GPIO07 & GPIO09 for parallel charging.
*/
void configure_parallel_charging(void)
{
if (!CONFIG(MAINBOARD_SUPPORTS_PARALLEL_CHARGING))
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, GPIO09_DIG_OUT_SOURCE_CTL), OUTPUT_INVERT);
spmi_write8(SPMI_ADDR(PMC8380F_SLAVE_ID, GPIO09_EN_CTL), PERPH_EN);
}
/*
* Enable charging w/ 1A Icurrent supply at max.
*/

View file

@ -85,6 +85,8 @@ static void display_startup(void)
static void mainboard_init(struct device *dev)
{
configure_parallel_charging();
/* Skip mainboard initialization if boot mode is "low-battery" or "off-mode charging"*/
if (is_low_power_boot())
return;