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