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.