]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
dmaengine: apple-admac: Avoid accessing registers in probe
authorSasha Finkelstein <fnkl.kernel@gmail.com>
Sun, 24 Nov 2024 15:48:28 +0000 (16:48 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Jan 2025 09:30:50 +0000 (10:30 +0100)
commit 8d55e8a16f019211163f1180fd9f9fbe05901900 upstream.

The ADMAC attached to the AOP has complex power sequencing, and is
power gated when the probe callback runs. Move the register reads
to other functions, where we can guarantee that the hardware is
switched on.

Fixes: 568aa6dd641f ("dmaengine: apple-admac: Allocate cache SRAM to channels")
Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com>
Link: https://lore.kernel.org/r/20241124-admac-power-v1-1-58f2165a4d55@gmail.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/dma/apple-admac.c

index cac4532fe23a973c5074d9eefa527d90e77e0131..1e6d13278c5a910863f617e7856922d6e4b86367 100644 (file)
@@ -152,6 +152,8 @@ static int admac_alloc_sram_carveout(struct admac_data *ad,
 {
        struct admac_sram *sram;
        int i, ret = 0, nblocks;
+       ad->txcache.size = readl_relaxed(ad->base + REG_TX_SRAM_SIZE);
+       ad->rxcache.size = readl_relaxed(ad->base + REG_RX_SRAM_SIZE);
 
        if (dir == DMA_MEM_TO_DEV)
                sram = &ad->txcache;
@@ -911,12 +913,7 @@ static int admac_probe(struct platform_device *pdev)
                goto free_irq;
        }
 
-       ad->txcache.size = readl_relaxed(ad->base + REG_TX_SRAM_SIZE);
-       ad->rxcache.size = readl_relaxed(ad->base + REG_RX_SRAM_SIZE);
-
        dev_info(&pdev->dev, "Audio DMA Controller\n");
-       dev_info(&pdev->dev, "imprint %x TX cache %u RX cache %u\n",
-                readl_relaxed(ad->base + REG_IMPRINT), ad->txcache.size, ad->rxcache.size);
 
        return 0;