AnsweredAssumed Answered

Adding AXI-DMA to FMCOMMS3 breaks AD9361

Question asked by htorke on Aug 4, 2016
Latest reply on Aug 5, 2016 by larsc

I have the reference design for the FMCOMMS2-3 running successfully on the zc706 Xilinx board for the Zynq 7000.

 

If I attempt to add in a custom IP core, in this case to create a small delay in the TRx path, this works fine. What I want to do now is include an AXI-DMA interface to that core to let me set some control signals from Linux.

 

However, when I add in the AXI interface and use the autoconfig to connect that to the AXI-interconnect through the General port, that seems to break the DMA engine. Looking at the address editor, the axi-connection I put in successfully registers at address 0x43C00000, and all the other address mappings remain unchanged. However, when I start up the board, The AD9361 board is no longer recognized(It doesn't show up in the IIO Oscilloscope program). Also, when I try running a kernel module to try a DMA transfer to the address listed above, the DMA engine fails to allocate a tx_descriptor. This, I assume, is also why communication to the FMCOMMS3 board is failing.

 

Comparing the /dev/kmsg logs between the functional base design and the non-functional modified one, I see this as the difference between the two:

 

SUBSYSTEM=platform
DEVICE=+platform:70e00000.axi_hdmi
6,176,1481724,-;[drm] Initialized axi_hdmi_drm 1.0.0 20120930 on minor 0
4,177,1994212,-;SAMPL CLK: 61440000 tuning: RX
4,178,1996921,-;  0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
4,179,2000036,-;0:# # # # # # # # # # # # # # # #
4,180,2003151,-;1:# # # # # # # # # # # # # # # #
4,181,2006285,-;
3,182,2006469,-;ad9361 spi32766.0: ad9361_dig_tune: Tuning RX FAILED!
SUBSYSTEM=spi
DEVICE=+spi:spi32766.0
4,183,2509225,-;SAMPL CLK: 61440000 tuning: TX
4,184,2511934,-;  0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
4,185,2515049,-;0:# # # # # # # # # # # # # # # #
4,186,2518183,-;1:# # # # # # # # # # # # # # # #
4,187,2521298,-;
3,188,2521482,-;ad9361 spi32766.0: ad9361_dig_tune: Tuning TX FAILED!
SUBSYSTEM=spi
DEVICE=+spi:spi32766.0
4,189,2526643,-;cf_axi_adc: probe of 79020000.cf-ad9361-lpc failed with error -5
6,190,2532947,-;input: gpio_keys as /devices/soc0/gpio_keys/input/input0
6,191,2539693,-;rtc-pcf8563 5-0051: setting system clock to 1970-03-13 22:30:12 UTC (6215412)

27,200,5055167,-;systemd-udevd[1140]: could not open moddep file '/lib/modules/4.4.0/modules.dep.bin'
27,201,5262732,-;systemd-udevd[1135]: could not open moddep file '/lib/modules/4.4.0/modules.dep.bin'

 

whereas on the functional version, this comes up:

 

SUBSYSTEM=platform

DEVICE=+platform:70e00000.axi_hdmi

6,176,1448859,-;[drm] Initialized axi_hdmi_drm 1.0.0 20120930 on minor 0

6,177,2494037,-;cf_axi_adc 79020000.cf-ad9361-lpc: ADI AIM (9.00.b) at 0x79020000 mapped to 0xf0a38000, probed ADC AD9361 as MASTER

SUBSYSTEM=platform

DEVICE=+platform:79020000.cf-ad9361-lpc

6,178,2504727,-;input: gpio_keys as /devices/soc0/gpio_keys/input/input0

6,179,2511437,-;rtc-pcf8563 5-0051: setting system clock to 1970-03-13 22:39:39 UTC (6215979)

 

The only difference between the broken and functional versions are the bitstream, I am using the same fsbl and kernel image and uboot.

 

What do I need to do to reestablish connectivity to the FMCOMMS3 board?

Outcomes