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