Exemplo n.º 1
0
static void pcm990_unmask_irq(unsigned int irq)
{
	int pcm990_irq = (irq - PCM027_IRQ(0));
	/* the irq can be acknowledged only if deasserted, so it's done here */
	PCM990_INTSETCLR |= 1 << pcm990_irq;
	PCM990_INTMSKENA  = (pcm990_irq_enabled |= (1 << pcm990_irq));
}
Exemplo n.º 2
0
static void pcm990_mask_ack_irq(struct irq_data *d)
{
	int pcm990_irq = (d->irq - PCM027_IRQ(0));

	pcm990_irq_enabled &= ~(1 << pcm990_irq);

	pcm990_cpld_writeb(pcm990_irq_enabled, PCM990_CTRL_INTMSKENA);
}
Exemplo n.º 3
0
static void __init pcm990_init_irq(void)
{
	int irq;

	/* setup extra PCM990 irqs */
	for (irq = PCM027_IRQ(0); irq <= PCM027_IRQ(3); irq++) {
		set_irq_chip(irq, &pcm990_irq_chip);
		set_irq_handler(irq, handle_level_irq);
		set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
	}

	PCM990_INTMSKENA = 0x00;	/* disable all Interrupts */
	PCM990_INTSETCLR = 0xFF;

	set_irq_chained_handler(PCM990_CTRL_INT_IRQ, pcm990_irq_handler);
	set_irq_type(PCM990_CTRL_INT_IRQ, PCM990_CTRL_INT_IRQ_EDGE);
}
Exemplo n.º 4
0
static void __init pcm990_init_irq(void)
{
	int irq;

	/* setup extra PCM990 irqs */
	for (irq = PCM027_IRQ(0); irq <= PCM027_IRQ(3); irq++) {
		irq_set_chip_and_handler(irq, &pcm990_irq_chip,
					 handle_level_irq);
		set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
	}

	/* disable all Interrupts */
	pcm990_cpld_writeb(0x0, PCM990_CTRL_INTMSKENA);
	pcm990_cpld_writeb(0xff, PCM990_CTRL_INTSETCLR);

	irq_set_chained_handler(PCM990_CTRL_INT_IRQ, pcm990_irq_handler);
	irq_set_irq_type(PCM990_CTRL_INT_IRQ, PCM990_CTRL_INT_IRQ_EDGE);
}
Exemplo n.º 5
0
static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
{
	unsigned long pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;

	do {
		desc->chip->ack(irq);	/* clear our parent IRQ */
		if (likely(pending)) {
			irq = PCM027_IRQ(0) + __ffs(pending);
			ipipe_handle_chained_irq(irq);
		}
		pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;
	} while (pending);
}
static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
{
    unsigned long pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;

    do {
        /* clear our parent IRQ */
        desc->irq_data.chip->irq_ack(&desc->irq_data);
        if (likely(pending)) {
            irq = PCM027_IRQ(0) + __ffs(pending);
            generic_handle_irq(irq);
        }
        pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;
    } while (pending);
}
Exemplo n.º 7
0
static void pcm990_unmask_irq(struct irq_data *d)
{
	int pcm990_irq = (d->irq - PCM027_IRQ(0));
	u8 val;

	/* the irq can be acknowledged only if deasserted, so it's done here */

	pcm990_irq_enabled |= (1 << pcm990_irq);

	val = pcm990_cpld_readb(PCM990_CTRL_INTSETCLR);
	val |= 1 << pcm990_irq;
	pcm990_cpld_writeb(val, PCM990_CTRL_INTSETCLR);

	pcm990_cpld_writeb(pcm990_irq_enabled, PCM990_CTRL_INTMSKENA);
}
Exemplo n.º 8
0
static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)
{
    unsigned long pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;

    do {
        GEDR(PCM990_CTRL_INT_IRQ_GPIO) =
                    GPIO_bit(PCM990_CTRL_INT_IRQ_GPIO);
        if (likely(pending)) {
            irq = PCM027_IRQ(0) + __ffs(pending);
            desc = irq_desc + irq;
            desc_handle_irq(irq, desc);
        }
        pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;
    } while (pending);
}
Exemplo n.º 9
0
static void pcm990_mask_ack_irq(unsigned int irq)
{
	int pcm990_irq = (irq - PCM027_IRQ(0));
	PCM990_INTMSKENA = (pcm990_irq_enabled &= ~(1 << pcm990_irq));
}
static void pcm990_mask_ack_irq(struct irq_data *d)
{
    int pcm990_irq = (d->irq - PCM027_IRQ(0));
    PCM990_INTMSKENA = (pcm990_irq_enabled &= ~(1 << pcm990_irq));
}