From: Bin Meng <bin.m...@windriver.com> ZynqMP QSPI supports SPI transfer using DMA mode, but currently this is unimplemented. When QSPI is programmed to use DMA mode, QEMU will crash. This is observed when testing VxWorks 7.
We added a basic CSU DMA model and the implementation is based on https://github.com/Xilinx/qemu/blob/master/hw/dma/csu_stream_dma.c Unfortunately the Xilinx fork of QEMU does not boot VxWorks. It looks like the fork has quite a lot of difference from the upstream QEMU. The CSU DMA model in the Xilinx fork seems to be quite complicated and has lots of functionalities. However right now our goal is to implement a minimum model that could be used to work with the GQSPI model to make the QSPI DMA functionality work. The model implements only the basic DMA transfer function of the DST part, verified along with ZynqMP GQSPI model. Other advanced features are not implemented. Changes in v3: - Implement DMA as a separate CSU DMA model - new patch: xlnx-zynqmp: Clean up coding convention issues - new patch: xlnx-zynqmp: Add XLNX CSU DMA module - new patch: xilinx_spips: Remove DMA related code from zynqmp_qspips Changes in v2: - Remove unconnected TYPE_STREAM_SINK link property - Add a TYPE_MEMORY_REGION link property, to allow board codes to tell the device what its view of the world that it is doing DMA to is - Replace cpu_physical_memory_write() with address_space_write() Xuzhou Cheng (5): hw/dma: xlnx_csu_dma: Implement a basic XLNX CSU DMA model hw/arm: xlnx-zynqmp: Clean up coding convention issues hw/arm: xlnx-zynqmp: Add XLNX CSU DMA module hw/ssi: xilinx_spips: Clean up coding convention issues hw/ssi: xilinx_spips: Remove DMA related code from zynqmp_qspips include/hw/arm/xlnx-zynqmp.h | 5 +- include/hw/dma/xlnx_csu_dma.h | 39 ++++ hw/arm/xlnx-zynqmp.c | 25 ++- hw/dma/xlnx_csu_dma.c | 444 ++++++++++++++++++++++++++++++++++++++++++ hw/ssi/xilinx_spips.c | 33 ++-- hw/arm/Kconfig | 1 + hw/dma/Kconfig | 4 + hw/dma/meson.build | 1 + 8 files changed, 528 insertions(+), 24 deletions(-) create mode 100644 include/hw/dma/xlnx_csu_dma.h create mode 100644 hw/dma/xlnx_csu_dma.c -- 2.7.4