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