• Vijaya Krishna Nivarthi's avatar
    spi: spi-geni-qcom: Select FIFO mode for chip select · 4c329f5d
    Vijaya Krishna Nivarthi authored
    Spi geni driver switches between FIFO and DMA modes based on xfer length.
    FIFO mode relies on M_CMD_DONE_EN interrupt for completion while DMA mode
    relies on XX_DMA_DONE.
    During dynamic switching, if FIFO mode is chosen, FIFO related interrupts
    are enabled and DMA related interrupts are disabled. And viceversa.
    Chip select shares M_CMD_DONE_EN interrupt with FIFO to check completion.
    Now, if a chip select operation is preceded by a DMA xfer, M_CMD_DONE_EN
    interrupt would have been disabled and hence it will never receive one
    resulting in timeout.
    
    For chip select, in addition to setting the xfer mode to FIFO,
    select_mode() to FIFO so that required interrupts are enabled.
    
    Fixes: e5f0dfa7 ("spi: spi-geni-qcom: Add support for SE DMA mode")
    Suggested-by: Praveen Talari <quic_ptalari@quicinc.com
    Signed-off-by: Vijaya Krishna Nivarthi <quic_vnivarth@quicinc.com
    Reviewed-by: Douglas Anderson <dianders@chromium.org
    Link: https://lore.kernel.org/r/1683626496-9685-1-git-send-email-quic_vnivarth@quicinc.com
    Signed-off-by: Mark Brown <broonie@kernel.org
    4c329f5d
spi-geni-qcom.c 32.6 KB