Hi Philip and Russel,

    Thanks for your reply.

 > I've looked at the CLPS7500FE data I have here (the pdf)
 > and I believe the original code as it stood was correct.

    Sorry, I don't think you are correct.  As I said
previously, when I request_irq (20, ...) I got infinite
number of interrupts coming so often so the system hangs.
The VIDC driver you have also request_irq(20, ....) and
the system just hangs.

    I have (very  luckily) found one way that makes my
driver works (sorry not the vidc driver), and I would like
to share with you. I dont know this is a dirty fix or a bug
of the kernel...
Here are the steps:

1) While request irq, make sure the 3rd argument is
    request_irq(20, audio_7500_irq, SA_INTERRUPT | SA_IRQNOMASK,
                "dai",NULL)

    Reason: in arch/arm/kernel/irq.c, function do_IRQ,

         if (!(action->flags & SA_INTERRUPT))
             __sti();

     If you dont set the SA_INTERRUPT flag, __sti() will be called
     and there are infinite interrupt generated and hang the system

    The VIDC driver:

         request_irq(hw_config->irq, vidc_sound_dma_irq, 0,
                     hw_config->name, &dma_start)

       has the 3rd argument set to 0 and DEFINITELY will hang the
      system.

2) This is really a dirty step... :-( :

     In include/asm-arm/arch-cl7500/irq.h:

     Remove:
     /*
     case 16 ... 22:
    irq_desc[irq].valid    = 1;
    irq_desc[irq].mask_ack = cl7500_mask_irq_dma;
    irq_desc[irq].mask     = cl7500_mask_irq_dma;
    irq_desc[irq].unmask   = cl7500_unmask_irq_dma;
    break;
     */

     Add:
     case 16 ... 22:
    irq_desc[irq].valid    = 1;
    irq_desc[irq].mask_ack = no_action;
    irq_desc[irq].mask     = no_action;
    irq_desc[irq].unmask   = no_action;
         break;

     Reason: in arch/arm/kernel/irq.c, function do_IRQ,

    spin_lock(&irq_controller_lock);
    desc->mask_ack(irq);
    spin_unlock(&irq_controller_lock);

    if mask_ack is cl7500_mask_irq_dma, it will regnerate
interrupt and the whole thing hangs...

    Can you tell me why? I end up using my own river
and not vidc. Sorry...

Yick
Hong Kong, China


Russell King - ARM Linux wrote:

> On Sat, Jul 14, 2001 at 07:54:34PM +0800, Yick Yan Lam wrote:
> 
>>Hi Philip and  Russel,
>>
>>        I have applied the patches provided by Philips for the VIDC 
>>audio driver for CLPS7500. However, when the module reaches the follwoing
>>line in vidc.c:
>>
> 
> I've looked at the CLPS7500FE data I have here (the pdf) and I believe the
> original code as it stood was correct.
> 
> I won't have a chance to look at this further until the long-awaited ROMs
> for the bush STB I have here turn up (still waiting...)
> 
> 



_______________________________________________
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
Please visit the above address for information on this list.

Reply via email to