Hello World,
I am a software engineer from Hong Kong.
Now I am assigned to write the DAC (audio) driver for CLPS7500FE board and I
am stuck in a problem for several days already...
From the sample C program from SDT from Cirrus Logic, when I set some
bits of certain registers, the hardware will start generating interrupts,
and in the
sample interrupt service routine, I just need to set the starting address
and the
ending address of the sound data in RAM, the hardware will start playing the
sound data and when runs out of data, it generates interrupt again so the
ISR
can set the starting and ending address of next set of data to be played...
Now I need to change the above idea into a character device in Linux.
I have checked that when I set the appropiate hardware bits in init_module
to start playing some sound, I DO get interrupt, and when I do a printk in
doIRQ
funtion and I found the interrupt number is 20. With this in mind, I rewrite
my driver
so that when in init_module, I do:
init_module( ...) {
code_that_disable_the_sound_harware...;
request_irq(DMAS0 /*20*/, my_handler, .....);
other_initialisation....
}
and in my_handler, I do nothing.
When I insert modules, there seems infinite number of interrupt coming,
and
the computer hangs!!!!!
Can some one please kindly tell me what did I do wrong?????
How possibly can I register irq number 20? Please help!!!!!!!!!!!!!
Yick
Hong Kong, China
_______________________________________________
http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
Please visit the above address for information on this list.