コード例 #1
0
int start_devapc()
{  

	int module_index = 0;

    /*Enable Devapc*/
    writel(0x80000000, DEVAPC_VIO_DBG0); // clear apc0 dbg info if any
   
    writel(readl(DEVAPC_APC_CON) &  (0xFFFFFFFF ^ (1<<2)), DEVAPC_APC_CON);

    writel(readl(DEVAPC_PD_APC_CON) & (0xFFFFFFFF ^ (1<<2)), DEVAPC_PD_APC_CON);

   /*Initial Permission*/

    for (module_index = 0; module_index<(sizeof(D_APC0_Devices)/sizeof(DEVICE_INFO)); module_index++)
    {
        set_module_apc(module_index, E_DOMAIN_0 , D_APC0_Devices[module_index].d0_permission);
        set_module_apc(module_index, E_DOMAIN_1 , D_APC0_Devices[module_index].d1_permission);
    }

    /*Lock DAPC to secure access only*/	
    writel(readl(DEVAPC_APC_CON) |  (0x1), DEVAPC_APC_CON);

    /*Set Level 2 secure*/
    writel(readl(INFRA_PDN_SEC_CON ) |  (SEJ_CG_PROTECT_BIT), INFRA_PDN_SEC_CON );
    writel(readl(INFRA_PDN_SEC_CON ) |  (TRNG_CG_PROTECT_BIT), INFRA_PDN_SEC_CON );

    printf("[DAPC] Init Done\n");

    return 0;

}
コード例 #2
0
ファイル: devapc.c プロジェクト: ramgar/mt6577-kernel-3.10.65
/*
 * start_devapc: start device apc for MD
 */
static int start_devapc(void)
{
    int i = 0;

    init_devpac();
    for (i = 0; i < (sizeof(devapc_devices) / sizeof(devapc_devices[0])); i++) {
        if (TRUE == devapc_devices[i].forbidden) {
            clear_vio_status(i);
            unmask_module_irq(i);
            set_module_apc(i, E_DOMAIN_1, E_L3);
        }
    }
    return 0;
}