This is somewhat a followup to: Kernel boot failure when customizing reference design
As I stated previously, I'm working with the reference design from 2014_R2-2015_02_06 on a ZC706. The base reference design worked fine, and I was able to modify the hardware and software to operate without the HDMI components.
Now we're trying to remove the TX components because our application is RX only. At the HDL level, I think our FPGA guy only removed the DMA controller. The axi_ad9361 component remained unchanged and the ad9361_adc_dma DMA controller is still there as well.
At the DeviceTree level, I initially removed both the axi-dmac corresponding to the TX path as well as the axi-ad9364-dds entry. In that configuration, the ad9361 driver failed to initialize with a "Tuning TX FAILED" error message. I've tried the following workaround:
- Put the axi-ad9364-dds entry back in the DeviceTree with the DMA properties removed, hoping the DMA was an optional feature of this driver. That did not appear to be the case, something printed errors about failing to request the DMA slave channel even though I could not find code in the ax-ad9364-dds driver itself that requests the channel.
- Remove the axi-ad9364-dds entry from the DeviceTree and changed the adi,digital-interface-tune-skip-mode parameter of the ad9361-phy entry to "1".
The second approach booted without issue, but a remote IIO connection with the Python bindings crashed. It previously worked:
Loading filter from redacted.ftr
ERROR: Unable to read response:
Traceback (most recent call last):
File "redacted.py", line 117, in <module>
main(args.host, args.filter, args.plot)
File "redacted.py", line 90, in main
rx_buffer = iio.Buffer(rx_stream_dev, 1024*16, False)
File "/home/jeff/libiio/bindings/python/iio.py", line 445, in __init__
self._buffer = _create_buffer(device._device, samples_count, cyclic)
File "/home/jeff/libiio/bindings/python/iio.py", line 25, in _checkNull
raise Exception("Null pointer")
Exception: Null pointer
Exception AttributeError: "'Buffer' object has no attribute '_buffer'" in <bound method Buffer.__del__ of <iio.Buffer object at 0xb4321d2c>> ignored
Am I still missing something that needed to be modified for a no-TX setup?
- I saw a post that alluded to portions of the TX chain being required to tune the RX. Can you explain (or link to) more information about that process as implemented with the Linux drivers?
- I was also having a little bit of trouble figuring out how the difference drivers reference and call each other. I didn't see that in AD9361 high performance, highly integrated RF Agile Transceiver™ Linux device driver [Analog Devices Wiki]. For example. how does removing the dds-core device influence the ad9361-phy device in the ways that I have seen?