I have two PetaLinx/Yocto projects for two separate boards. One is PetaLinux 2020.1/Yocto Zeus 3.0, and PetaLinux 2020.2/Yocto Zeus 3.0. These target different linux-xlnx 5.4 kernels.
I am trying to develop a custom layer with support for the AD7380, including the adi,axi-spi-engine, adi,axi-dmac, and a modified version of adi,ad7380 to take advantage of the DMA. This is because I have a data acquisition board that connects to either of the two base boards.
The PetaLinux kernel provides the IIO subsystem, and the custom layer provides packages libiio, libiio-tests, and libiio-iiod via IMAGE_FEATURES and FEATURE_PACKAGES in the filesystem, for each base board.
I now need to integrate the adi,axi-spi-engine, adi,axi-dmac, and adi,ad738x drivers into the system. Are these to be installed as loadable kernel modules? I assume the device tree will inform the kernel which modules to load at startup?
It looks like the spi-engine is a parent of the ADC driver, so those are connected by the device tree. And there is a handle to a DMA controller in the AD7380 device tree node to inform it of the DMA to use.
I also notice that the axi-spi-engine has been mainlined, but that I'll probably have to modify the driver to provide offloading support according to https://wiki.analog.com/resources/tools-software/linux-drivers/spi/spi_engine
I have HDL in the FPGA that is modeled after the zedboard AD7380 FMC project.
When I attempt to boot the system, I am getting a kernel panic with no useful messages at what stage there is a problem. I suspect I am not building and installing these drivers correctly. Is there an example of how these drivers get compiled and installed in Yocto/PetaLinux? Are there any other things I'm not thinking of that are needed to complete the integration of these drivers?