A question about the irq registration between SDK1.6 and SDK2.0

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

A question about the irq registration between SDK1.6 and SDK2.0

565 Views
zhangyunfei
Contributor I

Hi
    Dear sir.
We are using B4860qds. Now we want to update the SDK from SDK1.6 to SDK2.0. In the SDK1.6 version we use the MPIC Core 0 to interrupt. When DSP writes 1 to the MPIC_IPIDR3 register, an interrupt occurs to linux kernel.The irq requested as follows:

 

#define IPID3_IRQ_NUM 510

np = of_find_node_by_name(NULL, "pic");

irqhost = irq_find_host(np);

vipi = irq_find_mapping(irqhost, IPID3_IRQ_NUM);

    if (NO_IRQ == vipi) {

        vipi = irq_create_mapping(irqhost, IPID3_IRQ_NUM);

}

request_irq(IPID3_IRQ_NUM, follow_dsp_isr, IRQF_NO_SUSPEND, "follow_dsp_isr", NULL);

 It works well on SDK1.6.

When we use the same code on SDK2.0,the problem occurs.After irq requests,we use “cat /proc/intterupts”to find as follows:

510: 0   0   0   0    0    0    0    0   OpenPIC   510 Edge dsp_isr

When DSP writes 1 to the MPIC_IPIDR3 register,linux kernel can no longer receive interrupts.

So I'd like to ask you a question. If we don’t use device tree,how do I calculate the irq number? And is anyting different between SDK1.6 and SDK2.0 in the irq registration?

0 Kudos
0 Replies