void tz_dapc_sec_init() { #ifdef DBG_PRELOADER MSG(DOM, "(B)tz_dapc_sec_init is 0x%x\n", reg_read32(DEVAPC0_APC_CON)); #endif reg_set_field(DEVAPC0_APC_CON , DEVAPC_APC_CON_CTRL, DEVAPC_APC_CON_EN); tz_dapc_set_master_transaction(MASTER_MSDC0 , SECURE_TRAN); #ifdef DBG_PRELOADER MSG(DOM, "(E)tz_dapc_sec_init is 0x%x\n", reg_read32(DEVAPC0_APC_CON)); #endif }
void device_APC_dom_setup(void) { MSG(DOM, "\nDevice APC domain init setup:\n\n"); reg_write32(DEVAPC0_APC_CON, 0x0); #ifdef DBG_PRELOADER MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_0)); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_1)); #endif /*Set modem master to DOMAIN1(MD0),DOMAIN5(MD1)*/ reg_set_field(DEVAPC0_MAS_DOM_0 , MD1_AHB_0, DOMAIN_1); reg_set_field(DEVAPC0_MAS_DOM_1 , MD1_AXI_1, DOMAIN_1); reg_set_field(DEVAPC0_MAS_DOM_1 , MD1_AXI_2, DOMAIN_1); reg_set_field(DEVAPC0_MAS_DOM_1 , MD2_AHB_0, DOMAIN_1); reg_set_field(DEVAPC0_MAS_DOM_1 , MD2_AXI_1, DOMAIN_1); reg_set_field(DEVAPC0_MAS_DOM_1 , MD2_AXI_2, DOMAIN_1); /*Set connsys master to DOMAIN2*/ reg_set_field(DEVAPC0_MAS_DOM_1 , CONNSYS, DOMAIN_2); /*Set MD32 to DOMAIN3*/ reg_set_field(DEVAPC0_MAS_DOM_0 , MD32 , DOMAIN_3); /*Set MFG to DOMAIN6*/ reg_set_field(DEVAPC0_MAS_DOM_1 , MFG , DOMAIN_6); #ifdef DBG_PRELOADER MSG(DOM, "Device APC domain after setup:\n"); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_0)); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_1)); #endif }
void device_APC_dom_setup(void) { MSG(DOM, "\nDevice APC domain init setup:\n\n"); reg_write32(DEVAPC0_APC_CON, 0x0); #ifdef DBG_PRELOADER MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_APC_CON)); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_0)); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_1)); #endif #if defined(MACH_TYPE_MT6735) /*Set modem0 master to DOMAIN1*/ reg_set_field(DEVAPC0_MAS_DOM_1 , MD1_DOMAIN, DOMAIN_1); /*Set connsys master to DOMAIN2*/ reg_set_field(DEVAPC0_MAS_DOM_1 , CONN2AP, DOMAIN_2); /*Set modem1 master to DOMAIN5*/ reg_set_field(DEVAPC0_MAS_DOM_2 , MD3_DOMAIN, DOMAIN_5); /*Set gpu master to DOMAIN6*/ reg_set_field(DEVAPC0_MAS_DOM_2 , GPU, DOMAIN_6); #elif defined(MACH_TYPE_MT6735M) // Notice: Compare to Denali-2: (1)Denali-2 does not have Master "MD3" (2)Denali-2 does not have Domain 4, 5, 6, 7. /*Set modem0 master to DOMAIN1*/ reg_set_field(DEVAPC0_MAS_DOM_0 , MD1_DOMAIN, DOMAIN_1); /*Set connsys master to DOMAIN2*/ reg_set_field(DEVAPC0_MAS_DOM_0 , CONN2AP, DOMAIN_2); /*Set gpu master to DOMAIN3*/ reg_set_field(DEVAPC0_MAS_DOM_1 , GPU, DOMAIN_3); #elif defined(MACH_TYPE_MT6753) /*Set modem0 master to DOMAIN1*/ reg_set_field(DEVAPC0_MAS_DOM_1 , MD1_DOMAIN, DOMAIN_1); /*Set connsys master to DOMAIN2*/ reg_set_field(DEVAPC0_MAS_DOM_1 , CONN2AP, DOMAIN_2); /*Set modem1 master to DOMAIN5*/ reg_set_field(DEVAPC0_MAS_DOM_2 , MD3_DOMAIN, DOMAIN_5); /*Set gpu master to DOMAIN6*/ reg_set_field(DEVAPC0_MAS_DOM_2 , GPU, DOMAIN_6); #else #error "Wrong MACH type" #endif #ifdef DBG_PRELOADER MSG(DOM, "Device APC domain after setup:\n"); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_0)); MSG(DOM, "Domain Setup (0x%x)\n", reg_read32(DEVAPC0_MAS_DOM_1)); #endif }
void tz_dapc_set_master_transaction(unsigned int master_index , E_TRANSACTION permisssion_control) { reg_set_field(DEVAPC0_MAS_SEC , (0x1 << master_index), permisssion_control); }