xref: /rk3399_ARM-atf/plat/mediatek/mt8173/drivers/pmic/pmic_wrap_init.h (revision 3ea2cc00fc0fdeef0e84a80202964609479349cd)
17d116dccSCC Ma /*
27d116dccSCC Ma  * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved.
37d116dccSCC Ma  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
57d116dccSCC Ma  */
67d116dccSCC Ma 
7c3cf06f1SAntonio Nino Diaz #ifndef PMIC_WRAP_INIT_H
8c3cf06f1SAntonio Nino Diaz #define PMIC_WRAP_INIT_H
97d116dccSCC Ma 
10*f389d0e9Skenny liang #include <platform_def.h>
11*f389d0e9Skenny liang 
127d116dccSCC Ma /* external API */
137d116dccSCC Ma int32_t pwrap_read(uint32_t adr, uint32_t *rdata);
147d116dccSCC Ma int32_t pwrap_write(uint32_t adr, uint32_t wdata);
157d116dccSCC Ma 
16*f389d0e9Skenny liang static struct mt8173_pmic_wrap_regs *const mtk_pwrap =
177d116dccSCC Ma 	(void *)PMIC_WRAP_BASE;
187d116dccSCC Ma 
197d116dccSCC Ma /* timeout setting */
207d116dccSCC Ma enum {
217d116dccSCC Ma 	TIMEOUT_RESET       = 50,	/* us */
227d116dccSCC Ma 	TIMEOUT_READ        = 50,	/* us */
237d116dccSCC Ma 	TIMEOUT_WAIT_IDLE   = 50	/* us */
247d116dccSCC Ma };
257d116dccSCC Ma 
267d116dccSCC Ma /* PMIC_WRAP registers */
277d116dccSCC Ma struct mt8173_pmic_wrap_regs {
287d116dccSCC Ma 	uint32_t mux_sel;
297d116dccSCC Ma 	uint32_t wrap_en;
307d116dccSCC Ma 	uint32_t dio_en;
317d116dccSCC Ma 	uint32_t sidly;
327d116dccSCC Ma 	uint32_t rddmy;
337d116dccSCC Ma 	uint32_t si_ck_con;
347d116dccSCC Ma 	uint32_t cshext_write;
357d116dccSCC Ma 	uint32_t cshext_read;
367d116dccSCC Ma 	uint32_t cslext_start;
377d116dccSCC Ma 	uint32_t cslext_end;
387d116dccSCC Ma 	uint32_t staupd_prd;
397d116dccSCC Ma 	uint32_t staupd_grpen;
407d116dccSCC Ma 	uint32_t reserved[4];
417d116dccSCC Ma 	uint32_t staupd_man_trig;
427d116dccSCC Ma 	uint32_t staupd_sta;
437d116dccSCC Ma 	uint32_t wrap_sta;
447d116dccSCC Ma 	uint32_t harb_init;
457d116dccSCC Ma 	uint32_t harb_hprio;
467d116dccSCC Ma 	uint32_t hiprio_arb_en;
477d116dccSCC Ma 	uint32_t harb_sta0;
487d116dccSCC Ma 	uint32_t harb_sta1;
497d116dccSCC Ma 	uint32_t man_en;
507d116dccSCC Ma 	uint32_t man_cmd;
517d116dccSCC Ma 	uint32_t man_rdata;
527d116dccSCC Ma 	uint32_t man_vldclr;
537d116dccSCC Ma 	uint32_t wacs0_en;
547d116dccSCC Ma 	uint32_t init_done0;
557d116dccSCC Ma 	uint32_t wacs0_cmd;
567d116dccSCC Ma 	uint32_t wacs0_rdata;
577d116dccSCC Ma 	uint32_t wacs0_vldclr;
587d116dccSCC Ma 	uint32_t wacs1_en;
597d116dccSCC Ma 	uint32_t init_done1;
607d116dccSCC Ma 	uint32_t wacs1_cmd;
617d116dccSCC Ma 	uint32_t wacs1_rdata;
627d116dccSCC Ma 	uint32_t wacs1_vldclr;
637d116dccSCC Ma 	uint32_t wacs2_en;
647d116dccSCC Ma 	uint32_t init_done2;
657d116dccSCC Ma 	uint32_t wacs2_cmd;
667d116dccSCC Ma 	uint32_t wacs2_rdata;
677d116dccSCC Ma 	uint32_t wacs2_vldclr;
687d116dccSCC Ma 	uint32_t int_en;
697d116dccSCC Ma 	uint32_t int_flg_raw;
707d116dccSCC Ma 	uint32_t int_flg;
717d116dccSCC Ma 	uint32_t int_clr;
727d116dccSCC Ma 	uint32_t sig_adr;
737d116dccSCC Ma 	uint32_t sig_mode;
747d116dccSCC Ma 	uint32_t sig_value;
757d116dccSCC Ma 	uint32_t sig_errval;
767d116dccSCC Ma 	uint32_t crc_en;
777d116dccSCC Ma 	uint32_t timer_en;
787d116dccSCC Ma 	uint32_t timer_sta;
797d116dccSCC Ma 	uint32_t wdt_unit;
807d116dccSCC Ma 	uint32_t wdt_src_en;
817d116dccSCC Ma 	uint32_t wdt_flg;
827d116dccSCC Ma 	uint32_t debug_int_sel;
837d116dccSCC Ma 	uint32_t dvfs_adr0;
847d116dccSCC Ma 	uint32_t dvfs_wdata0;
857d116dccSCC Ma 	uint32_t dvfs_adr1;
867d116dccSCC Ma 	uint32_t dvfs_wdata1;
877d116dccSCC Ma 	uint32_t dvfs_adr2;
887d116dccSCC Ma 	uint32_t dvfs_wdata2;
897d116dccSCC Ma 	uint32_t dvfs_adr3;
907d116dccSCC Ma 	uint32_t dvfs_wdata3;
917d116dccSCC Ma 	uint32_t dvfs_adr4;
927d116dccSCC Ma 	uint32_t dvfs_wdata4;
937d116dccSCC Ma 	uint32_t dvfs_adr5;
947d116dccSCC Ma 	uint32_t dvfs_wdata5;
957d116dccSCC Ma 	uint32_t dvfs_adr6;
967d116dccSCC Ma 	uint32_t dvfs_wdata6;
977d116dccSCC Ma 	uint32_t dvfs_adr7;
987d116dccSCC Ma 	uint32_t dvfs_wdata7;
997d116dccSCC Ma 	uint32_t spminf_sta;
1007d116dccSCC Ma 	uint32_t cipher_key_sel;
1017d116dccSCC Ma 	uint32_t cipher_iv_sel;
1027d116dccSCC Ma 	uint32_t cipher_en;
1037d116dccSCC Ma 	uint32_t cipher_rdy;
1047d116dccSCC Ma 	uint32_t cipher_mode;
1057d116dccSCC Ma 	uint32_t cipher_swrst;
1067d116dccSCC Ma 	uint32_t dcm_en;
1077d116dccSCC Ma 	uint32_t dcm_dbc_prd;
1087d116dccSCC Ma };
1097d116dccSCC Ma 
1107d116dccSCC Ma enum {
1117d116dccSCC Ma 	RDATA_WACS_RDATA_SHIFT = 0,
1127d116dccSCC Ma 	RDATA_WACS_FSM_SHIFT = 16,
1137d116dccSCC Ma 	RDATA_WACS_REQ_SHIFT = 19,
1147d116dccSCC Ma 	RDATA_SYNC_IDLE_SHIFT,
1157d116dccSCC Ma 	RDATA_INIT_DONE_SHIFT,
1167d116dccSCC Ma 	RDATA_SYS_IDLE_SHIFT,
1177d116dccSCC Ma };
1187d116dccSCC Ma 
1197d116dccSCC Ma enum {
1207d116dccSCC Ma 	RDATA_WACS_RDATA_MASK = 0xffff,
1217d116dccSCC Ma 	RDATA_WACS_FSM_MASK = 0x7,
1227d116dccSCC Ma 	RDATA_WACS_REQ_MASK = 0x1,
1237d116dccSCC Ma 	RDATA_SYNC_IDLE_MASK = 0x1,
1247d116dccSCC Ma 	RDATA_INIT_DONE_MASK = 0x1,
1257d116dccSCC Ma 	RDATA_SYS_IDLE_MASK = 0x1,
1267d116dccSCC Ma };
1277d116dccSCC Ma 
1287d116dccSCC Ma /* WACS_FSM */
1297d116dccSCC Ma enum {
1307d116dccSCC Ma 	WACS_FSM_IDLE            = 0x00,
1317d116dccSCC Ma 	WACS_FSM_REQ             = 0x02,
1327d116dccSCC Ma 	WACS_FSM_WFDLE           = 0x04,
1337d116dccSCC Ma 	WACS_FSM_WFVLDCLR        = 0x06,
1347d116dccSCC Ma 	WACS_INIT_DONE           = 0x01,
1357d116dccSCC Ma 	WACS_SYNC_IDLE           = 0x01,
1367d116dccSCC Ma 	WACS_SYNC_BUSY           = 0x00
1377d116dccSCC Ma };
1387d116dccSCC Ma 
1397d116dccSCC Ma /* error information flag */
1407d116dccSCC Ma enum {
1417d116dccSCC Ma 	E_PWR_INVALID_ARG             = 1,
1427d116dccSCC Ma 	E_PWR_INVALID_RW              = 2,
1437d116dccSCC Ma 	E_PWR_INVALID_ADDR            = 3,
1447d116dccSCC Ma 	E_PWR_INVALID_WDAT            = 4,
1457d116dccSCC Ma 	E_PWR_INVALID_OP_MANUAL       = 5,
1467d116dccSCC Ma 	E_PWR_NOT_IDLE_STATE          = 6,
1477d116dccSCC Ma 	E_PWR_NOT_INIT_DONE           = 7,
1487d116dccSCC Ma 	E_PWR_NOT_INIT_DONE_READ      = 8,
1497d116dccSCC Ma 	E_PWR_WAIT_IDLE_TIMEOUT       = 9,
1507d116dccSCC Ma 	E_PWR_WAIT_IDLE_TIMEOUT_READ  = 10,
1517d116dccSCC Ma 	E_PWR_INIT_SIDLY_FAIL         = 11,
1527d116dccSCC Ma 	E_PWR_RESET_TIMEOUT           = 12,
1537d116dccSCC Ma 	E_PWR_TIMEOUT                 = 13,
1547d116dccSCC Ma 	E_PWR_INIT_RESET_SPI          = 20,
1557d116dccSCC Ma 	E_PWR_INIT_SIDLY              = 21,
1567d116dccSCC Ma 	E_PWR_INIT_REG_CLOCK          = 22,
1577d116dccSCC Ma 	E_PWR_INIT_ENABLE_PMIC        = 23,
1587d116dccSCC Ma 	E_PWR_INIT_DIO                = 24,
1597d116dccSCC Ma 	E_PWR_INIT_CIPHER             = 25,
1607d116dccSCC Ma 	E_PWR_INIT_WRITE_TEST         = 26,
1617d116dccSCC Ma 	E_PWR_INIT_ENABLE_CRC         = 27,
1627d116dccSCC Ma 	E_PWR_INIT_ENABLE_DEWRAP      = 28,
1637d116dccSCC Ma 	E_PWR_INIT_ENABLE_EVENT       = 29,
1647d116dccSCC Ma 	E_PWR_READ_TEST_FAIL          = 30,
1657d116dccSCC Ma 	E_PWR_WRITE_TEST_FAIL         = 31,
1667d116dccSCC Ma 	E_PWR_SWITCH_DIO              = 32
1677d116dccSCC Ma };
1687d116dccSCC Ma 
169c3cf06f1SAntonio Nino Diaz #endif /* PMIC_WRAP_INIT_H */
170