We have a problem interfacing a Xiinx Spartan-6 FPGA to pcie port of iMX6q on our custom board.
We can detect the device using pci-utils command lspci but cannot read/write access to the device using mmap() (we used memtool)
We get the following error,
| Reading 0x1 count starting at add[ 347.307257] Unhandled fault: external abort on non-linefetch (0x1018) at 0x76f3b000 | |
| address 0x01300000 | |
Bus error
We think this is beacuse the memory is not defined in /proc/iomem.
Do we need to write a driver for the device even if it is detected .
And how to assign this memory region in the pcie attribute in devicetree.
Currently the pcie part looks like this,
pcie: pcie@0x01000000 {
compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
reg = <0x01ffc000 0x4000>; /* DBI */
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000 /* configuration space */
0x81000000 0 0 0x01f80000 0 0x00010000 /* downstream I/O */
0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
num-lanes = <1>;
interrupts = <0 123 0x04>;
clocks = <&clks 189>, <&clks 187>, <&clks 144>, <&clks 212>;
clock-names = "pcie_ref_125m", "sata_ref_100m", "pcie_axi", "lvds_gate";
status = "okay";
};
I have attached lspci verbose output , /proc/iomem output and the error.
We think it has something to do with the ranges filed but cannot fully understand how to change for our device.
Original Attachment has been moved to: error.log.zip
Original Attachment has been moved to: iomem.zip
Original Attachment has been moved to: lspci_verbose.log.zip
Original Attachment has been moved to: lspci.log.zip