There are large number of QSPI irqs that fire during boot/init and later on every suspend/resume. This could be made faster by doing DMA instead of PIO. Below is comparison for number of interrupts raised in 2 scenarios... Boot up and stabilise Suspend/Resume Sequence PIO DMA ======================= Boot-up 69088 19284 S/R 5066 3430 Speed test results... spi-nor read times in sec after 2 min uptime ============================================ PIO - Iterations-1000, min=3.18, max=3.74, avg=3.53 DMA - Iterations-1000, min=1.21, max=2.28, avg=1.79 spi-nor write times in sec after 2 min uptime ============================================= PIO - Iterations-1000, min=3.20, max=8.24, avg=3.58 DMA - Iterations-1000, min=1.25, max=5.13, avg=1.82 Further testing performed... a) multiple entries in sgt (simulated by max_dma_len = 1024) b) fallback to pio (simulated by dma setup failure) Vijaya Krishna Nivarthi (5): spi: dt-bindings: qcom,spi-qcom-qspi: Add iommus arm64: dts: qcom: sc7180: Add stream-id of qspi to iommus arm64: dts: qcom: sc7280: Add stream-id of qspi to iommus arm64: dts: qcom: sdm845: Add stream-id of qspi to iommus spi: spi-qcom-qspi: Add DMA mode support --- v4 -> v5: - Added Reviewed-by tags to dtsis - Addressed review comments in driver v3 -> v4: - Dropped unaligned dma buffer handling - Added sdm845, sc7180 dtsis to the series v2 -> v3: - Modified commit messages - Made a change to driver based on re-review v1 -> v2: - Added documentation file to the series - Made changes to driver based on HPG re-review --- .../bindings/spi/qcom,spi-qcom-qspi.yaml | 3 + arch/arm64/boot/dts/qcom/sc7180.dtsi | 1 + arch/arm64/boot/dts/qcom/sc7280.dtsi | 1 + arch/arm64/boot/dts/qcom/sdm845.dtsi | 1 + drivers/spi/spi-qcom-qspi.c | 218 ++++++++++++++++++++- 5 files changed, 218 insertions(+), 6 deletions(-) -- Qualcomm INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by the Linux Foundation.