* Regarding McBSP Int ...help needed...
@ 2005-12-15 12:42 Raghu_Mallya
2005-12-15 22:31 ` Matthew Percival
0 siblings, 1 reply; 2+ messages in thread
From: Raghu_Mallya @ 2005-12-15 12:42 UTC (permalink / raw)
To: linux-omap-open-source; +Cc: Toshihiro.Kobayashi, KishoreKumar sannapaneni
Hi:
Although not a very Linux oriented question, many of you have already
worked on this... I am facing a problem as below..
Overview
********
I am using DSP gateway for intercommunication process between ARM and
DSP in OMAP5910(custom Board). On the DSP side I am trying to read the
data from the external PCM through McBSP1 and trying to send the
receiving data to ARM using DSP gateway.
Problem
********
I am getting the first interrupt in the McBSP1 properly. But after this
my ISR dies off ie becomes inactive. I am not able to get any
interrupts.. My ISR code is as below
Void McBSPRxInterrupt(Void)
{
Uns McBSP1Data;
Uns InterruptStatus;
//code to check if the interrupt is from McBSP1 or McBSP3
InterruptStatus = inw(_LEV2_SIR_FIQ);
if(InterruptStatus & 0x0002)
{
McBSP1Data = inw(_MCBSP1_DRR1); // copy contents of McBSP
receive
//register to variable
}
}
As given in the Omap Manual the int mask get unmasked as soon as we read
the SIR_FIQ register... Am I doing some mistake...??? PLz help
Regards
Raghu
DISCLAIMER:
This email (including any attachments) is intended for the sole use of the intended recipient/s and may contain material that is CONFIDENTIAL AND PRIVATE COMPANY INFORMATION. Any review or reliance by others or copying or distribution or forwarding of any or all of the contents in this message is STRICTLY PROHIBITED. If you are not the intended recipient, please contact the sender by email and delete all copies; your cooperation in this regard is appreciated.
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Regarding McBSP Int ...help needed...
2005-12-15 12:42 Regarding McBSP Int ...help needed Raghu_Mallya
@ 2005-12-15 22:31 ` Matthew Percival
0 siblings, 0 replies; 2+ messages in thread
From: Matthew Percival @ 2005-12-15 22:31 UTC (permalink / raw)
To: Linux OMAP Open Source
G'Day,
> Void McBSPRxInterrupt(Void)
> {
> Uns McBSP1Data;
> Uns InterruptStatus;
>
> //code to check if the interrupt is from McBSP1 or McBSP3
> InterruptStatus = inw(_LEV2_SIR_FIQ);
>
> if(InterruptStatus & 0x0002)
> {
>
> McBSP1Data = inw(_MCBSP1_DRR1); // copy contents of McBSP
> receive
> //register to variable
>
> }
>
> }
It looks like you have the start right, but the end is missing
something. Here is an ISR from my DSP code:
void level21_handler(Arg arg)
{
MdUns irq = read_reg(DSP_L21_SIR_FIQ);
timer_handler();
write_reg(read_reg(DSP_L21_CONTROL) | NEW_FIQ_AGR, DSP_L21_CONTROL);
}
You need to write NEW_FIQ_AGR to DSP_L20_CONTROL (L2.0 for McBSP; L2.1
here because it is a GPTimer) at the end of your ISR. If I am
remembering correctly, this tells the Interrupt module that you have
completed servicing the current interrupt, and for it to calculate the
next interrupt to be serviced. This is in a 5912, but there should be
something equivalent in the 5910.
-- Matthew
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2005-12-15 22:31 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-15 12:42 Regarding McBSP Int ...help needed Raghu_Mallya
2005-12-15 22:31 ` Matthew Percival
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox