Alexey Galakhov wrote:
> 2011/4/30 Gilles Chanteperdrix <[email protected]>
> 
>> Please try the following patch:
>>
>> diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
>> index c48d99a..8a29d9d 100644
>> --- a/arch/arm/plat-s3c24xx/irq.c
>> +++ b/arch/arm/plat-s3c24xx/irq.c
>> @@ -627,7 +627,7 @@ void __init s3c24xx_init_irq(void)
>>                default:
>>                        //irqdbf("registering irq %d (s3c irq)\n", irqno);
>>                        set_irq_chip(irqno, &s3c_irq_chip);
>> -                       set_irq_handler(irqno, handle_edge_irq);
>> +                       set_irq_handler(irqno, handle_level_irq);
>>                        set_irq_flags(irqno, IRQF_VALID);
>>                }
>>        }
>> @@ -647,14 +647,14 @@ void __init s3c24xx_init_irq(void)
>>        for (irqno = IRQ_EINT0; irqno <= IRQ_EINT3; irqno++) {
>>                irqdbf("registering irq %d (ext int)\n", irqno);
>>                set_irq_chip(irqno, &s3c_irq_eint0t4);
>> -               set_irq_handler(irqno, handle_edge_irq);
>> +               set_irq_handler(irqno, handle_level_irq);
>>                set_irq_flags(irqno, IRQF_VALID);
>>        }
>>
>>        for (irqno = IRQ_EINT4; irqno <= IRQ_EINT23; irqno++) {
>>                irqdbf("registering irq %d (extended s3c irq)\n", irqno);
>>                set_irq_chip(irqno, &s3c_irqext_chip);
>> -               set_irq_handler(irqno, handle_edge_irq);
>> +               set_irq_handler(irqno, handle_level_irq);
>>                set_irq_flags(irqno, IRQF_VALID);
>>        }
>>
>> @@ -686,7 +686,7 @@ void __init s3c24xx_init_irq(void)
>>        for (irqno = IRQ_TC; irqno <= IRQ_ADC; irqno++) {
>>                irqdbf("registering irq %d (s3c adc irq)\n", irqno);
>>                set_irq_chip(irqno, &s3c_irq_adc);
>> -               set_irq_handler(irqno, handle_edge_irq);
>> +               set_irq_handler(irqno, handle_level_irq);
>>                set_irq_flags(irqno, IRQF_VALID);
>>        }
>>
>> diff --git a/arch/arm/plat-samsung/irq-uart.c
>> b/arch/arm/plat-samsung/irq-uart.c
>> index 4f8c102..1da5aff 100644
>> --- a/arch/arm/plat-samsung/irq-uart.c
>> +++ b/arch/arm/plat-samsung/irq-uart.c
>> @@ -88,13 +88,13 @@ static void s3c_irq_demux_uart(unsigned int irq, struct
>> irq_desc *desc)
>>        int base = uirq->base_irq;
>>
>>        if (pend & (1 << 0))
>> -               generic_handle_irq(base);
>> +               ipipe_handle_chained_irq(base);
>>        if (pend & (1 << 1))
>> -               generic_handle_irq(base + 1);
>> +               ipipe_handle_chained_irq(base + 1);
>>        if (pend & (1 << 2))
>> -               generic_handle_irq(base + 2);
>> +               ipipe_handle_chained_irq(base + 2);
>>        if (pend & (1 << 3))
>> -               generic_handle_irq(base + 3);
>> +               ipipe_handle_chained_irq(base + 3);
>>  }
>>
>>  static struct irq_chip s3c_irq_uart = {
>>
>>
>> It works!! Thank you!

Ok. Could you try only keeping the part with ipipe_handle_chained_irq,
leaving the handle_edge_irqs?

-- 
                                                                Gilles.

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to