xref: /rk3399_ARM-atf/plat/mediatek/drivers/apusys/mt8188/apusys_devapc.c (revision 753c49d512545699f21590036f000a22f40ff4b0)
1777e3b71SKarl Li /*
2777e3b71SKarl Li  * Copyright (c) 2023, MediaTek Inc. All rights reserved.
3777e3b71SKarl Li  *
4777e3b71SKarl Li  * SPDX-License-Identifier: BSD-3-Clause
5777e3b71SKarl Li  */
6777e3b71SKarl Li 
7777e3b71SKarl Li /* TF-A system header */
8777e3b71SKarl Li #include <common/debug.h>
9777e3b71SKarl Li #include <lib/utils_def.h>
10777e3b71SKarl Li 
11777e3b71SKarl Li /* Vendor header */
12777e3b71SKarl Li #include "apusys.h"
13777e3b71SKarl Li #include "apusys_devapc.h"
14777e3b71SKarl Li #include "apusys_devapc_def.h"
15777e3b71SKarl Li #include <platform_def.h>
16777e3b71SKarl Li 
17777e3b71SKarl Li #define DUMP_APUSYS_DAPC	(0)
18777e3b71SKarl Li 
19*5986ae57SKarl Li static const struct apc_dom_16 APU_NOC_DAPC_RCX[] = {
20*5986ae57SKarl Li 	/* ctrl index = 0 */
21*5986ae57SKarl Li 	SLAVE_MD32_SRAM("slv16-0"),
22*5986ae57SKarl Li 	SLAVE_MD32_SRAM("slv16-1"),
23*5986ae57SKarl Li 	SLAVE_MD32_SRAM("slv16-2"),
24*5986ae57SKarl Li 	SLAVE_MD32_SRAM("slv16-3"),
25*5986ae57SKarl Li 	SLAVE_MD32_SRAM("slv16-4"),
26*5986ae57SKarl Li };
27*5986ae57SKarl Li 
28777e3b71SKarl Li static const struct apc_dom_16 APU_CTRL_DAPC_AO[] = {
29777e3b71SKarl Li 	/* ctrl index = 0 */
30777e3b71SKarl Li 	SLAVE_VCORE("apu_ao_ctl_o-0"),
31777e3b71SKarl Li 	SLAVE_RPC("apu_ao_ctl_o-2"),
32777e3b71SKarl Li 	SLAVE_PCU("apu_ao_ctl_o-3"),
33777e3b71SKarl Li 	SLAVE_AO_CTRL("apu_ao_ctl_o-4"),
34777e3b71SKarl Li 	SLAVE_PLL("apu_ao_ctl_o-5"),
35777e3b71SKarl Li 	SLAVE_ACC("apu_ao_ctl_o-6"),
36777e3b71SKarl Li 	SLAVE_SEC("apu_ao_ctl_o-7"),
37777e3b71SKarl Li 	SLAVE_ARE0("apu_ao_ctl_o-8"),
38777e3b71SKarl Li 	SLAVE_ARE1("apu_ao_ctl_o-9"),
39777e3b71SKarl Li 	SLAVE_ARE2("apu_ao_ctl_o-10"),
40777e3b71SKarl Li 
41777e3b71SKarl Li 	/* ctrl index = 10 */
42777e3b71SKarl Li 	SLAVE_UNKNOWN("apu_ao_ctl_o-11"),
43777e3b71SKarl Li 	SLAVE_AO_BCRM("apu_ao_ctl_o-12"),
44777e3b71SKarl Li 	SLAVE_AO_DAPC_WRAP("apu_ao_ctl_o-13"),
45777e3b71SKarl Li 	SLAVE_AO_DAPC_CON("apu_ao_ctl_o-14"),
46777e3b71SKarl Li 	SLAVE_RCX_ACX_BULK("apu_ao_ctl_o-15"),
47777e3b71SKarl Li 	SLAVE_UNKNOWN("apu_ao_ctl_o-16"),
48777e3b71SKarl Li 	SLAVE_UNKNOWN("apu_ao_ctl_o-17"),
49777e3b71SKarl Li 	SLAVE_APU_BULK("apu_ao_ctl_o-18"),
50777e3b71SKarl Li 	SLAVE_ACX0_BCRM("apu_ao_ctl_o-20"),
51777e3b71SKarl Li 	SLAVE_RPCTOP_LITE_ACX0("apu_ao_ctl_o-21"),
52777e3b71SKarl Li 
53777e3b71SKarl Li 	/* ctrl index = 20 */
54777e3b71SKarl Li 	SLAVE_ACX1_BCRM("apu_ao_ctl_o-22"),
55777e3b71SKarl Li 	SLAVE_RPCTOP_LITE_ACX1("apu_ao_ctl_o-23"),
56777e3b71SKarl Li 	SLAVE_RCX_TO_ACX0_0("apu_rcx2acx0_o-0"),
57777e3b71SKarl Li 	SLAVE_RCX_TO_ACX0_1("apu_rcx2acx0_o-1"),
58777e3b71SKarl Li 	SLAVE_SAE_TO_ACX0_0("apu_sae2acx0_o-0"),
59777e3b71SKarl Li 	SLAVE_SAE_TO_ACX0_1("apu_sae2acx0_o-1"),
60777e3b71SKarl Li 	SLAVE_RCX_TO_ACX1_0("apu_rcx2acx1_o-0"),
61777e3b71SKarl Li 	SLAVE_RCX_TO_ACX1_1("apu_rcx2acx1_o-1"),
62777e3b71SKarl Li 	SLAVE_SAE_TO_ACX1_0("apu_sae2acx1_o-0"),
63777e3b71SKarl Li 	SLAVE_SAE_TO_ACX1_1("apu_sae2acx1_o-1"),
64777e3b71SKarl Li };
65777e3b71SKarl Li 
66*5986ae57SKarl Li static const struct apc_dom_16 APU_CTRL_DAPC_RCX[] = {
67*5986ae57SKarl Li 	/* ctrl index = 0 */
68*5986ae57SKarl Li 	SLAVE_MD32_SYSCTRL0("md32_apb_s-0"),
69*5986ae57SKarl Li 	SLAVE_MD32_SYSCTRL1("md32_apb_s-1"),
70*5986ae57SKarl Li 	SLAVE_MD32_WDT("md32_apb_s-2"),
71*5986ae57SKarl Li 	SLAVE_MD32_CACHE("md32_apb_s-3"),
72*5986ae57SKarl Li 	SLAVE_RPC("apusys_ao-0"),
73*5986ae57SKarl Li 	SLAVE_PCU("apusys_ao-1"),
74*5986ae57SKarl Li 	SLAVE_AO_CTRL("apusys_ao-2"),
75*5986ae57SKarl Li 	SLAVE_PLL("apusys_ao-3"),
76*5986ae57SKarl Li 	SLAVE_ACC("apusys_ao-4"),
77*5986ae57SKarl Li 	SLAVE_SEC("apusys_ao-5"),
78*5986ae57SKarl Li 
79*5986ae57SKarl Li 	/* ctrl index = 10 */
80*5986ae57SKarl Li 	SLAVE_ARE0("apusys_ao-6"),
81*5986ae57SKarl Li 	SLAVE_ARE1("apusys_ao-7"),
82*5986ae57SKarl Li 	SLAVE_ARE2("apusys_ao-8"),
83*5986ae57SKarl Li 	SLAVE_UNKNOWN("apusys_ao-9"),
84*5986ae57SKarl Li 	SLAVE_AO_BCRM("apusys_ao-10"),
85*5986ae57SKarl Li 	SLAVE_AO_DAPC_WRAP("apusys_ao-11"),
86*5986ae57SKarl Li 	SLAVE_AO_DAPC_CON("apusys_ao-12"),
87*5986ae57SKarl Li 	SLAVE_VCORE("apusys_ao-13"),
88*5986ae57SKarl Li 	SLAVE_ACX0_BCRM("apusys_ao-15"),
89*5986ae57SKarl Li 	SLAVE_ACX1_BCRM("apusys_ao-16"),
90*5986ae57SKarl Li 
91*5986ae57SKarl Li 	/* ctrl index = 20 */
92*5986ae57SKarl Li 	SLAVE_NOC_AXI("noc_axi"),
93*5986ae57SKarl Li 	SLAVE_MD32_DBG("md32_dbg"),
94*5986ae57SKarl Li 	SLAVE_DBG_CRTL("apb_infra_dbg"),
95*5986ae57SKarl Li 	SLAVE_IOMMU0_BANK0("apu_n_mmu_r0"),
96*5986ae57SKarl Li 	SLAVE_IOMMU0_BANK1("apu_n_mmu_r1"),
97*5986ae57SKarl Li 	SLAVE_IOMMU0_BANK2("apu_n_mmu_r2"),
98*5986ae57SKarl Li 	SLAVE_IOMMU0_BANK3("apu_n_mmu_r3"),
99*5986ae57SKarl Li 	SLAVE_IOMMU0_BANK4("apu_n_mmu_r4"),
100*5986ae57SKarl Li 	SLAVE_IOMMU1_BANK0("apu_s_mmu_r0"),
101*5986ae57SKarl Li 	SLAVE_IOMMU1_BANK1("apu_s_mmu_r1"),
102*5986ae57SKarl Li 
103*5986ae57SKarl Li 	/* ctrl index = 30 */
104*5986ae57SKarl Li 	SLAVE_IOMMU1_BANK2("apu_s_mmu_r2"),
105*5986ae57SKarl Li 	SLAVE_IOMMU1_BANK3("apu_s_mmu_r3"),
106*5986ae57SKarl Li 	SLAVE_IOMMU1_BANK4("apu_s_mmu_r4"),
107*5986ae57SKarl Li 	SLAVE_S0_SSC("apu_s0_ssc_cfg"),
108*5986ae57SKarl Li 	SLAVE_N0_SSC("apu_n0_ssc_cfg"),
109*5986ae57SKarl Li 	SLAVE_ACP_SSC("apu_acp_ssc_cfg"),
110*5986ae57SKarl Li 	SLAVE_S1_SSC("apu_s1_ssc_cfg"),
111*5986ae57SKarl Li 	SLAVE_N1_SSC("apu_n1_ssc_cfg"),
112*5986ae57SKarl Li 	SLAVE_CFG("apu_rcx_cfg"),
113*5986ae57SKarl Li 	SLAVE_SEMA_STIMER("apu_sema_stimer"),
114*5986ae57SKarl Li 
115*5986ae57SKarl Li 	/* ctrl index = 40 */
116*5986ae57SKarl Li 	SLAVE_EMI_CFG("apu_emi_cfg"),
117*5986ae57SKarl Li 	SLAVE_LOG("apu_logtop"),
118*5986ae57SKarl Li 	SLAVE_CPE_SENSOR("apu_cpe_sensor"),
119*5986ae57SKarl Li 	SLAVE_CPE_COEF("apu_cpe_coef"),
120*5986ae57SKarl Li 	SLAVE_CPE_CTRL("apu_cpe_ctrl"),
121*5986ae57SKarl Li 	SLAVE_UNKNOWN("apu_xpu_rsi"),
122*5986ae57SKarl Li 	SLAVE_DFD_REG_SOC("apu_dfd"),
123*5986ae57SKarl Li 	SLAVE_SENSOR_WRAP_ACX0_DLA0("apu_sen_ac0_dla0"),
124*5986ae57SKarl Li 	SLAVE_SENSOR_WRAP_ACX0_DLA1("apu_sen_ac0_dla1"),
125*5986ae57SKarl Li 	SLAVE_SENSOR_WRAP_ACX0_VPU0("apu_sen_ac0_vpu"),
126*5986ae57SKarl Li 
127*5986ae57SKarl Li 	/* ctrl index = 50 */
128*5986ae57SKarl Li 	SLAVE_SENSOR_WRAP_ACX1_DLA0("apu_sen_ac1_dla0"),
129*5986ae57SKarl Li 	SLAVE_SENSOR_WRAP_ACX1_DLA1("apu_sen_ac1_dla1"),
130*5986ae57SKarl Li 	SLAVE_SENSOR_WRAP_ACX1_VPU0("apu_sen_ac1_vpu"),
131*5986ae57SKarl Li 	SLAVE_REVISER("noc_cfg-0"),
132*5986ae57SKarl Li 	SLAVE_NOC("noc_cfg-1"),
133*5986ae57SKarl Li 	SLAVE_BCRM("infra_bcrm"),
134*5986ae57SKarl Li 	SLAVE_DAPC_WRAP("infra_dapc_wrap"),
135*5986ae57SKarl Li 	SLAVE_DAPC_CON("infra_dapc_con"),
136*5986ae57SKarl Li 	SLAVE_NOC_DAPC_WRAP("noc_dapc_wrap"),
137*5986ae57SKarl Li 	SLAVE_NOC_DAPC_CON("noc_dapc_con"),
138*5986ae57SKarl Li 
139*5986ae57SKarl Li 	/* ctrl index = 60 */
140*5986ae57SKarl Li 	SLAVE_NOC_BCRM("noc_bcrm"),
141*5986ae57SKarl Li 	SLAVE_ACS("apu_rcx_acs"),
142*5986ae57SKarl Li 	SLAVE_HSE("apu_hse"),
143*5986ae57SKarl Li };
144*5986ae57SKarl Li 
set_slave_ao_ctrl_apc(uint32_t slave,enum apusys_apc_domain_id domain_id,enum apusys_apc_perm_type perm)145777e3b71SKarl Li static enum apusys_apc_err_status set_slave_ao_ctrl_apc(uint32_t slave,
146777e3b71SKarl Li 							enum apusys_apc_domain_id domain_id,
147777e3b71SKarl Li 							enum apusys_apc_perm_type perm)
148777e3b71SKarl Li {
149777e3b71SKarl Li 	uint32_t apc_register_index;
150777e3b71SKarl Li 	uint32_t apc_set_index;
151777e3b71SKarl Li 	uint32_t base;
152777e3b71SKarl Li 	uint32_t clr_bit;
153777e3b71SKarl Li 	uint32_t set_bit;
154777e3b71SKarl Li 
155777e3b71SKarl Li 	if ((perm < 0) || (perm >= PERM_NUM)) {
156777e3b71SKarl Li 		ERROR(MODULE_TAG "%s: permission type:0x%x is not supported!\n", __func__, perm);
157777e3b71SKarl Li 		return APUSYS_APC_ERR_GENERIC;
158777e3b71SKarl Li 	}
159777e3b71SKarl Li 
160777e3b71SKarl Li 	if ((slave >= APU_CTRL_DAPC_AO_SLAVE_NUM) ||
161777e3b71SKarl Li 	    ((domain_id < 0) || (domain_id >= APU_CTRL_DAPC_AO_DOM_NUM))) {
162777e3b71SKarl Li 		ERROR(MODULE_TAG "%s: out of boundary, slave:0x%x, domain_id:0x%x\n",
163777e3b71SKarl Li 		      __func__, slave, domain_id);
164777e3b71SKarl Li 		return APUSYS_APC_ERR_GENERIC;
165777e3b71SKarl Li 	}
166777e3b71SKarl Li 
167777e3b71SKarl Li 	apc_register_index = slave / APU_CTRL_DAPC_AO_SLAVE_NUM_IN_1_DOM;
168777e3b71SKarl Li 	apc_set_index = slave % APU_CTRL_DAPC_AO_SLAVE_NUM_IN_1_DOM;
169777e3b71SKarl Li 
170777e3b71SKarl Li 	clr_bit = (DEVAPC_MASK << (apc_set_index * DEVAPC_DOM_SHIFT));
171777e3b71SKarl Li 	set_bit = (uint32_t)perm << (apc_set_index * DEVAPC_DOM_SHIFT);
172777e3b71SKarl Li 
173777e3b71SKarl Li 	base = (APU_CTRL_DAPC_AO_BASE + domain_id * DEVAPC_DOM_SIZE +
174777e3b71SKarl Li 		apc_register_index * DEVAPC_REG_SIZE);
175777e3b71SKarl Li 
176777e3b71SKarl Li 	mmio_clrsetbits_32(base, clr_bit, set_bit);
177777e3b71SKarl Li 	return APUSYS_APC_OK;
178777e3b71SKarl Li }
179777e3b71SKarl Li 
set_slave_noc_dapc_rcx(uint32_t slave,enum apusys_apc_domain_id domain_id,enum apusys_apc_perm_type perm)180*5986ae57SKarl Li static enum apusys_apc_err_status set_slave_noc_dapc_rcx(uint32_t slave,
181*5986ae57SKarl Li 							 enum apusys_apc_domain_id domain_id,
182*5986ae57SKarl Li 							 enum apusys_apc_perm_type perm)
183*5986ae57SKarl Li {
184*5986ae57SKarl Li 	uint32_t apc_register_index;
185*5986ae57SKarl Li 	uint32_t apc_set_index;
186*5986ae57SKarl Li 	uint32_t base;
187*5986ae57SKarl Li 	uint32_t clr_bit;
188*5986ae57SKarl Li 	uint32_t set_bit;
189*5986ae57SKarl Li 
190*5986ae57SKarl Li 	if ((perm >= PERM_NUM) || (perm < 0)) {
191*5986ae57SKarl Li 		ERROR(MODULE_TAG "%s: permission type:0x%x is not supported!\n", __func__, perm);
192*5986ae57SKarl Li 		return APUSYS_APC_ERR_GENERIC;
193*5986ae57SKarl Li 	}
194*5986ae57SKarl Li 
195*5986ae57SKarl Li 	if ((slave >= APU_NOC_DAPC_RCX_SLAVE_NUM) ||
196*5986ae57SKarl Li 	    ((domain_id < 0) || (domain_id >= APU_NOC_DAPC_RCX_DOM_NUM))) {
197*5986ae57SKarl Li 		ERROR(MODULE_TAG "%s: out of boundary, slave:0x%x, domain_id:0x%x\n",
198*5986ae57SKarl Li 		      __func__, slave, domain_id);
199*5986ae57SKarl Li 		return APUSYS_APC_ERR_GENERIC;
200*5986ae57SKarl Li 	}
201*5986ae57SKarl Li 
202*5986ae57SKarl Li 	apc_register_index = slave / APU_NOC_DAPC_RCX_SLAVE_NUM_IN_1_DOM;
203*5986ae57SKarl Li 	apc_set_index = slave % APU_NOC_DAPC_RCX_SLAVE_NUM_IN_1_DOM;
204*5986ae57SKarl Li 
205*5986ae57SKarl Li 	clr_bit = (DEVAPC_MASK << (apc_set_index * DEVAPC_DOM_SHIFT));
206*5986ae57SKarl Li 	set_bit = ((uint32_t)perm) << (apc_set_index * DEVAPC_DOM_SHIFT);
207*5986ae57SKarl Li 	base = (APU_NOC_DAPC_RCX_BASE + domain_id * DEVAPC_DOM_SIZE +
208*5986ae57SKarl Li 		apc_register_index * DEVAPC_REG_SIZE);
209*5986ae57SKarl Li 
210*5986ae57SKarl Li 	mmio_clrsetbits_32(base, clr_bit, set_bit);
211*5986ae57SKarl Li 	return APUSYS_APC_OK;
212*5986ae57SKarl Li }
213*5986ae57SKarl Li 
set_slave_rcx_ctrl_apc(uint32_t slave,enum apusys_apc_domain_id domain_id,enum apusys_apc_perm_type perm)214*5986ae57SKarl Li static enum apusys_apc_err_status set_slave_rcx_ctrl_apc(uint32_t slave,
215*5986ae57SKarl Li 							 enum apusys_apc_domain_id domain_id,
216*5986ae57SKarl Li 							 enum apusys_apc_perm_type perm)
217*5986ae57SKarl Li {
218*5986ae57SKarl Li 	uint32_t apc_register_index;
219*5986ae57SKarl Li 	uint32_t apc_set_index;
220*5986ae57SKarl Li 	uint32_t base;
221*5986ae57SKarl Li 	uint32_t clr_bit;
222*5986ae57SKarl Li 	uint32_t set_bit;
223*5986ae57SKarl Li 
224*5986ae57SKarl Li 	if ((perm < 0) || (perm >= PERM_NUM)) {
225*5986ae57SKarl Li 		ERROR(MODULE_TAG "%s: permission type:0x%x is not supported!\n", __func__, perm);
226*5986ae57SKarl Li 		return APUSYS_APC_ERR_GENERIC;
227*5986ae57SKarl Li 	}
228*5986ae57SKarl Li 
229*5986ae57SKarl Li 	if ((slave >= APU_CTRL_DAPC_RCX_SLAVE_NUM) ||
230*5986ae57SKarl Li 	    ((domain_id < 0) || (domain_id >= APU_CTRL_DAPC_RCX_DOM_NUM))) {
231*5986ae57SKarl Li 		ERROR(MODULE_TAG "%s: out of boundary, slave:0x%x, domain_id:0x%x\n",
232*5986ae57SKarl Li 		      __func__, slave, domain_id);
233*5986ae57SKarl Li 		return APUSYS_APC_ERR_GENERIC;
234*5986ae57SKarl Li 	}
235*5986ae57SKarl Li 
236*5986ae57SKarl Li 	apc_register_index = slave / APU_CTRL_DAPC_RCX_SLAVE_NUM_IN_1_DOM;
237*5986ae57SKarl Li 	apc_set_index = slave % APU_CTRL_DAPC_RCX_SLAVE_NUM_IN_1_DOM;
238*5986ae57SKarl Li 
239*5986ae57SKarl Li 	clr_bit = (DEVAPC_MASK << (apc_set_index * DEVAPC_DOM_SHIFT));
240*5986ae57SKarl Li 	set_bit = (uint32_t)perm << (apc_set_index * DEVAPC_DOM_SHIFT);
241*5986ae57SKarl Li 	base = (APU_CTRL_DAPC_RCX_BASE + domain_id * DEVAPC_DOM_SIZE +
242*5986ae57SKarl Li 		apc_register_index * DEVAPC_REG_SIZE);
243*5986ae57SKarl Li 
244*5986ae57SKarl Li 	mmio_clrsetbits_32(base, clr_bit, set_bit);
245*5986ae57SKarl Li 	return APUSYS_APC_OK;
246*5986ae57SKarl Li }
247*5986ae57SKarl Li 
apusys_devapc_init(const char * name,uint32_t base)248777e3b71SKarl Li static void apusys_devapc_init(const char *name, uint32_t base)
249777e3b71SKarl Li {
250777e3b71SKarl Li 	mmio_write_32(APUSYS_DAPC_CON(base), APUSYS_DAPC_CON_VIO_MASK);
251777e3b71SKarl Li }
252777e3b71SKarl Li 
apusys_devapc_ao_init(void)253777e3b71SKarl Li int apusys_devapc_ao_init(void)
254777e3b71SKarl Li {
255777e3b71SKarl Li 	enum apusys_apc_err_status ret;
256777e3b71SKarl Li 
257777e3b71SKarl Li 	apusys_devapc_init("APUAPC_CTRL_AO", APU_CTRL_DAPC_AO_BASE);
258777e3b71SKarl Li 
259777e3b71SKarl Li 	ret = SET_APUSYS_DAPC_V1(APU_CTRL_DAPC_AO, set_slave_ao_ctrl_apc);
260777e3b71SKarl Li 	if (ret != APUSYS_APC_OK) {
261777e3b71SKarl Li 		ERROR(MODULE_TAG "%s: set_apusys_ao_ctrl_dap FAILED!\n", __func__);
262777e3b71SKarl Li 		return -1;
263777e3b71SKarl Li 	}
264777e3b71SKarl Li 
265777e3b71SKarl Li #if DUMP_APUSYS_DAPC
266777e3b71SKarl Li 	DUMP_APUSYS_DAPC_V1(APU_CTRL_DAPC_AO);
267777e3b71SKarl Li #endif
268777e3b71SKarl Li 
269777e3b71SKarl Li 	return 0;
270777e3b71SKarl Li }
271*5986ae57SKarl Li 
apusys_devapc_rcx_init(void)272*5986ae57SKarl Li int apusys_devapc_rcx_init(void)
273*5986ae57SKarl Li {
274*5986ae57SKarl Li 	enum apusys_apc_err_status ret;
275*5986ae57SKarl Li 
276*5986ae57SKarl Li 	apusys_devapc_init("APUAPC_CTRL_RCX", APU_CTRL_DAPC_RCX_BASE);
277*5986ae57SKarl Li 	apusys_devapc_init("APUAPC_NOC_RCX", APU_NOC_DAPC_RCX_BASE);
278*5986ae57SKarl Li 
279*5986ae57SKarl Li 	ret = SET_APUSYS_DAPC_V1(APU_CTRL_DAPC_RCX, set_slave_rcx_ctrl_apc);
280*5986ae57SKarl Li 	if (ret != APUSYS_APC_OK) {
281*5986ae57SKarl Li 		ERROR(MODULE_TAG "%s: set_slave_rcx_ctrl_apc FAILED!\n", __func__);
282*5986ae57SKarl Li 		return -1;
283*5986ae57SKarl Li 	}
284*5986ae57SKarl Li 
285*5986ae57SKarl Li #if DUMP_APUSYS_DAPC
286*5986ae57SKarl Li 	DUMP_APUSYS_DAPC_V1(APU_CTRL_DAPC_RCX);
287*5986ae57SKarl Li #endif
288*5986ae57SKarl Li 
289*5986ae57SKarl Li 	ret = SET_APUSYS_DAPC_V1(APU_NOC_DAPC_RCX, set_slave_noc_dapc_rcx);
290*5986ae57SKarl Li 	if (ret != APUSYS_APC_OK) {
291*5986ae57SKarl Li 		ERROR(MODULE_TAG "%s: set_slave_noc_dapc_rcx FAILED\n", __func__);
292*5986ae57SKarl Li 		return -1;
293*5986ae57SKarl Li 	}
294*5986ae57SKarl Li 
295*5986ae57SKarl Li #if DUMP_APUSYS_DAPC
296*5986ae57SKarl Li 	DUMP_APUSYS_DAPC_V1(APU_NOC_DAPC_RCX);
297*5986ae57SKarl Li #endif
298*5986ae57SKarl Li 
299*5986ae57SKarl Li 	return 0;
300*5986ae57SKarl Li }
301