linux
linux copied to clipboard
Add driver for new axi-tdd-ng
Disclaimer: The device for this driver is still undergoing development and verification, thus this might not necessarily be the final register layout, however significant changes are not expected to occur.
This PR introduces the driver, device tree documentation and an example device tree for demonstration purposes. The driver can be tested using a script like the following, and once more device documentation becomes available it will be linked accordingly.
The development progress of the HDL can be tracked here: https://github.com/analogdevicesinc/hdl/tree/dev_tdd/library/axi_tdd_ng
Note that this driver is still missing some input verification features, i.e. it is not verifying if the provided values will actually fit the registers, who's width can be configured at synthesis time. It also does not warn the user if they attempt to write to registers which are not accepting new data because the device is enabled. The exact shape of those features and limitations and how they should be presented to userspace is something i'd like to get some feedback on. (Do we actually return an error, silently ignore the write, truncate/clamp the value to fit?)
To test the driver, a script like the following can be used:
#!/usr/bin/bash
BASE_DIR="/sys/bus/platform/devices/fpga-axi@0/84a00000.tdd"
cd $BASE_DIR
echo 1000 > frame_length_ms
echo 1000 > startup_delay_ms
echo 100 > burst_count
for CHANNEL in {0..7}
do
echo 1 > out_channel${CHANNEL}_enable
echo $((${CHANNEL} * 100)) > out_channel${CHANNEL}_on_ms
echo $(((1+${CHANNEL}) * 100)) > out_channel${CHANNEL}_off_ms
done
echo 1 > enable
echo 1 > sync_soft
Closing this as there was no more feedback on it....
Update:
- Created the following branch: https://github.com/analogdevicesinc/linux/tree/axi_tdd
- Removed 'NG' from the IP name and driver since the new IP will be named: axi_tdd
- Tested in hardware on a ZedBoard with adv7511 as an example
- The development progress of the HDL was moved here: https://github.com/analogdevicesinc/hdl/tree/dev_tdd_pr
Update: The HDL code has been merged into master.
Update: The driver development has been moved to: https://github.com/analogdevicesinc/linux/tree/dev_phaser
Closing this one... Being done in #2168