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!