AnsweredAssumed Answered

MSI Interrupt not working in Variscite MX6 Board

Question asked by Iqra Javed on Apr 22, 2018
Latest reply on May 31, 2018 by Yuri Muhin

Hi all, 


I am working on PCIe driver for Variscite board. I am developing the driver without any OS (linux or other). 

Currently, I/O and MEM read write are working and legacy interrupt is also working. But I am facing problems in MSI. Kindly guide me regarding this. 


The configurations that I have done are: 

1) I have programmed Data register (offset 0x5C) of EP with value 0x0000 and MSI address register (offset 0x54 ) of EP with some address (say 0x01FF8000 as i saw it in the linux pci-e-ep-driver)

2) MSI of EP is enabled by setting MSI_Enable bit of MSI control register (offset 0x52 bit 0)

3) I have configured the RC register MSI controller Address Register (0x01FFC820) with the same address as that of MSI address in EP (i.e., 0x01FF8000). 

4) MSI interrupt #0 enable register (0x01FFC828) is written with the value 0x01 and the Mask register (0x01FFC82C) with value 0

5) The interrupt disable in the RC is set in the command register (0x01FFC004) by setting 10th bit.

6) MSI inbound region # 1 is configured in address match mode by setting following parameters to iATU 

         iATU_ViewPort = 0x80000001;

         iATU_Control1 = 0x0;

         iATU_Control2 = 0x80000000;

         iATU_LowerBaseAddr = 0x01FF8000;

         iATU_UPBaseAddr   = 0;

         iATU_LimitAddr = 0x1FFF;

         iATU_LowerTargetAddr = 0x4F800000; (inbound memory)

         iATU_UpTgtAddr = 0;


After all these configurations I receive no MSI interrupt. Can anyone guide me regarding this strange behavior? 



Iqra Javed