5 #include <soc/infracfg.h>
36 SET32_BITFIELDS(&arb->mtk_pmif->spi_mode_ctrl, SPI_MODE_CTRL_VLD_SRCLK_EN_CTRL, 0);
40 SPI_MODE_CTRL_SRCLK_EN, 1,
41 SPI_MODE_CTRL_SRVOL_EN, 1,
42 SPI_MODE_CTRL_PMIF_RDY, 0);
44 SET32_BITFIELDS(&arb->mtk_pmif->sleep_protection_ctrl, SPM_SLEEP_REQ_SEL, 0,
45 SCP_SLEEP_REQ_SEL, 0);
54 write32(&arb->mtk_pmif->cmdissue_en, 1);
67 }
while ((reg_rdata & expected) != 0);
74 u32 pmicspi_mst_dio_en_backup;
173 const u32 test_data[30] = {
174 0x6996, 0x9669, 0x6996, 0x9669, 0x6996, 0x9669, 0x6996,
175 0x9669, 0x6996, 0x9669, 0x5AA5, 0xA55A, 0x5AA5, 0xA55A,
176 0x5AA5, 0xA55A, 0x5AA5, 0xA55A, 0x5AA5, 0xA55A, 0x1B27,
177 0x1B27, 0x1B27, 0x1B27, 0x1B27, 0x1B27, 0x1B27, 0x1B27,
181 for (si_sample_ctrl = 0; si_sample_ctrl < 16; si_sample_ctrl++) {
189 if (si_sample_ctrl == 16)
192 if (si_sample_ctrl == 15)
199 for (
int si_dly = 0; si_dly < 10; si_dly++) {
202 int start_boundary_found = 0;
203 for (
int i = 0; i <
ARRAY_SIZE(test_data); i++) {
206 if ((rdata & 0x7fff) != (test_data[i] & 0x7fff)) {
207 start_boundary_found = 1;
211 if (start_boundary_found == 1)
271 STAUPD_CTRL_PMIC0_SIG_STA, 1,
272 STAUPD_CTRL_PMIC0_EINT_STA, 1);
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
int pmif_spi_init(struct pmif *arb)
static void init_staupd(struct pmif *arb)
static void init_reg_clock(struct pmif *arb)
static int reset_spislv(void)
static int init_sistrobe(struct pmif *arb)
static void init_spislv(struct pmif *arb)
static int check_idle(void *addr, u32 expected)
static void pmif_spi_config(struct pmif *arb)
#define printk(level,...)
#define DEFINE_BITFIELD(name, high_bit, low_bit)
#define DEFINE_BIT(name, bit)
#define SET32_BITFIELDS(addr,...)
static int stopwatch_expired(struct stopwatch *sw)
static void stopwatch_init_usecs_expire(struct stopwatch *sw, long us)
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
void pmif_spi_iocfg(void)
#define PMIF_SPI_AP_SECURE
static struct mtk_pmicspi_mst_regs *const mtk_pmicspi_mst
#define DEFAULT_VALUE_READ_TEST
void(* write)(struct pmif *arb, u32 slvid, u32 reg, u32 data)
void(* read)(struct pmif *arb, u32 slvid, u32 reg, u32 *data)
struct mtk_pmif_regs * mtk_pmif