
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-8275 | arch/arm64/boot/dts/qcom/sa8295p.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
Troubleshooting
SPI Device Not Detected
SPI Device Not Detected
- Verify SPI node status is
"okay"in device tree - Verify
QUPAC_Access.csetsQUPV3_PROTOCOL_SPI,AC_HLOS,bLoad=TRUE
SPI Transfer Failures
SPI Transfer Failures
- Check GPIO drive strength and pull configuration
- Verify clock phase and polarity match the target device
GSI/DMA Mode Not Working
GSI/DMA Mode Not Working
- Verify
CONFIG_QCOM_GPI_DMA=m - Check
dmasanddma-namesin device tree - Verify
QUPAC_Access.csetsQUPV3_MODE_GSI

