<p>Tristan Hsieh has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/29421">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">mediatek/mt8183: Add PMIC wrapper support<br><br>BUG=b:80501386<br>BRANCH=none<br>TEST=Boots correctly on Kukui<br><br>Change-Id: Idbdb15f11227ded3f5d18fe6504c8c646973b733<br>Signed-off-by: Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com><br>---<br>M src/soc/mediatek/mt8183/Makefile.inc<br>M src/soc/mediatek/mt8183/include/soc/addressmap.h<br>A src/soc/mediatek/mt8183/include/soc/pmic_wrap.h<br>A src/soc/mediatek/mt8183/pmic_wrap.c<br>4 files changed, 883 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/21/29421/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/soc/mediatek/mt8183/Makefile.inc b/src/soc/mediatek/mt8183/Makefile.inc</span><br><span>index 5650465..e8efe90 100644</span><br><span>--- a/src/soc/mediatek/mt8183/Makefile.inc</span><br><span>+++ b/src/soc/mediatek/mt8183/Makefile.inc</span><br><span>@@ -34,6 +34,7 @@</span><br><span> ramstage-y += ../common/gpio.c gpio.c</span><br><span> ramstage-y += ../common/mmu_operations.c mmu_operations.c</span><br><span> ramstage-y += ../common/mtcmos.c mtcmos.c</span><br><span style="color: hsl(120, 100%, 40%);">+ramstage-y += ../common/pmic_wrap.c pmic_wrap.c</span><br><span> ramstage-y += soc.c</span><br><span> ramstage-$(CONFIG_SPI_FLASH) += ../common/spi.c spi.c</span><br><span> ramstage-y += ../common/timer.c</span><br><span>diff --git a/src/soc/mediatek/mt8183/include/soc/addressmap.h b/src/soc/mediatek/mt8183/include/soc/addressmap.h</span><br><span>index 1ba9cc8..78c6cf4 100644</span><br><span>--- a/src/soc/mediatek/mt8183/include/soc/addressmap.h</span><br><span>+++ b/src/soc/mediatek/mt8183/include/soc/addressmap.h</span><br><span>@@ -29,6 +29,7 @@</span><br><span>         RGU_BASE                = IO_PHYS + 0x00007000,</span><br><span>      GPT_BASE                = IO_PHYS + 0x00008000,</span><br><span>      APMIXED_BASE            = IO_PHYS + 0x0000C000,</span><br><span style="color: hsl(120, 100%, 40%);">+       PWRAP_BASE              = IO_PHYS + 0x0000D000,</span><br><span>      EMI_BASE                = IO_PHYS + 0x00219000,</span><br><span>      EMI_MPU_BASE            = IO_PHYS + 0x00226000,</span><br><span>      DRAMC_CH_BASE           = IO_PHYS + 0x00228000,</span><br><span>diff --git a/src/soc/mediatek/mt8183/include/soc/pmic_wrap.h b/src/soc/mediatek/mt8183/include/soc/pmic_wrap.h</span><br><span>new file mode 100644</span><br><span>index 0000000..a995038</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/include/soc/pmic_wrap.h</span><br><span>@@ -0,0 +1,570 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef __SOC_MEDIATEK_MT8183_PMIC_WRAP_H__</span><br><span style="color: hsl(120, 100%, 40%);">+#define __SOC_MEDIATEK_MT8183_PMIC_WRAP_H__</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/addressmap.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/pmic_wrap_common.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <types.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+struct mt8183_pwrap_regs {</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 mux_sel;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 wrap_en;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 dio_en;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 si_sample_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 si_sample_ctrl_ulposc;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 rddmy;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 cshext_write;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 cshext_read;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 cslext_write;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 cslext_read;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 ext_ck_write;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 ext_ck_read;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 staupd_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 staupd_grpen;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 eint_sta0_adr;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 eint_sta1_adr;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 eint_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 eint_clr;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 eint_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 staupd_man_trig;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 staupd_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 wrap_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 harb_init;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 harb_hprio;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 hiprio_arb_en;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 harb_sta0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 harb_sta1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 harb_sta2;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 man_en;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 man_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 man_rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 man_vldclr;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 wacs0_en;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 init_done0;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 wacs1_en;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 init_done1;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 wacs2_en;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 init_done2;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 wacs3_en;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 init_done3;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 wacs_p2p_en;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 init_done_p2p;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 wacs_md32_en;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 init_done_md32;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 int0_en;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 int0_flg_raw;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 int0_flg;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 int0_clr;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 int1_en;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 int1_flg_raw;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 int1_flg;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 int1_clr;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 sig_adr;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 sig_mode;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 sig_value;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 sig_errval;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 crc_en;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 timer_en;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 timer_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wdt_unit;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdt_src_en_0;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 wdt_src_en_1;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 wdt_flg_0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wdt_flg_1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 debug_int_sel;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 dvfs_adr0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata0;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata1;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr2;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata2;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr3;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata3;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr4;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata4;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr5;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata5;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr6;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata6;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr7;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata7;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr8;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata8;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr9;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 dvfs_wdata9;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dvfs_adr10;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 dvfs_wdata10;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dvfs_adr11;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 dvfs_wdata11;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dvfs_adr12;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 dvfs_wdata12;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dvfs_adr13;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 dvfs_wdata13;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dvfs_adr14;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 dvfs_wdata14;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dvfs_adr15;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 dvfs_wdata15;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dcxo_enable;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 dcxo_conn_adr0;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 dcxo_conn_wdata0;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 dcxo_conn_adr1;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 dcxo_conn_wdata1;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 dcxo_nfc_adr0;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 dcxo_nfc_wdata0;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 dcxo_nfc_adr1;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 dcxo_nfc_wdata1;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 spminf_sta_0;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 spminf_sta_1;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 spminf_backup_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 scpinf_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 cipher_key_sel;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cipher_iv_sel;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 cipher_en;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 cipher_rdy;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 cipher_mode;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 cipher_swrst;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 dcm_en;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 dcm_spi_dbc_prd;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 dcm_dbc_prd;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 int_gps_auxadc_cmd_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 int_gps_auxadc_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 int_gps_auxadc_rdata_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 ext_gps_auxadc_rdata_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 gpsinf_0_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 gpsinf_1_sta;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 md_adcinf_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 md_auxadc_rdata_latest_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 md_auxadc_rdata_wp_addr;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 md_auxadc_rdata[32];</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 md_adcinf_0_sta_0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 md_adcinf_0_sta_1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 md_adcinf_1_sta_0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 md_adcinf_1_sta_1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 swrst;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 spm_sleep_gating_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 scp_sleep_gating_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+    u32 priority_user_sel_0;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 priority_user_sel_1;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 priority_user_sel_2;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 priority_user_sel_3;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 priority_user_sel_4;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 arbiter_out_sel_0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 arbiter_out_sel_1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 arbiter_out_sel_2;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 arbiter_out_sel_3;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 arbiter_out_sel_4;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 starv_counter_0;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_1;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_2;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_3;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_4;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_5;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_6;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_7;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_8;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_9;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_10;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_11;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_12;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_13;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_14;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_15;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_16;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 starv_counter_0_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_1_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_2_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_3_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_4_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_5_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_6_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_7_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_8_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_9_status;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 starv_counter_10_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_11_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_12_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_13_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_14_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_15_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_16_status;</span><br><span style="color: hsl(120, 100%, 40%);">+  u32 starv_counter_clr;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 starv_prio_status;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 monitor_ctrl_0;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 monitor_ctrl_1;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 monitor_ctrl_2;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 monitor_ctrl_3;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 channel_sequence_0;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 channel_sequence_1;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 channel_sequence_2;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 channel_sequence_3;</span><br><span style="color: hsl(120, 100%, 40%);">+       u32 cmd_sequence_0;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_1;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_2;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_3;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_4;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_5;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_6;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 cmd_sequence_7;</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 wdata_sequence_0;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_1;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_2;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_3;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_4;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_5;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_6;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 wdata_sequence_7;</span><br><span style="color: hsl(120, 100%, 40%);">+ u32 debug_sw_driver_0;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 debug_sw_driver_1;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 debug_sw_driver_2;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 debug_sw_driver_3;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 debug_sw_driver_4;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 debug_sw_driver_5;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 bwc_options;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 reserved1[524];</span><br><span style="color: hsl(120, 100%, 40%);">+   u32 wacs0_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs0_rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 wacs0_vldclr;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 reserved2;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs1_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs1_rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 wacs1_vldclr;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 reserved3;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs2_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs2_rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 wacs2_vldclr;</span><br><span style="color: hsl(120, 100%, 40%);">+     u32 reserved4;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs3_cmd;</span><br><span style="color: hsl(120, 100%, 40%);">+        u32 wacs3_rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 wacs3_vldclr;</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, mux_sel, 0x0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wrap_en, 0x4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dio_en, 0x8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, si_sample_ctrl, 0xC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, si_sample_ctrl_ulposc, 0x10);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, rddmy, 0x14);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cshext_write, 0x18);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cshext_read, 0x1C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cslext_write, 0x20);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cslext_read, 0x24);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, ext_ck_write, 0x28);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, ext_ck_read, 0x2C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, staupd_ctrl, 0x30);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, staupd_grpen, 0x34);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, eint_sta0_adr, 0x38);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, eint_sta1_adr, 0x3C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, eint_sta, 0x40);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, eint_clr, 0x44);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, eint_ctrl, 0x48);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, staupd_man_trig, 0x4C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, staupd_sta, 0x50);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wrap_sta, 0x54);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, harb_init, 0x58);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, harb_hprio, 0x5C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, hiprio_arb_en, 0x60);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, harb_sta0, 0x64);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, harb_sta1, 0x68);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, harb_sta2, 0x6C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, man_en, 0x70);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, man_cmd, 0x74);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, man_rdata, 0x78);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, man_vldclr, 0x7C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs0_en, 0x80);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, init_done0, 0x84);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs1_en, 0x88);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, init_done1, 0x8C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs2_en, 0x90);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, init_done2, 0x94);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs3_en, 0x98);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, init_done3, 0x9C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs_p2p_en, 0xA0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, init_done_p2p, 0xA4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs_md32_en, 0xA8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, init_done_md32, 0xAC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int0_en, 0xB0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int0_flg_raw, 0xB4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int0_flg, 0xB8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int0_clr, 0xBC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int1_en, 0xC0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int1_flg_raw, 0xC4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int1_flg, 0xC8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int1_clr, 0xCC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, sig_adr, 0xD0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, sig_mode, 0xD4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, sig_value, 0xD8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, sig_errval, 0xDC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, crc_en, 0xE0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, timer_en, 0xE4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, timer_sta, 0xE8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdt_unit, 0xEC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdt_src_en_0, 0xF0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdt_src_en_1, 0xF4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdt_flg_0, 0xF8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdt_flg_1, 0xFC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_int_sel, 0x100);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr0, 0x104);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata0, 0x108);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr1, 0x10C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata1, 0x110);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr2, 0x114);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata2, 0x118);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr3, 0x11C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata3, 0x120);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr4, 0x124);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata4, 0x128);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr5, 0x12C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata5, 0x130);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr6, 0x134);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata6, 0x138);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr7, 0x13C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata7, 0x140);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr8, 0x144);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata8, 0x148);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr9, 0x14C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata9, 0x150);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr10, 0x154);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata10, 0x158);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr11, 0x15C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata11, 0x160);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr12, 0x164);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata12, 0x168);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr13, 0x16C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata13, 0x170);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr14, 0x174);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata14, 0x178);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_adr15, 0x17C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dvfs_wdata15, 0x180);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_enable, 0x184);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_conn_adr0, 0x188);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_conn_wdata0, 0x18C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_conn_adr1, 0x190);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_conn_wdata1, 0x194);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_nfc_adr0, 0x198);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_nfc_wdata0, 0x19C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_nfc_adr1, 0x1A0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcxo_nfc_wdata1, 0x1A4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, spminf_sta_0, 0x1A8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, spminf_sta_1, 0x1AC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, spminf_backup_sta, 0x1B0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, scpinf_sta, 0x1B4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cipher_key_sel, 0x1B8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cipher_iv_sel, 0x1BC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cipher_en, 0x1C0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cipher_rdy, 0x1C4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cipher_mode, 0x1C8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cipher_swrst, 0x1CC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcm_en, 0x1D0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcm_spi_dbc_prd, 0x1D4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, dcm_dbc_prd, 0x1D8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int_gps_auxadc_cmd_addr, 0x1DC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int_gps_auxadc_cmd, 0x1E0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, int_gps_auxadc_rdata_addr, 0x1E4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, ext_gps_auxadc_rdata_addr, 0x1E8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, gpsinf_0_sta, 0x1EC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, gpsinf_1_sta, 0x1F0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_adcinf_ctrl, 0x1F4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata_latest_addr, 0x1F8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata_wp_addr, 0x1FC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[0], 0x200);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[1], 0x204);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[2], 0x208);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[3], 0x20C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[4], 0x210);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[5], 0x214);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[6], 0x218);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[7], 0x21C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[8], 0x220);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[9], 0x224);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[10], 0x228);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[11], 0x22C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[12], 0x230);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[13], 0x234);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[14], 0x238);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[15], 0x23C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[16], 0x240);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[17], 0x244);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[18], 0x248);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[19], 0x24C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[20], 0x250);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[21], 0x254);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[22], 0x258);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[23], 0x25C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[24], 0x260);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[25], 0x264);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[26], 0x268);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[27], 0x26C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[28], 0x270);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[29], 0x274);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[30], 0x278);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_auxadc_rdata[31], 0x27C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_adcinf_0_sta_0, 0x280);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_adcinf_0_sta_1, 0x284);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_adcinf_1_sta_0, 0x288);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, md_adcinf_1_sta_1, 0x28C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, swrst, 0x290);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, spm_sleep_gating_ctrl, 0x294);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, scp_sleep_gating_ctrl, 0x298);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, priority_user_sel_0, 0x29C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, priority_user_sel_1, 0x2A0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, priority_user_sel_2, 0x2A4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, priority_user_sel_3, 0x2A8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, priority_user_sel_4, 0x2AC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, arbiter_out_sel_0, 0x2B0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, arbiter_out_sel_1, 0x2B4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, arbiter_out_sel_2, 0x2B8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, arbiter_out_sel_3, 0x2BC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, arbiter_out_sel_4, 0x2C0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_0, 0x2C4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_1, 0x2C8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_2, 0x2CC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_3, 0x2D0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_4, 0x2D4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_5, 0x2D8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_6, 0x2DC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_7, 0x2E0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_8, 0x2E4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_9, 0x2E8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_10, 0x2EC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_11, 0x2F0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_12, 0x2F4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_13, 0x2F8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_14, 0x2FC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_15, 0x300);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_16, 0x304);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_0_status, 0x308);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_1_status, 0x30C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_2_status, 0x310);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_3_status, 0x314);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_4_status, 0x318);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_5_status, 0x31C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_6_status, 0x320);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_7_status, 0x324);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_8_status, 0x328);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_9_status, 0x32C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_10_status, 0x330);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_11_status, 0x334);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_12_status, 0x338);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_13_status, 0x33C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_14_status, 0x340);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_15_status, 0x344);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_16_status, 0x348);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_counter_clr, 0x34C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, starv_prio_status, 0x350);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, monitor_ctrl_0, 0x354);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, monitor_ctrl_1, 0x358);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, monitor_ctrl_2, 0x35C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, monitor_ctrl_3, 0x360);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, channel_sequence_0, 0x364);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, channel_sequence_1, 0x368);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, channel_sequence_2, 0x36C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, channel_sequence_3, 0x370);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_0, 0x374);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_1, 0x378);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_2, 0x37C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_3, 0x380);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_4, 0x384);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_5, 0x388);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_6, 0x38C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, cmd_sequence_7, 0x390);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_0, 0x394);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_1, 0x398);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_2, 0x39C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_3, 0x3A0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_4, 0x3A4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_5, 0x3A8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_6, 0x3AC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wdata_sequence_7, 0x3B0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_sw_driver_0, 0x3B4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_sw_driver_1, 0x3B8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_sw_driver_2, 0x3BC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_sw_driver_3, 0x3C0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_sw_driver_4, 0x3C4);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, debug_sw_driver_5, 0x3C8);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, bwc_options, 0x3CC);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, reserved1, 0x3D0);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs0_cmd, 0xC00);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs0_rdata, 0xC04);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs0_vldclr, 0xC08);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, reserved2, 0xC0C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs1_cmd, 0xC10);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs1_rdata, 0xC14);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs1_vldclr, 0xC18);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, reserved3, 0xC1C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs2_cmd, 0xC20);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs2_rdata, 0xC24);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs2_vldclr, 0xC28);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, reserved4, 0xC2C);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs3_cmd, 0xC30);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs3_rdata, 0xC34);</span><br><span style="color: hsl(120, 100%, 40%);">+check_member(mt8183_pwrap_regs, wacs3_vldclr, 0xC38);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static struct mt8183_pwrap_regs * const mtk_pwrap = (void *)PWRAP_BASE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum {</span><br><span style="color: hsl(120, 100%, 40%);">+      WACS2 = 1 << 2</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* PMIC registers */</span><br><span style="color: hsl(120, 100%, 40%);">+enum {</span><br><span style="color: hsl(120, 100%, 40%);">+      PMIC_BASE                     = 0x0000,</span><br><span style="color: hsl(120, 100%, 40%);">+       PMIC_SMT_CON1                 = PMIC_BASE + 0x0030,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DRV_CON1                 = PMIC_BASE + 0x0038,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_FILTER_CON0              = PMIC_BASE + 0x0040,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_GPIO_PULLEN0_CLR         = PMIC_BASE + 0x0098,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON0              = PMIC_BASE + 0x0408,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_RECORD0           = PMIC_BASE + 0x040A,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DEW_DIO_EN               = PMIC_BASE + 0x040C,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DEW_READ_TEST            = PMIC_BASE + 0x040E,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DEW_WRITE_TEST           = PMIC_BASE + 0x0410,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DEW_CRC_EN               = PMIC_BASE + 0x0414,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DEW_CRC_VAL              = PMIC_BASE + 0x0416,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_DEW_RDDMY_NO             = PMIC_BASE + 0x0426,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_CPU_INT_STA              = PMIC_BASE + 0x042E,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON2              = PMIC_BASE + 0x0432,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON3              = PMIC_BASE + 0x0434,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON4              = PMIC_BASE + 0x0436,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON5              = PMIC_BASE + 0x0438,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON6              = PMIC_BASE + 0x043A,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON7              = PMIC_BASE + 0x043C,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON8              = PMIC_BASE + 0x043E,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_RG_SPI_CON13             = PMIC_BASE + 0x0448,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_SPISLV_KEY               = PMIC_BASE + 0x044A,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_PPCCTL0                  = PMIC_BASE + 0x0A08,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_AUXADC_ADC17             = PMIC_BASE + 0x10AA,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_AUXADC_ADC31             = PMIC_BASE + 0x10C6,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_AUXADC_ADC32             = PMIC_BASE + 0x10C8,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_AUXADC_ADC35             = PMIC_BASE + 0x10CE,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_AUXADC_RQST0             = PMIC_BASE + 0x1108,</span><br><span style="color: hsl(120, 100%, 40%);">+   PMIC_AUXADC_RQST1             = PMIC_BASE + 0x110A,</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum {</span><br><span style="color: hsl(120, 100%, 40%);">+     E_CLK_EDGE = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+       E_CLK_LAST_SETTING</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum pmic_regck {</span><br><span style="color: hsl(120, 100%, 40%);">+   REG_CLOCK_18MHZ = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+  REG_CLOCK_SAFE_MODE</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+enum {</span><br><span style="color: hsl(120, 100%, 40%);">+     GPS_MAIN = 0x40,</span><br><span style="color: hsl(120, 100%, 40%);">+      GPS_SUBSYS = 0x80</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+#endif /* __SOC_MEDIATEK_MT8183_PMIC_WRAP_H__ */</span><br><span>diff --git a/src/soc/mediatek/mt8183/pmic_wrap.c b/src/soc/mediatek/mt8183/pmic_wrap.c</span><br><span>new file mode 100644</span><br><span>index 0000000..bad979a</span><br><span>--- /dev/null</span><br><span>+++ b/src/soc/mediatek/mt8183/pmic_wrap.c</span><br><span>@@ -0,0 +1,311 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * This file is part of the coreboot project.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * Copyright 2018 MediaTek Inc.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is free software; you can redistribute it and/or modify</span><br><span style="color: hsl(120, 100%, 40%);">+ * it under the terms of the GNU General Public License as published by</span><br><span style="color: hsl(120, 100%, 40%);">+ * the Free Software Foundation; version 2 of the License.</span><br><span style="color: hsl(120, 100%, 40%);">+ *</span><br><span style="color: hsl(120, 100%, 40%);">+ * This program is distributed in the hope that it will be useful,</span><br><span style="color: hsl(120, 100%, 40%);">+ * but WITHOUT ANY WARRANTY; without even the implied warranty of</span><br><span style="color: hsl(120, 100%, 40%);">+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span><br><span style="color: hsl(120, 100%, 40%);">+ * GNU General Public License for more details.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <arch/io.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/infracfg.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/pll.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <soc/pmic_wrap.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_soft_reset(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mt8183_infracfg->infra_globalcon_rst2_set, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mt8183_infracfg->infra_globalcon_rst2_clr, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_spi_clk_set(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_topckgen->clk_cfg_5_clr, 0x93000000);</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mtk_topckgen->clk_cfg_5_set, 0x1 << 24);</span><br><span style="color: hsl(120, 100%, 40%);">+        write32(&mtk_topckgen->clk_cfg_update, 0x1 << 23);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mt8183_infracfg->module_sw_cg_0_set, 0x0000000F);</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mt8183_infracfg->module_sw_cg_2_set, 0x00000100);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   pwrap_soft_reset();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mt8183_infracfg->module_sw_cg_0_clr, 0x0000000F);</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mt8183_infracfg->module_sw_cg_2_clr, 0x00000100);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static s32 pwrap_init_dio(u16 dio_en)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      u32 rdata = 0x0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    pwrap_write_nochk(PMIC_DEW_DIO_EN, dio_en);</span><br><span style="color: hsl(120, 100%, 40%);">+   do {</span><br><span style="color: hsl(120, 100%, 40%);">+          rdata = read32(&mtk_pwrap->wacs2_rdata);</span><br><span style="color: hsl(120, 100%, 40%);">+       } while (wait_for_idle_and_sync(rdata));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->dio_en, dio_en);</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_lock_spislvreg(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+     pwrap_write_nochk(PMIC_SPISLV_KEY, 0x0);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_initstaupd(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->staupd_grpen, 0xf5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* CRC */</span><br><span style="color: hsl(120, 100%, 40%);">+     pwrap_write_nochk(PMIC_DEW_CRC_EN, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mtk_pwrap->crc_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mtk_pwrap->sig_adr, PMIC_DEW_CRC_VAL);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mtk_pwrap->eint_sta0_adr, PMIC_CPU_INT_STA);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* MD ADC Interface */</span><br><span style="color: hsl(120, 100%, 40%);">+        write32(&mtk_pwrap->md_auxadc_rdata_latest_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+               (PMIC_AUXADC_ADC35 << 16) + PMIC_AUXADC_ADC31);</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->md_auxadc_rdata_wp_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+           (PMIC_AUXADC_ADC35 << 16) + PMIC_AUXADC_ADC31);</span><br><span style="color: hsl(120, 100%, 40%);">+ for (size_t i = 0; i < 32; i++)</span><br><span style="color: hsl(120, 100%, 40%);">+            write32(&mtk_pwrap->md_auxadc_rdata[i],</span><br><span style="color: hsl(120, 100%, 40%);">+                        (PMIC_AUXADC_ADC35 << 16) + PMIC_AUXADC_ADC31);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       write32(&mtk_pwrap->int_gps_auxadc_cmd_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+           (PMIC_AUXADC_RQST1 << 16) + PMIC_AUXADC_RQST0);</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->int_gps_auxadc_cmd, (GPS_MAIN << 16) + GPS_SUBSYS);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->int_gps_auxadc_rdata_addr,</span><br><span style="color: hsl(120, 100%, 40%);">+         (PMIC_AUXADC_ADC32 << 16) + PMIC_AUXADC_ADC17);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       write32(&mtk_pwrap->ext_gps_auxadc_rdata_addr, PMIC_AUXADC_ADC31);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_starve_set(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->harb_hprio, 0xf);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->starv_counter_0, 0x402);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_1, 0x403);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_2, 0x403);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_3, 0x403);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_4, 0x40f);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_5, 0x420);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_6, 0x428);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_7, 0x428);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_8, 0x413);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_9, 0x417);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->starv_counter_10, 0x417);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->starv_counter_11, 0x47c);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->starv_counter_12, 0x47c);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->starv_counter_13, 0x740);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->starv_counter_16, 0x740);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_enable(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->hiprio_arb_en, 0x3fa75);</span><br><span style="color: hsl(120, 100%, 40%);">+   write32(&mtk_pwrap->wacs0_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->wacs2_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->wacs_p2p_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->wacs_md32_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+        write32(&mtk_pwrap->staupd_ctrl, 0x5);</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->wdt_unit, 0xf);</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->wdt_src_en_0, 0xffffffff);</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->wdt_src_en_1, 0xffffffff);</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->timer_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->int0_en, 0xffffffff);</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mtk_pwrap->int1_en, 0xeef7ffff);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static s32 pwrap_init_sistrobe(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        u16 rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+    int si_sample_ctrl;</span><br><span style="color: hsl(120, 100%, 40%);">+   int test_data[30] = {</span><br><span style="color: hsl(120, 100%, 40%);">+         0x6996, 0x9669, 0x6996, 0x9669, 0x6996, 0x9669, 0x6996,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x9669, 0x6996, 0x9669, 0x5AA5, 0xA55A, 0x5AA5, 0xA55A,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x5AA5, 0xA55A, 0x5AA5, 0xA55A, 0x5AA5, 0xA55A, 0x1B27,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x1B27, 0x1B27, 0x1B27, 0x1B27, 0x1B27, 0x1B27, 0x1B27,</span><br><span style="color: hsl(120, 100%, 40%);">+               0x1B27, 0x1B27};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    for (si_sample_ctrl = 0; si_sample_ctrl < 16; si_sample_ctrl++) {</span><br><span style="color: hsl(120, 100%, 40%);">+          write32(&mtk_pwrap->si_sample_ctrl, si_sample_ctrl << 5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              pwrap_read_nochk(PMIC_DEW_READ_TEST, &rdata);</span><br><span style="color: hsl(120, 100%, 40%);">+             if (rdata == DEFAULT_VALUE_READ_TEST)</span><br><span style="color: hsl(120, 100%, 40%);">+                 break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (si_sample_ctrl == 16)</span><br><span style="color: hsl(120, 100%, 40%);">+             return E_CLK_EDGE;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  if (si_sample_ctrl == 15)</span><br><span style="color: hsl(120, 100%, 40%);">+             return E_CLK_LAST_SETTING;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  for (int si_dly = 0; si_dly < 10; si_dly++) {</span><br><span style="color: hsl(120, 100%, 40%);">+              pwrap_write_nochk(PMIC_RG_SPI_CON2, si_dly);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+                int error = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                for (size_t i = 0; i < 30; i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+                  pwrap_write_nochk(PMIC_DEW_WRITE_TEST, test_data[i]);</span><br><span style="color: hsl(120, 100%, 40%);">+                 pwrap_read_nochk(PMIC_DEW_WRITE_TEST, &rdata);</span><br><span style="color: hsl(120, 100%, 40%);">+                    if ((rdata & 0x7fff) != (test_data[i] & 0x7fff)) {</span><br><span style="color: hsl(120, 100%, 40%);">+                            /* Data boundary is found */</span><br><span style="color: hsl(120, 100%, 40%);">+                          error = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                            break;</span><br><span style="color: hsl(120, 100%, 40%);">+                        }</span><br><span style="color: hsl(120, 100%, 40%);">+             }</span><br><span style="color: hsl(120, 100%, 40%);">+             if (error == 1)</span><br><span style="color: hsl(120, 100%, 40%);">+                       break;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Change The Sampling Clock Edge To The Next One. */</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->si_sample_ctrl, ++si_sample_ctrl << 5);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Read Test */</span><br><span style="color: hsl(120, 100%, 40%);">+       pwrap_read_nochk(PMIC_DEW_READ_TEST, &rdata);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (rdata != DEFAULT_VALUE_READ_TEST) {</span><br><span style="color: hsl(120, 100%, 40%);">+               pwrap_err("rdata = %x, exp = 0x5aa5\n", rdata);</span><br><span style="color: hsl(120, 100%, 40%);">+             return 0x10;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_init_spislv(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Turn on IO filter function */</span><br><span style="color: hsl(120, 100%, 40%);">+      pwrap_write_nochk(PMIC_FILTER_CON0, 0xf0);</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Turn on IO SMT function to improve noise immunity */</span><br><span style="color: hsl(120, 100%, 40%);">+       pwrap_write_nochk(PMIC_SMT_CON1, 0xf);</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Turn off IO pull function for power saving */</span><br><span style="color: hsl(120, 100%, 40%);">+      pwrap_write_nochk(PMIC_GPIO_PULLEN0_CLR, 0xf0);</span><br><span style="color: hsl(120, 100%, 40%);">+       /* Turn off IO pull function for power saving */</span><br><span style="color: hsl(120, 100%, 40%);">+      pwrap_write_nochk(PMIC_RG_SPI_CON0, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Set PMIC GPIO driving current to 4mA */</span><br><span style="color: hsl(120, 100%, 40%);">+    pwrap_write_nochk(PMIC_DRV_CON1, 0x8888);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static void pwrap_init_reg_clock(u16 regck_sel)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->ext_ck_write, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      pwrap_write_nochk(PMIC_DEW_RDDMY_NO, 0x8);</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->rddmy, 0x8);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Config SPI Waveform according to reg clk */</span><br><span style="color: hsl(120, 100%, 40%);">+        uint32_t value = (regck_sel == REG_CLOCK_18MHZ) ? 0 : 0x0f0f;</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->cshext_write, value);</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mtk_pwrap->cshext_read, value);</span><br><span style="color: hsl(120, 100%, 40%);">+       write32(&mtk_pwrap->cslext_write, value);</span><br><span style="color: hsl(120, 100%, 40%);">+      write32(&mtk_pwrap->cslext_read, value);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+s32 pwrap_init(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ s32 sub_return = 0, sub_return1 = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  u16 rdata;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  pwrap_spi_clk_set();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Reset spislv */</span><br><span style="color: hsl(120, 100%, 40%);">+    sub_return = pwrap_reset_spislv();</span><br><span style="color: hsl(120, 100%, 40%);">+    if (sub_return != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                pwrap_err("reset_spislv fail, ret=%x\n", sub_return);</span><br><span style="color: hsl(120, 100%, 40%);">+               return E_PWR_INIT_RESET_SPI;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Enable WRAP */</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mtk_pwrap->wrap_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Enable WACS2 */</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->wacs2_en, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->hiprio_arb_en, WACS2); /* ONLY WACS2 */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  /* SPI Waveform Configuration. 0:safe mode, 1:18MHz */</span><br><span style="color: hsl(120, 100%, 40%);">+        pwrap_init_reg_clock(REG_CLOCK_18MHZ);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      /* SPI Slave Configuration */</span><br><span style="color: hsl(120, 100%, 40%);">+ pwrap_init_spislv();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* Enable DIO mode */</span><br><span style="color: hsl(120, 100%, 40%);">+ sub_return = pwrap_init_dio(1);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (sub_return != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                pwrap_err("dio test error, err=%x, ret=%x\n", 0x11, sub_return);</span><br><span style="color: hsl(120, 100%, 40%);">+            return E_PWR_INIT_DIO;</span><br><span style="color: hsl(120, 100%, 40%);">+        }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /* Input data calibration flow; */</span><br><span style="color: hsl(120, 100%, 40%);">+    sub_return = pwrap_init_sistrobe();</span><br><span style="color: hsl(120, 100%, 40%);">+   if (sub_return != 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+                pwrap_err("InitSiStrobe fail,ret=%x\n", sub_return);</span><br><span style="color: hsl(120, 100%, 40%);">+                return E_PWR_INIT_SIDLY;</span><br><span style="color: hsl(120, 100%, 40%);">+      }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * Write test using WACS2,</span><br><span style="color: hsl(120, 100%, 40%);">+     * make sure the read/write function ready.</span><br><span style="color: hsl(120, 100%, 40%);">+    */</span><br><span style="color: hsl(120, 100%, 40%);">+   sub_return = pwrap_write_nochk(PMIC_DEW_WRITE_TEST, WRITE_TEST_VALUE);</span><br><span style="color: hsl(120, 100%, 40%);">+        sub_return1 = pwrap_read_nochk(PMIC_DEW_WRITE_TEST, &rdata);</span><br><span style="color: hsl(120, 100%, 40%);">+      if (rdata != WRITE_TEST_VALUE || sub_return || sub_return1) {</span><br><span style="color: hsl(120, 100%, 40%);">+         pwrap_err("write error, rdata=%#x, return=%#x, return1=%#x\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                        rdata, sub_return, sub_return1);</span><br><span style="color: hsl(120, 100%, 40%);">+            return E_PWR_INIT_WRITE_TEST;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * Status update function initialization</span><br><span style="color: hsl(120, 100%, 40%);">+       * 1. Signature Checking using CRC (CRC 0 only)</span><br><span style="color: hsl(120, 100%, 40%);">+        * 2. EINT update</span><br><span style="color: hsl(120, 100%, 40%);">+      * 3. Read back Auxadc thermal data for GPS</span><br><span style="color: hsl(120, 100%, 40%);">+    */</span><br><span style="color: hsl(120, 100%, 40%);">+   pwrap_initstaupd();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ write32(&mtk_pwrap->priority_user_sel_2, 0x0b09080a);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->arbiter_out_sel_2, 0x0b080a09);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+  pwrap_starve_set();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ pwrap_enable();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Initialization Done */</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mtk_pwrap->init_done0, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->init_done2, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+  write32(&mtk_pwrap->init_done_p2p, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+       write32(&mtk_pwrap->init_done_md32, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    /* Lock SPISLV Registers */</span><br><span style="color: hsl(120, 100%, 40%);">+   pwrap_lock_spislvreg();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Enable Command Recording */</span><br><span style="color: hsl(120, 100%, 40%);">+        sub_return = pwrap_write_nochk(PMIC_RG_SPI_RECORD0, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+     if (sub_return != 0)</span><br><span style="color: hsl(120, 100%, 40%);">+          pwrap_err("enable spi debug fail, ret=%x\n", sub_return);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ /* Clear Last three command */</span><br><span style="color: hsl(120, 100%, 40%);">+        sub_return = pwrap_write_nochk(PMIC_RG_SPI_CON13, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (sub_return != 0)</span><br><span style="color: hsl(120, 100%, 40%);">+          pwrap_err("clear record command fail, ret=%x\n", sub_return);</span><br><span style="color: hsl(120, 100%, 40%);">+       sub_return = pwrap_write_nochk(PMIC_RG_SPI_CON13, 0x0);</span><br><span style="color: hsl(120, 100%, 40%);">+       if (sub_return != 0)</span><br><span style="color: hsl(120, 100%, 40%);">+          pwrap_err("clear record command fail, ret=%x\n", sub_return);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     /* Disable monitor MD HW channel (CH8) */</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mtk_pwrap->monitor_ctrl_1, 0x1feff);</span><br><span style="color: hsl(120, 100%, 40%);">+  /* Record all addr (mask+addr) */</span><br><span style="color: hsl(120, 100%, 40%);">+     write32(&mtk_pwrap->monitor_ctrl_2, 0x0);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Record all wdata (mask+addr) */</span><br><span style="color: hsl(120, 100%, 40%);">+    write32(&mtk_pwrap->monitor_ctrl_3, 0x0);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Clear log */</span><br><span style="color: hsl(120, 100%, 40%);">+       write32(&mtk_pwrap->monitor_ctrl_0, 0x8);</span><br><span style="color: hsl(120, 100%, 40%);">+      /* Reenable */</span><br><span style="color: hsl(120, 100%, 40%);">+        write32(&mtk_pwrap->monitor_ctrl_0, 0x1);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/29421">change 29421</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/29421"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Idbdb15f11227ded3f5d18fe6504c8c646973b733 </div>
<div style="display:none"> Gerrit-Change-Number: 29421 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Tristan Hsieh <tristan.shieh@mediatek.com> </div>