Example #1
0
void set_module_apc(unsigned int module, E_MASK_DOM domain_num , APC_ATTR permission_control)
{
    volatile unsigned int* base = 0;

    unsigned int clr_bit = 0x3 << ((module % MOD_NO_IN_1_DEVAPC) * 2);
    unsigned int set_bit = permission_control << ((module % MOD_NO_IN_1_DEVAPC) * 2);

    clear_vio_status(module);
    unmask_module_irq(module);

    if(domain_num == E_DOMAIN_0)
    {
        
        base = (unsigned int*) ((size_t)DEVAPC_D0_APC_0 + (module/16) *4);
    }
    else if(domain_num == E_DOMAIN_1)
    {
        base = (unsigned int*) ((size_t)DEVAPC_D1_APC_0 + (module/16) *4);
    }
    else if(domain_num == E_DOMAIN_2)
    {
        base = (unsigned int*) ((size_t)DEVAPC_D2_APC_0 + (module/16) *4); 
    }
    else if(domain_num == E_DOMAIN_3)
    {
        base = (unsigned int*) ((size_t)DEVAPC_D3_APC_0 + (module/16) *4);
    }
     writel(readl(base) & ~clr_bit, base);
     writel(readl(base) | set_bit, base);
}
Example #2
0
/*
 * 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;
}