From 45d1f9cce46144bd1b8b1be2b9dc9e9d05f13208 Mon Sep 17 00:00:00 2001 From: Subrata Banik Date: Wed, 3 Sep 2025 10:40:35 +0530 Subject: [PATCH] mb/google/bluey: Move charging functions to dedicated file This patch isolates all charging-related functionality, including enabling and disabling charging and reading SPMI registers, into a new dedicated file, charging.c. This improves code organization and readability by separating concerns, making the codebase easier to maintain. Additionally, `enable_battery_charging` is renamed to `enable_slow_battery_charging` to explicitly state the maximum current is 1A. The charging enablement logic is also moved to occur before the AOP firmware is loaded. TEST=Able to build and boot google/quenbi. Change-Id: Ieb374cb34814e8eab8dc2ad6f5fb435190167bc7 Signed-off-by: Subrata Banik Reviewed-on: https://review.coreboot.org/c/coreboot/+/89021 Reviewed-by: Kapil Porwal Tested-by: build bot (Jenkins) --- src/mainboard/google/bluey/Makefile.mk | 2 ++ src/mainboard/google/bluey/board.h | 1 + src/mainboard/google/bluey/charging.c | 29 ++++++++++++++++++++++++++ src/mainboard/google/bluey/romstage.c | 27 ++---------------------- 4 files changed, 34 insertions(+), 25 deletions(-) create mode 100644 src/mainboard/google/bluey/charging.c diff --git a/src/mainboard/google/bluey/Makefile.mk b/src/mainboard/google/bluey/Makefile.mk index 6018c9152a..556509b3cb 100644 --- a/src/mainboard/google/bluey/Makefile.mk +++ b/src/mainboard/google/bluey/Makefile.mk @@ -10,4 +10,6 @@ bootblock-y += bootblock.c romstage-y += romstage.c +romstage-y += charging.c + ramstage-y += mainboard.c diff --git a/src/mainboard/google/bluey/board.h b/src/mainboard/google/bluey/board.h index b5b719d7bc..2a7120a719 100644 --- a/src/mainboard/google/bluey/board.h +++ b/src/mainboard/google/bluey/board.h @@ -38,5 +38,6 @@ #endif void setup_chromeos_gpios(void); +void enable_slow_battery_charging(void); #endif /* MAINBOARD_GOOGLE_BLUEY_BOARD_H */ diff --git a/src/mainboard/google/bluey/charging.c b/src/mainboard/google/bluey/charging.c new file mode 100644 index 0000000000..3b9e4492b9 --- /dev/null +++ b/src/mainboard/google/bluey/charging.c @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include "board.h" +#include + +#define SMB1_SLAVE_ID 0x07 +#define SMB2_SLAVE_ID 0x0A +#define SCHG_CHGR_MAX_FAST_CHARGE_CURRENT_CFG 0x2666 +#define SMB1_CHGR_MAX_FCC_CFG ((SMB1_SLAVE_ID << 16) | SCHG_CHGR_MAX_FAST_CHARGE_CURRENT_CFG) +#define SMB2_CHGR_MAX_FCC_CFG ((SMB2_SLAVE_ID << 16) | SCHG_CHGR_MAX_FAST_CHARGE_CURRENT_CFG) +#define SCHG_CHGR_CHARGING_ENABLE_CMD 0x2642 +#define SMB1_CHGR_CHRG_EN_CMD ((SMB1_SLAVE_ID << 16) | SCHG_CHGR_CHARGING_ENABLE_CMD) +#define SMB2_CHGR_CHRG_EN_CMD ((SMB2_SLAVE_ID << 16) | SCHG_CHGR_CHARGING_ENABLE_CMD) + +#define FCC_1A_STEP_50MA 0x14 +#define CHRG_ENABLE 0x01 + +/* + * Enable charging w/ 1A Icurrent supply at max. + */ +void enable_slow_battery_charging(void) +{ + /* Configure FCC and enable charging */ + printk(BIOS_INFO, "Use slow charging without fast charge support\n"); + spmi_write8(SMB1_CHGR_MAX_FCC_CFG, FCC_1A_STEP_50MA); + spmi_write8(SMB2_CHGR_MAX_FCC_CFG, FCC_1A_STEP_50MA); + spmi_write8(SMB1_CHGR_CHRG_EN_CMD, CHRG_ENABLE); + spmi_write8(SMB2_CHGR_CHRG_EN_CMD, CHRG_ENABLE); +} diff --git a/src/mainboard/google/bluey/romstage.c b/src/mainboard/google/bluey/romstage.c index 67d19aa1e6..da87261fef 100644 --- a/src/mainboard/google/bluey/romstage.c +++ b/src/mainboard/google/bluey/romstage.c @@ -5,32 +5,9 @@ #include #include #include -#include #include #include -#define SMB1_SLAVE_ID 0x07 -#define SMB2_SLAVE_ID 0x0A -#define SCHG_CHGR_MAX_FAST_CHARGE_CURRENT_CFG 0x2666 -#define SMB1_CHGR_MAX_FCC_CFG ((SMB1_SLAVE_ID << 16) | SCHG_CHGR_MAX_FAST_CHARGE_CURRENT_CFG) -#define SMB2_CHGR_MAX_FCC_CFG ((SMB2_SLAVE_ID << 16) | SCHG_CHGR_MAX_FAST_CHARGE_CURRENT_CFG) -#define SCHG_CHGR_CHARGING_ENABLE_CMD 0x2642 -#define SMB1_CHGR_CHRG_EN_CMD ((SMB1_SLAVE_ID << 16) | SCHG_CHGR_CHARGING_ENABLE_CMD) -#define SMB2_CHGR_CHRG_EN_CMD ((SMB2_SLAVE_ID << 16) | SCHG_CHGR_CHARGING_ENABLE_CMD) - -#define FCC_1A_STEP_50MA 0x14 -#define CHRG_ENABLE 0x01 - -static void enable_battery_charging(void) -{ - /* Configure FCC and enable charging */ - printk(BIOS_INFO, "Use slow charging without fast charge support\n"); - spmi_write8(SMB1_CHGR_MAX_FCC_CFG, FCC_1A_STEP_50MA); - spmi_write8(SMB2_CHGR_MAX_FCC_CFG, FCC_1A_STEP_50MA); - spmi_write8(SMB1_CHGR_CHRG_EN_CMD, CHRG_ENABLE); - spmi_write8(SMB2_CHGR_CHRG_EN_CMD, CHRG_ENABLE); -} - void platform_romstage_main(void) { /* Watchdog must be checked first to avoid erasing watchdog info later. */ @@ -41,12 +18,12 @@ void platform_romstage_main(void) /* QCLib: DDR init & train */ qclib_load_and_run(); + enable_slow_battery_charging(); + aop_fw_load_reset(); qclib_rerun(); - enable_battery_charging(); - /* * Enable this power rail now for FPMCU stability prior to * its reset being deasserted in ramstage. This applies