コード例 #1
0
ファイル: interrupt.c プロジェクト: andreawang/rt-thread
/**
 * This function will initialize hardware interrupt
 */
void rt_hw_interrupt_init(void)
{
    rt_int32_t i;
    register rt_uint32_t idx;
    rt_uint32_t *priority = at91sam9260_default_irq_priority;
    
    at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1)
            | (1 << AT91SAM9260_ID_IRQ2);

    /* Initialize the AIC interrupt controller */
    at91_aic_init(priority);

    /* init exceptions table */
    for(idx=0; idx < MAX_HANDLERS; idx++)
    {
        rt_snprintf(irq_desc[idx].name, RT_NAME_MAX - 1, "default");
        irq_desc[idx].handler = (rt_isr_handler_t)rt_hw_interrupt_handle;
        irq_desc[idx].param = RT_NULL;
		irq_desc[idx].counter = 0;
    }

    at91_gpio_irq_init();

    /* init interrupt nest, and context in thread sp */
    rt_interrupt_nest = 0;
    rt_interrupt_from_thread = 0;
    rt_interrupt_to_thread = 0;
    rt_thread_switch_interrupt_flag = 0;
}
コード例 #2
0
ファイル: at91x40.c プロジェクト: 1703011/asuswrt-merlin
void __init at91x40_init_interrupts(unsigned int priority[NR_AIC_IRQS])
{
	if (!priority)
		priority = at91x40_default_irq_priority;

	at91_aic_init(priority);
}
コード例 #3
0
ファイル: at91x40.c プロジェクト: Jitendra-khasdev/linux
void __init at91x40_init_interrupts(unsigned int priority[NR_AIC_IRQS])
{
    u32  extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1)
                      | (1 << AT91X40_ID_IRQ2);
    if (!priority)
        priority = at91x40_default_irq_priority;

    at91_aic_init(priority, extern_irq);
}
コード例 #4
0
void __init at91sam9261_init_interrupts(unsigned int priority[NR_AIC_IRQS])
{
	if (!priority)
		priority = at91sam9261_default_irq_priority;

	/* Initialize the AIC interrupt controller */
	at91_aic_init(priority);

	/* Enable GPIO interrupts */
	at91_gpio_irq_setup();
}
コード例 #5
0
void __init at91sam9263_init_interrupts(unsigned int priority[NR_AIC_IRQS])
{
	if (!priority)
		priority = at91sam9263_default_irq_priority;

	
	at91_aic_init(priority);

	
	at91_gpio_irq_setup();
}
コード例 #6
0
ファイル: at91sam926x_irq.c プロジェクト: RocsanWei/g-bios
int __INIT__ at91sam926x_interrupt_init(void)
{
	__u32 i, j;
	__u32 irq;

	at91_aic_init();

	for (i = 0; i < 3; i++) {
		for (j = 0; j < 32; j++) {
			irq = 32 + ((i << 5) | j);

			irq_assoc_intctl(irq, &at91sam926x_gpio_intctrl);
			irq_set_handler(irq, irq_handle_simple, 0);
		}

		irq_set_handler(PIO_IRQ_OFFSET + i, at91sam926x_gpio_irqparse, 1);
	}

	irq_enable(); // fixme

	return 0;
}
コード例 #7
0
/**
 * This function will initialize hardware interrupt
 */
void rt_hw_interrupt_init(void)
{
	rt_int32_t i;
	register rt_uint32_t idx;
	rt_uint32_t *priority = at91sam9260_default_irq_priority;
	
	at91_extern_irq = (1 << AT91SAM9260_ID_IRQ0) | (1 << AT91SAM9260_ID_IRQ1)
			| (1 << AT91SAM9260_ID_IRQ2);

	/* Initialize the AIC interrupt controller */
	at91_aic_init(priority);

	/* init exceptions table */
	for(idx=0; idx < MAX_HANDLERS; idx++)
	{
		isr_table[idx] = (rt_isr_handler_t)rt_hw_interrupt_handle;
	}

	/* init interrupt nest, and context in thread sp */
	rt_interrupt_nest = 0;
	rt_interrupt_from_thread = 0;
	rt_interrupt_to_thread = 0;
	rt_thread_switch_interrput_flag = 0;
}