coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
pmif_common.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __MEDIATEK_SOC_PMIF_COMMON__
4 #define __MEDIATEK_SOC_PMIF_COMMON__
5 
6 #include <types.h>
7 
8 enum {
13 };
14 
15 struct chan_regs {
23 };
24 
25 struct pmif {
27  struct chan_regs *ch;
31  void (*read)(struct pmif *arb, u32 slvid, u32 reg, u32 *data);
32  void (*write)(struct pmif *arb, u32 slvid, u32 reg, u32 data);
33  u32 (*read_field)(struct pmif *arb, u32 slvid, u32 reg, u32 mask, u32 shift);
34  void (*write_field)(struct pmif *arb, u32 slvid, u32 reg, u32 val, u32 mask, u32 shift);
35  int (*is_pmif_init_done)(struct pmif *arb);
36 };
37 
38 enum {
41 };
42 
43 enum {
44  E_IO = 1, /* I/O error */
45  E_BUSY, /* Device or resource busy */
46  E_NODEV, /* No such device */
47  E_INVAL, /* Invalid argument */
48  E_OPNOTSUPP, /* Operation not supported on transport endpoint */
49  E_TIMEOUT, /* Wait for idle time out */
50  E_READ_TEST_FAIL, /* SPI read fail */
51  E_SPI_INIT_RESET_SPI, /* Reset SPI fail */
52  E_SPI_INIT_SIDLY, /* SPI edge calibration fail */
53 };
54 
58 };
59 
60 DEFINE_BIT(PMIFSPI_INF_EN_SRCLKEN_RC_HW, 4)
61 
62 DEFINE_BIT(PMIFSPI_OTHER_INF_DXCO0_EN, 0)
63 DEFINE_BIT(PMIFSPI_OTHER_INF_DXCO1_EN, 1)
64 
65 DEFINE_BIT(PMIFSPI_ARB_EN_SRCLKEN_RC_HW, 4)
66 DEFINE_BIT(PMIFSPI_ARB_EN_DCXO_CONN, 15)
67 DEFINE_BIT(PMIFSPI_ARB_EN_DCXO_NFC, 16)
68 
69 DEFINE_BITFIELD(PMIFSPI_SPM_SLEEP_REQ_SEL, 1, 0)
70 DEFINE_BITFIELD(PMIFSPI_SCP_SLEEP_REQ_SEL, 10, 9)
71 
72 DEFINE_BIT(PMIFSPI_MD_CTL_PMIF_RDY, 9)
73 DEFINE_BIT(PMIFSPI_MD_CTL_SRCLK_EN, 10)
74 DEFINE_BIT(PMIFSPI_MD_CTL_SRVOL_EN, 11)
75 
76 DEFINE_BITFIELD(PMIFSPMI_SPM_SLEEP_REQ_SEL, 1, 0)
77 DEFINE_BITFIELD(PMIFSPMI_SCP_SLEEP_REQ_SEL, 10, 9)
78 
79 DEFINE_BIT(PMIFSPMI_MD_CTL_PMIF_RDY, 9)
80 DEFINE_BIT(PMIFSPMI_MD_CTL_SRCLK_EN, 10)
81 DEFINE_BIT(PMIFSPMI_MD_CTL_SRVOL_EN, 11)
82 
83 /* External API */
84 struct pmif *get_pmif_controller(int inf, int mstid);
85 void pmwrap_interface_init(void);
86 int mtk_pmif_init(void);
87 #endif /*__MEDIATEK_SOC_PMIF_COMMON__*/
#define DEFINE_BITFIELD(name, high_bit, low_bit)
Definition: mmio.h:124
#define DEFINE_BIT(name, bit)
Definition: mmio.h:131
@ PMIF_SPI
Definition: pmif_common.h:39
@ PMIF_SPMI
Definition: pmif_common.h:40
void pmwrap_interface_init(void)
Definition: pmif.c:282
@ E_TIMEOUT
Definition: pmif_common.h:49
@ E_SPI_INIT_SIDLY
Definition: pmif_common.h:52
@ E_READ_TEST_FAIL
Definition: pmif_common.h:50
@ E_BUSY
Definition: pmif_common.h:45
@ E_INVAL
Definition: pmif_common.h:47
@ E_SPI_INIT_RESET_SPI
Definition: pmif_common.h:51
@ E_OPNOTSUPP
Definition: pmif_common.h:48
@ E_IO
Definition: pmif_common.h:44
@ E_NODEV
Definition: pmif_common.h:46
struct pmif * get_pmif_controller(int inf, int mstid)
Definition: pmif.c:168
@ PMIF_CMD_REG_0
Definition: pmif_common.h:9
@ PMIF_CMD_EXT_REG
Definition: pmif_common.h:11
@ PMIF_CMD_EXT_REG_LONG
Definition: pmif_common.h:12
@ PMIF_CMD_REG
Definition: pmif_common.h:10
int mtk_pmif_init(void)
Definition: pmif.c:293
pmic_interface
Definition: pmif_common.h:55
@ PMIF_SLP_REQ
Definition: pmif_common.h:57
@ PMIF_VLD_RDY
Definition: pmif_common.h:56
static const int mask[4]
Definition: gpio.c:308
uint32_t u32
Definition: stdint.h:51
u32 reserved13[3]
Definition: pmif_common.h:20
u32 reserved12[3]
Definition: pmif_common.h:18
u32 ch_sta
Definition: pmif_common.h:22
u32 ch_send
Definition: pmif_common.h:16
u32 ch_rdy
Definition: pmif_common.h:21
u32 pmifid
Definition: pmif_common.h:30
void(* write)(struct pmif *arb, u32 slvid, u32 reg, u32 data)
Definition: pmif_common.h:32
void(* read)(struct pmif *arb, u32 slvid, u32 reg, u32 *data)
Definition: pmif_common.h:31
struct chan_regs * ch
Definition: pmif_common.h:27
int(* is_pmif_init_done)(struct pmif *arb)
Definition: pmif_common.h:35
struct mtk_pmif_regs * mtk_pmif
Definition: pmif_common.h:26
u32 swinf_no
Definition: pmif_common.h:28
void(* write_field)(struct pmif *arb, u32 slvid, u32 reg, u32 val, u32 mask, u32 shift)
Definition: pmif_common.h:34
u32 mstid
Definition: pmif_common.h:29
u32(* read_field)(struct pmif *arb, u32 slvid, u32 reg, u32 mask, u32 shift)
Definition: pmif_common.h:33
u8 val
Definition: sys.c:300
typedef void(X86APIP X86EMU_intrFuncs)(int num)