We are currently developing a new application and have run into a problem when we try to access the AD9361/AD9364 DDS Core LPC driver (implemented in "drivers/iio/frequency/cf_axi_dds.c") via the /sys tree. We are using a Xilinx ZC702 system with a FMCOMMS4 daughterboard as our development system and build a custom kernel using Yocto 1.18 ("FIDO"); the kernel is built from the AD Linux tree (2015_R1 branch, GIT commit ID last used was "6f681f11f1a13cf1aa3a32487495e4b049641c85").
When the system boots it detects the AD9364 chip correctly and appears to initialise the CF_AXI_DDS_DDS driver correctly; entries for the device appear in the /sys tree at /sys/devices/soc0/amba@0/79024000.cf-ad9361-dds-core-lpc/iio:device3. Logging in and immediately entering the command cat /sys/devices/soc0/amba@0/79024000.cf-ad9361-dds-core-lpc/iio:device3/buffer/enable results in a value of 0 being displayed (this is expected behaviour). Entering the command echo 0 > /sys/devices/soc0/amba@0/79024000.cf-ad9361-dds-core-lpc/iio:device3/buffer/enable does not result in any messages, and a subsequent cat command results in a valueof 0 being displayed (again this is expected behaviour). Entering the command echo 1 > /sys/devices/soc0/amba@0/79024000.cf-ad9361-dds-core-lpc/iio:device3/buffer/enable results in an error message sh: write error: Invalid argument; we would expect this to return no error and result in a subsequent cat command displaying a value of 1.
If we use the example BSP supplied by AD with the FMCOMMS4 board (dated January 2014) we see slightly different behaviour; attempting to write "1" to the buffer/enable /sys entry for the CF_AXI_DDS_DDS results in the error messages:
Buffer not started: buffer preenable failed (-22)
-bash: echo: write error: Invalid argument
We are probably missing something obvious but I cannot see what it could be. Any clues would be appreciated.
Attached are copies of our kernel configuration, device tree and kernel boot log for the development system if these are any help.