coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
pmif_spmi.c File Reference
#include <console/console.h>
#include <device/mmio.h>
#include <soc/addressmap.h>
#include <soc/pmif.h>
#include <soc/pmif_spmi.h>
#include <soc/pmif_sw.h>
#include <soc/spmi.h>
Include dependency graph for pmif_spmi.c:

Go to the source code of this file.

Macros

#define PMIF_CMD_PER_3   (0x1 << PMIF_CMD_EXT_REG_LONG)
 
#define PMIF_CMD_PER_1_3   ((0x1 << PMIF_CMD_REG) | (0x1 << PMIF_CMD_EXT_REG_LONG))
 

Functions

static int spmi_read_check (struct pmif *pmif_arb, int slvid)
 
static int spmi_cali_rd_clock_polarity (struct pmif *pmif_arb, const struct spmi_device *dev)
 
static int spmi_mst_init (struct pmif *pmif_arb)
 
static void pmif_spmi_force_normal_mode (int mstid)
 
static void pmif_spmi_enable_swinf (int mstid)
 
static void pmif_spmi_enable_cmdIssue (int mstid, bool en)
 
static void pmif_spmi_enable (int mstid)
 
int pmif_spmi_init (struct pmif *arb)
 

Variables

static const struct spmi_device spmi_dev []
 

Macro Definition Documentation

◆ PMIF_CMD_PER_1_3

#define PMIF_CMD_PER_1_3   ((0x1 << PMIF_CMD_REG) | (0x1 << PMIF_CMD_EXT_REG_LONG))

Definition at line 12 of file pmif_spmi.c.

◆ PMIF_CMD_PER_3

#define PMIF_CMD_PER_3   (0x1 << PMIF_CMD_EXT_REG_LONG)

Definition at line 11 of file pmif_spmi.c.

Function Documentation

◆ pmif_spmi_enable()

◆ pmif_spmi_enable_cmdIssue()

static void pmif_spmi_enable_cmdIssue ( int  mstid,
bool  en 
)
static

Definition at line 131 of file pmif_spmi.c.

References mtk_pmif_regs::cmdissue_en, get_pmif_controller(), pmif::mstid, pmif::mtk_pmif, PMIF_SPMI, and write32().

Referenced by pmif_spmi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pmif_spmi_enable_swinf()

static void pmif_spmi_enable_swinf ( int  mstid)
static

Definition at line 123 of file pmif_spmi.c.

References mtk_pmif_regs::arb_en, get_pmif_controller(), mtk_pmif_regs::inf_en, pmif::mstid, pmif::mtk_pmif, PMIF_SPMI, PMIF_SPMI_SW_CHAN, and write32().

Referenced by pmif_spmi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pmif_spmi_force_normal_mode()

static void pmif_spmi_force_normal_mode ( int  mstid)
static

Definition at line 107 of file pmif_spmi.c.

References get_pmif_controller(), pmif::mstid, pmif::mtk_pmif, PMIF_SPMI, SET32_BITFIELDS, mtk_pmif_regs::sleep_protection_ctrl, and mtk_pmif_regs::spi_mode_ctrl.

Referenced by pmif_spmi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pmif_spmi_init()

int pmif_spmi_init ( struct pmif arb)

Definition at line 186 of file pmif_spmi.c.

References BIOS_ERR, E_NODEV, pmif::is_pmif_init_done, pmif::mstid, pmif_spmi_enable(), pmif_spmi_enable_cmdIssue(), pmif_spmi_enable_swinf(), pmif_spmi_force_normal_mode(), printk, and spmi_mst_init().

Referenced by mtk_pmif_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spmi_cali_rd_clock_polarity()

static int spmi_cali_rd_clock_polarity ( struct pmif pmif_arb,
const struct spmi_device dev 
)
static

Definition at line 62 of file pmif_spmi.c.

References ARRAY_SIZE, die(), cali::dly, mtk_spmi_mst, pmif_arb, cali::pol, SET32_BITFIELDS, spmi_device::slvid, SPMI_CK_DLY_1T, SPMI_CK_NO_DLY, SPMI_CK_POL_NEG, SPMI_CK_POL_POS, and spmi_read_check().

Referenced by spmi_mst_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spmi_mst_init()

static int spmi_mst_init ( struct pmif pmif_arb)
static

Definition at line 89 of file pmif_spmi.c.

References ARRAY_SIZE, BIOS_ERR, E_INVAL, pmif_arb, pmif_spmi_iocfg(), printk, spmi_cali_rd_clock_polarity(), spmi_config_master(), and spmi_dev.

Referenced by pmif_spmi_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ spmi_read_check()

static int spmi_read_check ( struct pmif pmif_arb,
int  slvid 
)
static

Definition at line 41 of file pmif_spmi.c.

References BIOS_ERR, E_NODEV, MT6315_DEFAULT_VALUE_READ, MT6315_READ_TEST, MT6315_READ_TEST_1, pmif_arb, printk, and pmif::read.

Referenced by spmi_cali_rd_clock_polarity().

Here is the caller graph for this function:

Variable Documentation

◆ spmi_dev

const struct spmi_device spmi_dev[]
static
Initial value:
= {
{
.slvid = SPMI_SLAVE_6,
.type = BUCK_CPU,
.type_id = BUCK_CPU_ID,
},
{
.slvid = SPMI_SLAVE_7,
.type = BUCK_GPU,
.type_id = BUCK_GPU_ID,
},
}
@ BUCK_CPU_ID
Definition: spmi.h:42
@ BUCK_GPU_ID
Definition: spmi.h:43
@ SPMI_SLAVE_7
Definition: spmi.h:23
@ SPMI_SLAVE_6
Definition: spmi.h:22
@ BUCK_GPU
Definition: spmi.h:37
@ BUCK_CPU
Definition: spmi.h:36

Definition at line 1 of file pmif_spmi.c.

Referenced by spmi_mst_init().