Skip to content

Commit 85e9396

Browse files
WhatAmISupposedToPutHerejannau
authored andcommitted
dmaengine: apple-admac: Avoid accessing registers in probe
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: 568aa6d ("dmaengine: apple-admac: Allocate cache SRAM to channels") Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com>
1 parent 03d8774 commit 85e9396

1 file changed

Lines changed: 2 additions & 5 deletions

File tree

drivers/dma/apple-admac.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ static int admac_alloc_sram_carveout(struct admac_data *ad,
153153
{
154154
struct admac_sram *sram;
155155
int i, ret = 0, nblocks;
156+
ad->txcache.size = readl_relaxed(ad->base + REG_TX_SRAM_SIZE);
157+
ad->rxcache.size = readl_relaxed(ad->base + REG_RX_SRAM_SIZE);
156158

157159
if (dir == DMA_MEM_TO_DEV)
158160
sram = &ad->txcache;
@@ -912,12 +914,7 @@ static int admac_probe(struct platform_device *pdev)
912914
goto free_irq;
913915
}
914916

915-
ad->txcache.size = readl_relaxed(ad->base + REG_TX_SRAM_SIZE);
916-
ad->rxcache.size = readl_relaxed(ad->base + REG_RX_SRAM_SIZE);
917-
918917
dev_info(&pdev->dev, "Audio DMA Controller\n");
919-
dev_info(&pdev->dev, "imprint %x TX cache %u RX cache %u\n",
920-
readl_relaxed(ad->base + REG_IMPRINT), ad->txcache.size, ad->rxcache.size);
921918

922919
return 0;
923920

0 commit comments

Comments
 (0)