
Signals
| Signal | Description |
|---|---|
| MOSI | Controller data output, target data input |
| MISO | Controller data input, target data output |
| SCLK | Clock generated by the controller |
| CS | Chip-select (active low); up to 4 chip-select lines per bus |
Transfer Modes by Subsystem
| Subsystem | Transfer Modes | Max Speed | Notes |
|---|---|---|---|
| Linux | FIFO, CPU DMA, GSI | 50 MHz | 4–32 bits per word; up to 4 CS |
| Boot | FIFO only | 50 MHz | Polling mode; GSI not supported |
| aDSP | Full/half duplex, synchronous | 50 MHz | Raw bit-level; no framing or error checking |
Interface Components
Device Tree Sources
| Platform | File |
|---|---|
| Dragonwing IQ-9075 | arch/arm64/boot/dts/qcom/lemans.dtsi |
APIs
| Subsystem | Header |
|---|---|
| Linux | include/uapi/linux/spi/spidev.h, include/linux/spi/spi.h |
| Boot | boot_images/boot/QcomPkg/Include/SpiApi.h |
| aDSP | adsp_proc/core/api/buses/spi_api.h |
Software Configuration
Linux Device Tree Example
QUPAC Access Control
Configuration Steps
Verification
Debugging
Enable Debug Logs
Troubleshooting
SPI Device Not Detected (/dev/spidev* missing)
SPI Device Not Detected (/dev/spidev* missing)
- Verify SPI node status is
"okay"in device tree - Verify
QUPAC_Access.csetsQUPV3_PROTOCOL_SPI,AC_HLOS,bLoad=TRUE
SPI Transfer Failures / Data Corruption
SPI Transfer Failures / Data Corruption
- Check GPIO drive strength and pull configuration in pinctrl
- Verify clock phase and polarity match the target device
- Use oscilloscope to check signal integrity
GSI/DMA Mode Not Working
GSI/DMA Mode Not Working
- Verify
CONFIG_QCOM_GPI_DMA=mis enabled - Check
dmasanddma-namesproperties in device tree - Verify
QUPAC_Access.csetsQUPV3_MODE_GSIandbAllowFifo=FALSE
Multiple Chip Select Issues
Multiple Chip Select Issues
Verify all CS pins are configured in pinctrl. Check device tree Test explicitly:
reg property:Boot Subsystem SPI Not Working
Boot Subsystem SPI Not Working
- Verify QUP wrapper node status is
"okay"and serial engine node is"disabled" - Confirm
FIFO_MODE = /bits/ 8 <1>(GSI not supported in boot) - Check
protocol_supportedincludesSPI_SUPPORTED - Verify
QUPAC_Access.csettings match boot requirements

