• Sameer Pujar's avatar
    dmaengine: tegra210-adma: restore channel status · f33e7bb3
    Sameer Pujar authored
    Status of ADMA channel registers is not saved and restored during system
    suspend. During active playback if system enters suspend, this results in
    wrong state of channel registers during system resume and playback fails
    to resume properly. Fix this by saving following channel registers in
    runtime suspend and restore during runtime resume.
     * ADMA_CH_LOWER_SRC_ADDR
     * ADMA_CH_LOWER_TRG_ADDR
     * ADMA_CH_FIFO_CTRL
     * ADMA_CH_CONFIG
     * ADMA_CH_CTRL
     * ADMA_CH_CMD
     * ADMA_CH_TC
    Runtime PM calls will be inovked during system resume path if a playback
    or capture needs to be resumed. Hence above changes work fine for system
    suspend case.
    
    Fixes: f46b1957 ("dmaengine: tegra-adma: Add support for Tegra210 ADMA")
    Signed-off-by: default avatarSameer Pujar <spujar@nvidia.com>
    Reviewed-by: default avatarJon Hunter <jonathanh@nvidia.com>
    Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
    f33e7bb3
tegra210-adma.c 25 KB