Beagleboard XM IVA2.2 support in kernel 3.11

180 views
Skip to first unread message

jernej....@gmail.com

unread,
Oct 30, 2013, 2:20:21 PM10/30/13
to beagl...@googlegroups.com
Hi,

I am trying to enable IVA2.2 device in DM3730 on Beagleboard XM. I have patched 3.11.4 kernel in order to define CONFIG_OMAP_IOMMU_IVA2 in file omap_hwmod_3xxx_data.c. When I boot the kernel I am getting following message:

[    1.000732] genirq: Flags mismatch irq 28. 00000080 (omap-iommu.1) vs. 00000020 (DMA)
[    1.000793] omap-iommu: probe of omap-iommu.1 failed with error -16

What am I doing wrong? Help appreciated.

Thanks.

Jernej


jernej....@gmail.com

unread,
Nov 3, 2013, 3:27:30 AM11/3/13
to beagl...@googlegroups.com, jernej....@gmail.com
Hi,

I've found out what was the problem. It turns out that OMAP_INTC_START offset was missing in the structure below.

static struct omap_hwmod_irq_info omap3xxx_mmu_iva_irqs[] = {
{ .irq = 28 + OMAP_INTC_START, },
{ .irq = -1 }
};

BR,
Jernej

Dne sreda, 30. oktober 2013 19:20:21 UTC+1 je oseba jernej....@gmail.com napisala:

shane...@gmail.com

unread,
Dec 4, 2013, 8:08:20 AM12/4/13
to beagl...@googlegroups.com, jernej....@gmail.com
Jernej,
Did you get the IVA2.2 working?  I'm assuming your using dsplink?  I added your fix but now I'm getting the following error message when using dsplink:
genirq: Flags mismatch irq 28. 00000000 (DSPLINK) vs. 00000020 (DMA)
Regards,
Shane

Allan Granados

unread,
Dec 31, 2014, 9:30:13 PM12/31/14
to beagl...@googlegroups.com, jernej....@gmail.com
Hi, as Im using yocto to construct the dsplink, there is already a fix for this mismatch, there is a patch made by Enric Balletbo in the meta-ti layer which modify the irq for newer kernels.

Index: dsplink_linux_1_65_00_03/dsplink/gpp/src/osal/Linux/2.6.18/isr.c
===================================================================
--- dsplink_linux_1_65_00_03.orig/dsplink/gpp/src/osal/Linux/2.6.18/isr.c
+++ dsplink_linux_1_65_00_03/dsplink/gpp/src/osal/Linux/2.6.18/isr.c
@@ -286,7 +286,11 @@ ISR_Create (IN  IsrProc             fnIS

         if (DSP_SUCCEEDED (status)) {
             (*isrObj)->signature = SIGN_ISR       ;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,7,0)
             (*isrObj)->irq       = intObj->intId  ;
+#else
+            (*isrObj)->irq       = intObj->intId + NR_IRQS ;
+#endif
             (*isrObj)->enabled   = FALSE          ;
             (*isrObj)->dspId     = intObj->dspId  ;
             (*isrObj)->checkFunc = intObj->checkFunc  ;


I incorporate this to my yocto recipes and the messagegpp and the ringio examples are working. Hope this could help you.

Regards
--Allan Granados
Reply all
Reply to author
Forward
0 new messages