soc/mediatek/pmif_spmi: Move pmif_spmi_force_normal_mode() to common

Move pmif_spmi_force_normal_mode() to common code for better sharing:
- Extract code from common/pmif_spmi.c to common/pmif_spmi_v1.c
- Extract code from mt8196/pmif_spmi.c to common/pmif_spmi_v2.c

BUG=b:379008996
BRANCH=none
TEST=build pass

Signed-off-by: Vince Liu <vince-wl.liu@mediatek.corp-partner.google.com>
Change-Id: I47c6260872e0922feeab6e849b0ded8d2f7f4eb5
Reviewed-on: https://review.coreboot.org/c/coreboot/+/88243
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Yidi Lin <yidilin@google.com>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Vince Liu 2025-06-27 10:46:16 +08:00 committed by Yidi Lin
commit f3bd8b7a07
11 changed files with 71 additions and 58 deletions

View file

@ -96,4 +96,6 @@ int spmi_config_master(void);
size_t spmi_dev_cnt(void);
void pmif_spmi_iocfg(void);
void pmif_spmi_config(struct pmif *arb);
void pmif_spmi_force_normal_mode(struct pmif *arb);
#endif /* __SOC_MEDIATEK_PMIF_SPMI_H__ */

View file

@ -12,16 +12,6 @@
DEFINE_BIT(SAMPL_CK_POL, 0)
DEFINE_BITFIELD(SAMPL_CK_DLY, 3, 1)
/* PMIF, SPI_MODE_CTRL */
DEFINE_BIT(SPI_MODE_CTRL, 7)
DEFINE_BIT(SRVOL_EN, 11)
DEFINE_BIT(SPI_MODE_EXT_CMD, 12)
DEFINE_BIT(SPI_EINT_MODE_GATING_EN, 13)
/* PMIF, SLEEP_PROTECTION_CTRL */
DEFINE_BITFIELD(SPM_SLEEP_REQ_SEL, 1, 0)
DEFINE_BITFIELD(SCP_SLEEP_REQ_SEL, 10, 9)
__weak void pmif_spmi_config(struct pmif *arb)
{
/* Do nothing. */
@ -97,20 +87,6 @@ static int spmi_mst_init(struct pmif *pmif_arb)
return 0;
}
static void pmif_spmi_force_normal_mode(struct pmif *arb)
{
/* listen srclken_0 only for entering normal or sleep mode */
SET32_BITFIELDS(&arb->mtk_pmif->spi_mode_ctrl,
SPI_MODE_CTRL, 0,
SRVOL_EN, 0,
SPI_MODE_EXT_CMD, 1,
SPI_EINT_MODE_GATING_EN, 1);
/* enable spm/scp sleep request */
SET32_BITFIELDS(&arb->mtk_pmif->sleep_protection_ctrl, SPM_SLEEP_REQ_SEL, 0,
SCP_SLEEP_REQ_SEL, 0);
}
static void pmif_spmi_enable_swinf(struct pmif *arb)
{
write32(&arb->mtk_pmif->inf_en, PMIF_SPMI_SW_CHAN);

View file

@ -0,0 +1,29 @@
/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
#include <device/mmio.h>
#include <soc/pmif.h>
#include <soc/pmif_spmi.h>
/* PMIF, SPI_MODE_CTRL */
DEFINE_BIT(SPI_MODE_CTRL, 7)
DEFINE_BIT(SRVOL_EN, 11)
DEFINE_BIT(SPI_MODE_EXT_CMD, 12)
DEFINE_BIT(SPI_EINT_MODE_GATING_EN, 13)
/* PMIF, SLEEP_PROTECTION_CTRL */
DEFINE_BITFIELD(SPM_SLEEP_REQ_SEL, 1, 0)
DEFINE_BITFIELD(SCP_SLEEP_REQ_SEL, 10, 9)
void pmif_spmi_force_normal_mode(struct pmif *arb)
{
/* listen srclken_0 only for entering normal or sleep mode */
SET32_BITFIELDS(&arb->mtk_pmif->spi_mode_ctrl,
SPI_MODE_CTRL, 0,
SRVOL_EN, 0,
SPI_MODE_EXT_CMD, 1,
SPI_EINT_MODE_GATING_EN, 1);
/* enable spm/scp sleep request */
SET32_BITFIELDS(&arb->mtk_pmif->sleep_protection_ctrl, SPM_SLEEP_REQ_SEL, 0,
SCP_SLEEP_REQ_SEL, 0);
}

View file

@ -0,0 +1,31 @@
/* SPDX-License-Identifier: GPL-2.0-only OR MIT */
#include <console/console.h>
#include <device/mmio.h>
#include <soc/pmif.h>
#include <soc/pmif_spmi.h>
/* PMIF, SPI_MODE_CTRL */
DEFINE_BIT(VLD_SRCLK_EN_CTRL, 5)
DEFINE_BIT(SPI_MODE_CTRL_PMIF_RDY, 9)
DEFINE_BIT(SPI_MODE_CTRL_SRCLK_EN, 10)
DEFINE_BIT(SPI_MODE_CTRL_SRVOL_EN, 11)
/* PMIF, SLEEP_PROTECTION_CTRL */
DEFINE_BIT(SPM_SLEEP_REQ_SEL, 0)
DEFINE_BIT(SCP_SLEEP_REQ_SEL, 9)
void pmif_spmi_force_normal_mode(struct pmif *arb)
{
/* listen srclken_0 only for entering normal or sleep mode */
SET32_BITFIELDS(&arb->mtk_pmif->spi_mode_ctrl,
VLD_SRCLK_EN_CTRL, 0,
SPI_MODE_CTRL_PMIF_RDY, 1,
SPI_MODE_CTRL_SRCLK_EN, 0,
SPI_MODE_CTRL_SRVOL_EN, 0);
/* disable spm/scp sleep request */
SET32_BITFIELDS(&arb->mtk_pmif->sleep_protection_ctrl, SPM_SLEEP_REQ_SEL, 1,
SCP_SLEEP_REQ_SEL, 1);
printk(BIOS_INFO, "%s done\n", __func__);
}

View file

@ -30,7 +30,7 @@ romstage-y += ../common/mmu_operations.c ../common/mmu_cmops.c
romstage-y += ../common/mt6315.c mt6315.c
romstage-y += ../common/pmic_wrap.c pmic_wrap.c pmif.c mt6366.c
romstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
romstage-y += ../common/pmif_spmi.c pmif_spmi.c
romstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
romstage-y += ../common/rtc.c ../common/rtc_pwrap_ops.c ../common/rtc_osc_init.c rtc.c
ramstage-y += adsp.c

View file

@ -29,7 +29,7 @@ romstage-y += ../common/mt6315.c mt6315.c
romstage-y += ../common/mt6359p.c mt6359p.c
romstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
romstage-y += ../common/pmif_spi.c pmif_spi.c
romstage-y += ../common/pmif_spmi.c pmif_spmi.c
romstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
romstage-y += ../common/rtc.c ../common/rtc_osc_init.c ../common/rtc_mt6359p.c
ramstage-y += ../common/auxadc.c
@ -56,7 +56,7 @@ ramstage-y += ../common/mt6359p.c mt6359p.c
ramstage-y += ../common/mtcmos.c mtcmos.c
ramstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
ramstage-y += ../common/pmif_spi.c pmif_spi.c
ramstage-y += ../common/pmif_spmi.c pmif_spmi.c
ramstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
ramstage-y += ../common/rtc.c ../common/rtc_osc_init.c ../common/rtc_mt6359p.c
ramstage-y += soc.c
ramstage-y += ../common/spm.c ../common/spm_v1.c spm.c

View file

@ -28,7 +28,7 @@ romstage-y += ../common/mt6315.c mt6315.c
romstage-y += ../common/mt6359p.c mt6359p.c
romstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
romstage-y += ../common/pmif_spi.c pmif_spi.c
romstage-y += ../common/pmif_spmi.c pmif_spmi.c
romstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
romstage-y += ../common/rtc.c ../common/rtc_osc_init.c ../common/rtc_mt6359p.c
ramstage-y += ../common/auxadc.c
@ -51,7 +51,7 @@ ramstage-y += ../common/mtcmos.c mtcmos.c
ramstage-y += ../common/mtk_fsp.c
ramstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
ramstage-y += ../common/pmif_spi.c pmif_spi.c
ramstage-y += ../common/pmif_spmi.c pmif_spmi.c
ramstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
ramstage-y += ../common/rtc.c ../common/rtc_mt6359p.c ../common/rtc_osc_init.c
ramstage-y += soc.c
ramstage-y += ../common/spm.c ../common/spm_v2.c spm.c

View file

@ -27,7 +27,7 @@ romstage-y += ../common/mmu_operations.c ../common/mmu_cmops.c
romstage-y += ../common/pll.c pll.c
romstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
romstage-y += ../common/pmif_spi.c pmif_spi.c
romstage-y += ../common/pmif_spmi.c pmif_spmi.c
romstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
romstage-y += ../common/mt6315.c mt6315.c
romstage-y += ../common/mt6359p.c mt6359p.c
romstage-y += ../common/rtc.c ../common/rtc_osc_init.c ../common/rtc_mt6359p.c

View file

@ -31,7 +31,7 @@ romstage-y += ../common/pll.c pll.c
romstage-y += scp.c
romstage-y += ../common/pmif.c ../common/pmif_clk.c ../common/pmif_init.c pmif_clk.c
romstage-y += ../common/pmif_spi.c pmif_spi.c
romstage-y += ../common/pmif_spmi.c pmif_spmi.c
romstage-y += ../common/pmif_spmi.c ../common/pmif_spmi_v1.c pmif_spmi.c
romstage-y += ../common/mt6315.c mt6315.c
romstage-y += ../common/mt6359p.c mt6359p.c
romstage-y += mt6360.c

View file

@ -49,7 +49,7 @@ romstage-y += pwrsel.c
romstage-y += ../common/pmif_clk.c pmif_clk.c
romstage-y += ../common/pmif.c pmif_init.c
romstage-y += ../common/rtc.c ../common/rtc_osc_init.c
romstage-y += pmif_spmi.c
romstage-y += ../common/pmif_spmi_v2.c pmif_spmi.c
romstage-y += srclken_rc.c
romstage-y += thermal.c
romstage-y += thermal_sram.c
@ -85,7 +85,7 @@ ramstage-y += ../common/spm.c ../common/spm_v2.c spm.c
ramstage-y += ../common/sspm.c ../common/sspm_sram.c
ramstage-y += ../common/pmif_clk.c pmif_clk.c
ramstage-y += ../common/pmif.c pmif_init.c
ramstage-y += pmif_spmi.c
ramstage-y += ../common/pmif_spmi_v2.c pmif_spmi.c
ramstage-y += ../common/rtc.c ../common/rtc_osc_init.c
ramstage-y += ../common/usb.c usb.c

View file

@ -24,16 +24,6 @@ DEFINE_BIT(SAMPL_CK_POL, 0)
DEFINE_BITFIELD(SAMPL_CK_DLY, 3, 1)
DEFINE_BITFIELD(SAMPL_CK_DLY_ARB, 6, 4)
/* PMIF, SPI_MODE_CTRL */
DEFINE_BIT(VLD_SRCLK_EN_CTRL, 5)
DEFINE_BIT(SPI_MODE_CTRL_PMIF_RDY, 9)
DEFINE_BIT(SPI_MODE_CTRL_SRCLK_EN, 10)
DEFINE_BIT(SPI_MODE_CTRL_SRVOL_EN, 11)
/* PMIF, SLEEP_PROTECTION_CTRL */
DEFINE_BIT(SPM_SLEEP_REQ_SEL, 0)
DEFINE_BIT(SCP_SLEEP_REQ_SEL, 9)
const struct spmi_device spmi_dev[] = {
{
.slvid = SPMI_SLAVE_4, /* MT6363 */
@ -264,21 +254,6 @@ static int spmi_mst_init(struct pmif *arb)
return 0;
}
static void pmif_spmi_force_normal_mode(struct pmif *arb)
{
/* listen srclken_0 only for entering normal or sleep mode */
SET32_BITFIELDS(&arb->mtk_pmif->spi_mode_ctrl,
VLD_SRCLK_EN_CTRL, 0,
SPI_MODE_CTRL_PMIF_RDY, 1,
SPI_MODE_CTRL_SRCLK_EN, 0,
SPI_MODE_CTRL_SRVOL_EN, 0);
/* disable spm/scp sleep request */
SET32_BITFIELDS(&arb->mtk_pmif->sleep_protection_ctrl, SPM_SLEEP_REQ_SEL, 1,
SCP_SLEEP_REQ_SEL, 1);
printk(BIOS_INFO, "%s done\n", __func__);
}
static void pmif_spmi_enable_swinf(struct pmif *arb)
{
write32(&arb->mtk_pmif->inf_en, PMIF_SPMI_SW_CHAN);