xref: /arm-trusted-firmware/plat/mediatek/mt8173/drivers/pmic/pmic_wrap_init.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu 
7*91f16700Schasinglulu #ifndef PMIC_WRAP_INIT_H
8*91f16700Schasinglulu #define PMIC_WRAP_INIT_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu #include <platform_def.h>
11*91f16700Schasinglulu 
12*91f16700Schasinglulu /* external API */
13*91f16700Schasinglulu int32_t pwrap_read(uint32_t adr, uint32_t *rdata);
14*91f16700Schasinglulu int32_t pwrap_write(uint32_t adr, uint32_t wdata);
15*91f16700Schasinglulu 
16*91f16700Schasinglulu static struct mt8173_pmic_wrap_regs *const mtk_pwrap =
17*91f16700Schasinglulu 	(void *)PMIC_WRAP_BASE;
18*91f16700Schasinglulu 
19*91f16700Schasinglulu /* timeout setting */
20*91f16700Schasinglulu enum {
21*91f16700Schasinglulu 	TIMEOUT_RESET       = 50,	/* us */
22*91f16700Schasinglulu 	TIMEOUT_READ        = 50,	/* us */
23*91f16700Schasinglulu 	TIMEOUT_WAIT_IDLE   = 50	/* us */
24*91f16700Schasinglulu };
25*91f16700Schasinglulu 
26*91f16700Schasinglulu /* PMIC_WRAP registers */
27*91f16700Schasinglulu struct mt8173_pmic_wrap_regs {
28*91f16700Schasinglulu 	uint32_t mux_sel;
29*91f16700Schasinglulu 	uint32_t wrap_en;
30*91f16700Schasinglulu 	uint32_t dio_en;
31*91f16700Schasinglulu 	uint32_t sidly;
32*91f16700Schasinglulu 	uint32_t rddmy;
33*91f16700Schasinglulu 	uint32_t si_ck_con;
34*91f16700Schasinglulu 	uint32_t cshext_write;
35*91f16700Schasinglulu 	uint32_t cshext_read;
36*91f16700Schasinglulu 	uint32_t cslext_start;
37*91f16700Schasinglulu 	uint32_t cslext_end;
38*91f16700Schasinglulu 	uint32_t staupd_prd;
39*91f16700Schasinglulu 	uint32_t staupd_grpen;
40*91f16700Schasinglulu 	uint32_t reserved[4];
41*91f16700Schasinglulu 	uint32_t staupd_man_trig;
42*91f16700Schasinglulu 	uint32_t staupd_sta;
43*91f16700Schasinglulu 	uint32_t wrap_sta;
44*91f16700Schasinglulu 	uint32_t harb_init;
45*91f16700Schasinglulu 	uint32_t harb_hprio;
46*91f16700Schasinglulu 	uint32_t hiprio_arb_en;
47*91f16700Schasinglulu 	uint32_t harb_sta0;
48*91f16700Schasinglulu 	uint32_t harb_sta1;
49*91f16700Schasinglulu 	uint32_t man_en;
50*91f16700Schasinglulu 	uint32_t man_cmd;
51*91f16700Schasinglulu 	uint32_t man_rdata;
52*91f16700Schasinglulu 	uint32_t man_vldclr;
53*91f16700Schasinglulu 	uint32_t wacs0_en;
54*91f16700Schasinglulu 	uint32_t init_done0;
55*91f16700Schasinglulu 	uint32_t wacs0_cmd;
56*91f16700Schasinglulu 	uint32_t wacs0_rdata;
57*91f16700Schasinglulu 	uint32_t wacs0_vldclr;
58*91f16700Schasinglulu 	uint32_t wacs1_en;
59*91f16700Schasinglulu 	uint32_t init_done1;
60*91f16700Schasinglulu 	uint32_t wacs1_cmd;
61*91f16700Schasinglulu 	uint32_t wacs1_rdata;
62*91f16700Schasinglulu 	uint32_t wacs1_vldclr;
63*91f16700Schasinglulu 	uint32_t wacs2_en;
64*91f16700Schasinglulu 	uint32_t init_done2;
65*91f16700Schasinglulu 	uint32_t wacs2_cmd;
66*91f16700Schasinglulu 	uint32_t wacs2_rdata;
67*91f16700Schasinglulu 	uint32_t wacs2_vldclr;
68*91f16700Schasinglulu 	uint32_t int_en;
69*91f16700Schasinglulu 	uint32_t int_flg_raw;
70*91f16700Schasinglulu 	uint32_t int_flg;
71*91f16700Schasinglulu 	uint32_t int_clr;
72*91f16700Schasinglulu 	uint32_t sig_adr;
73*91f16700Schasinglulu 	uint32_t sig_mode;
74*91f16700Schasinglulu 	uint32_t sig_value;
75*91f16700Schasinglulu 	uint32_t sig_errval;
76*91f16700Schasinglulu 	uint32_t crc_en;
77*91f16700Schasinglulu 	uint32_t timer_en;
78*91f16700Schasinglulu 	uint32_t timer_sta;
79*91f16700Schasinglulu 	uint32_t wdt_unit;
80*91f16700Schasinglulu 	uint32_t wdt_src_en;
81*91f16700Schasinglulu 	uint32_t wdt_flg;
82*91f16700Schasinglulu 	uint32_t debug_int_sel;
83*91f16700Schasinglulu 	uint32_t dvfs_adr0;
84*91f16700Schasinglulu 	uint32_t dvfs_wdata0;
85*91f16700Schasinglulu 	uint32_t dvfs_adr1;
86*91f16700Schasinglulu 	uint32_t dvfs_wdata1;
87*91f16700Schasinglulu 	uint32_t dvfs_adr2;
88*91f16700Schasinglulu 	uint32_t dvfs_wdata2;
89*91f16700Schasinglulu 	uint32_t dvfs_adr3;
90*91f16700Schasinglulu 	uint32_t dvfs_wdata3;
91*91f16700Schasinglulu 	uint32_t dvfs_adr4;
92*91f16700Schasinglulu 	uint32_t dvfs_wdata4;
93*91f16700Schasinglulu 	uint32_t dvfs_adr5;
94*91f16700Schasinglulu 	uint32_t dvfs_wdata5;
95*91f16700Schasinglulu 	uint32_t dvfs_adr6;
96*91f16700Schasinglulu 	uint32_t dvfs_wdata6;
97*91f16700Schasinglulu 	uint32_t dvfs_adr7;
98*91f16700Schasinglulu 	uint32_t dvfs_wdata7;
99*91f16700Schasinglulu 	uint32_t spminf_sta;
100*91f16700Schasinglulu 	uint32_t cipher_key_sel;
101*91f16700Schasinglulu 	uint32_t cipher_iv_sel;
102*91f16700Schasinglulu 	uint32_t cipher_en;
103*91f16700Schasinglulu 	uint32_t cipher_rdy;
104*91f16700Schasinglulu 	uint32_t cipher_mode;
105*91f16700Schasinglulu 	uint32_t cipher_swrst;
106*91f16700Schasinglulu 	uint32_t dcm_en;
107*91f16700Schasinglulu 	uint32_t dcm_dbc_prd;
108*91f16700Schasinglulu };
109*91f16700Schasinglulu 
110*91f16700Schasinglulu enum {
111*91f16700Schasinglulu 	RDATA_WACS_RDATA_SHIFT = 0,
112*91f16700Schasinglulu 	RDATA_WACS_FSM_SHIFT = 16,
113*91f16700Schasinglulu 	RDATA_WACS_REQ_SHIFT = 19,
114*91f16700Schasinglulu 	RDATA_SYNC_IDLE_SHIFT,
115*91f16700Schasinglulu 	RDATA_INIT_DONE_SHIFT,
116*91f16700Schasinglulu 	RDATA_SYS_IDLE_SHIFT,
117*91f16700Schasinglulu };
118*91f16700Schasinglulu 
119*91f16700Schasinglulu enum {
120*91f16700Schasinglulu 	RDATA_WACS_RDATA_MASK = 0xffff,
121*91f16700Schasinglulu 	RDATA_WACS_FSM_MASK = 0x7,
122*91f16700Schasinglulu 	RDATA_WACS_REQ_MASK = 0x1,
123*91f16700Schasinglulu 	RDATA_SYNC_IDLE_MASK = 0x1,
124*91f16700Schasinglulu 	RDATA_INIT_DONE_MASK = 0x1,
125*91f16700Schasinglulu 	RDATA_SYS_IDLE_MASK = 0x1,
126*91f16700Schasinglulu };
127*91f16700Schasinglulu 
128*91f16700Schasinglulu /* WACS_FSM */
129*91f16700Schasinglulu enum {
130*91f16700Schasinglulu 	WACS_FSM_IDLE            = 0x00,
131*91f16700Schasinglulu 	WACS_FSM_REQ             = 0x02,
132*91f16700Schasinglulu 	WACS_FSM_WFDLE           = 0x04,
133*91f16700Schasinglulu 	WACS_FSM_WFVLDCLR        = 0x06,
134*91f16700Schasinglulu 	WACS_INIT_DONE           = 0x01,
135*91f16700Schasinglulu 	WACS_SYNC_IDLE           = 0x01,
136*91f16700Schasinglulu 	WACS_SYNC_BUSY           = 0x00
137*91f16700Schasinglulu };
138*91f16700Schasinglulu 
139*91f16700Schasinglulu /* error information flag */
140*91f16700Schasinglulu enum {
141*91f16700Schasinglulu 	E_PWR_INVALID_ARG             = 1,
142*91f16700Schasinglulu 	E_PWR_INVALID_RW              = 2,
143*91f16700Schasinglulu 	E_PWR_INVALID_ADDR            = 3,
144*91f16700Schasinglulu 	E_PWR_INVALID_WDAT            = 4,
145*91f16700Schasinglulu 	E_PWR_INVALID_OP_MANUAL       = 5,
146*91f16700Schasinglulu 	E_PWR_NOT_IDLE_STATE          = 6,
147*91f16700Schasinglulu 	E_PWR_NOT_INIT_DONE           = 7,
148*91f16700Schasinglulu 	E_PWR_NOT_INIT_DONE_READ      = 8,
149*91f16700Schasinglulu 	E_PWR_WAIT_IDLE_TIMEOUT       = 9,
150*91f16700Schasinglulu 	E_PWR_WAIT_IDLE_TIMEOUT_READ  = 10,
151*91f16700Schasinglulu 	E_PWR_INIT_SIDLY_FAIL         = 11,
152*91f16700Schasinglulu 	E_PWR_RESET_TIMEOUT           = 12,
153*91f16700Schasinglulu 	E_PWR_TIMEOUT                 = 13,
154*91f16700Schasinglulu 	E_PWR_INIT_RESET_SPI          = 20,
155*91f16700Schasinglulu 	E_PWR_INIT_SIDLY              = 21,
156*91f16700Schasinglulu 	E_PWR_INIT_REG_CLOCK          = 22,
157*91f16700Schasinglulu 	E_PWR_INIT_ENABLE_PMIC        = 23,
158*91f16700Schasinglulu 	E_PWR_INIT_DIO                = 24,
159*91f16700Schasinglulu 	E_PWR_INIT_CIPHER             = 25,
160*91f16700Schasinglulu 	E_PWR_INIT_WRITE_TEST         = 26,
161*91f16700Schasinglulu 	E_PWR_INIT_ENABLE_CRC         = 27,
162*91f16700Schasinglulu 	E_PWR_INIT_ENABLE_DEWRAP      = 28,
163*91f16700Schasinglulu 	E_PWR_INIT_ENABLE_EVENT       = 29,
164*91f16700Schasinglulu 	E_PWR_READ_TEST_FAIL          = 30,
165*91f16700Schasinglulu 	E_PWR_WRITE_TEST_FAIL         = 31,
166*91f16700Schasinglulu 	E_PWR_SWITCH_DIO              = 32
167*91f16700Schasinglulu };
168*91f16700Schasinglulu 
169*91f16700Schasinglulu #endif /* PMIC_WRAP_INIT_H */
170