How to confirm the IRQ number of IPI(interprocecssor interrupts)?

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

How to confirm the IRQ number of IPI(interprocecssor interrupts)?

684 Views
freescale-tomzh
Contributor II

Hi,

   We are using a customized boards base on B4860, the SDK we're using is SDK1.6.

Now, a process run on e6500 core need to receive messages from DSP SC3900 core through interrupts. But I don't know how to confirm the IRQ number through IPI. Our steps are as follows:

1. In the DSP program, we write 0x00000001 to private IPIDR3 core 0, trig the interrupt.

2. In the driver program, we request irq as follows:

np = of_find_node_by_name(NULL, "pic");
if (NULL == np) {
   pr_err( "%s: Fail to find node.\n", __func__);
   err = -ENXIO;
}

irqhost = irq_find_host(np);
if (NULL == irqhost ){
   pr_err("%s: Fail in irq_find_host.\n", __func__);
   err = -ENXIO;
}

vipi = irq_find_mapping(irqhost, IPID3_IRQ_NUM);
printk("vipi is: %d\n",vipi);
if (NO_IRQ == vipi) {
   printk("vipi is NO_IRQ\n");
   vipi = irq_create_mapping(irqhost, IPID3_IRQ_NUM);
   printk("vipi is: %d\n",vipi);
   if (NO_IRQ == vipi) {
      pr_err("%s: Failed to map irq.\n", __func__);
      err = -ENXIO;
   }

}

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

My question is how to confirm the value of IPID3_IRQ_NUM?

I have tried some values, but it fails when the process runs. If I use  Interprocessor interrupts , how to get the maping IRQ number? thanks!

0 Kudos
1 Reply

546 Views
yipingwang
NXP TechSupport
NXP TechSupport

The dual thread e6500 cores and SC3900FP FVP cores can communicate in several ways:

The Queue Manager (described in Queue manager (QMan)) can be used to transfer messages/tasks between cores.

MPIC inter-core communication flows.
B4860 instantiates virtual interrupt controllers. These interrupts are connected to theSC3900FP FVP cores. The e6500 cores and SC3900FP FVP cores can activate these interrupts.

The dual-thread e6500 cores and SC3900FP FVP cores share the same software semaphore mechanism, and can use it for semaphoring.

The dual thread e6500 cores and SC3900FP FVP cores can send doorbells to each other via the CoreNet fabric.

Eight hardware semaphores are instantiated.

They may be used by internal and external masters.
In addition, there is an interrupt mesh network between the SC3900FP FVP cores

 

0 Kudos