Re: [PATCH 5.10.y-cip 05/24] ASoC: sh: rz-ssi: Add SSI DMAC support
Lad Prabhakar
Hi Pavel,
Thank you for the review.
toggle quoted message
Show quoted text
Thank you for the review.
-----Original Message-----Ouch you are right, rz_ssi_release_dma_channels() needs to be called in the error path.
From: Pavel Machek <pavel@...>
Sent: 21 April 2022 09:33
To: Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@...>
Cc: cip-dev@...; Nobuhiro Iwamatsu
<nobuhiro1.iwamatsu@...>; Pavel Machek <pavel@...>; Biju Das
<biju.das.jz@...>
Subject: Re: [PATCH 5.10.y-cip 05/24] ASoC: sh: rz-ssi: Add SSI DMAC
support
Hi!@@ -775,8 +949,18 @@ static int rz_ssi_probe(struct platform_device*pdev)AFAICT rz_ssi_dma_request() allocates resources and
ssi->audio_mck = ssi->audio_clk_1 ? ssi->audio_clk_1 : ssi-
audio_clk_2;
- ssi->playback.transfer = rz_ssi_pio_send;
- ssi->capture.transfer = rz_ssi_pio_recv;
+ /* Detect DMA support */
+ ret = rz_ssi_dma_request(ssi, &pdev->dev);
+ if (ret < 0) {
+ dev_warn(&pdev->dev, "DMA not available, using PIO\n");
+ ssi->playback.transfer = rz_ssi_pio_send;
+ ssi->capture.transfer = rz_ssi_pio_recv;
+ } else {
+ dev_info(&pdev->dev, "DMA enabled");
+ ssi->playback.transfer = rz_ssi_dma_transfer;
+ ssi->capture.transfer = rz_ssi_dma_transfer;
+ }
+
ssi->playback.priv = ssi;
ssi->capture.priv = ssi;
rz_ssi_release_dma_channels() is needed to free them if we fail.
But in most failure paths below, that's not done, with one exception:
Cheers,
Prabhakar
@@ -829,6 +1017,8 @@ static int rz_ssi_probe(struct platform_device*pdev)rz_ssi_soc_dai,Best regards,
ARRAY_SIZE(rz_ssi_soc_dai));
if (ret < 0) {
+ rz_ssi_release_dma_channels(ssi);
+
pm_runtime_put(ssi->dev);
pm_runtime_disable(ssi->dev);
reset_control_assert(ssi->rstc);
Pavel
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany