mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-06 20:54:00 -05:00
Add a new microchipsw target aimed add supporting Microchip switch SoC-s. Start by supporting LAN969x SoC-s as the first subtarget. Signed-off-by: Robert Marko <robert.marko@sartura.hr>
123 lines
3.3 KiB
Diff
123 lines
3.3 KiB
Diff
From 4b031c48133b762ef9bb6cb40b9ec040acaef970 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Bence=20Cs=C3=B3k=C3=A1s?= <csokas.bence@prolan.hu>
|
|
Date: Tue, 10 Jun 2025 10:22:54 +0200
|
|
Subject: [PATCH 108/112] spi: atmel-quadspi: Use `devm_dma_request_chan()`
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Leave releasing of DMA channels up to the devm facilities. This way we can
|
|
eliminate the rest of the "goto ladder".
|
|
|
|
Signed-off-by: Bence Csókás <csokas.bence@prolan.hu>
|
|
Link: https://patch.msgid.link/20250610082256.400492-3-csokas.bence@prolan.hu
|
|
Signed-off-by: Mark Brown <broonie@kernel.org>
|
|
---
|
|
drivers/spi/atmel-quadspi.c | 48 ++++++++++---------------------------
|
|
1 file changed, 13 insertions(+), 35 deletions(-)
|
|
|
|
--- a/drivers/spi/atmel-quadspi.c
|
|
+++ b/drivers/spi/atmel-quadspi.c
|
|
@@ -1257,18 +1257,21 @@ static int atmel_qspi_dma_init(struct sp
|
|
struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
|
|
int ret;
|
|
|
|
- aq->rx_chan = dma_request_chan(&aq->pdev->dev, "rx");
|
|
+ aq->rx_chan = devm_dma_request_chan(&aq->pdev->dev, "rx");
|
|
if (IS_ERR(aq->rx_chan)) {
|
|
ret = dev_err_probe(&aq->pdev->dev, PTR_ERR(aq->rx_chan),
|
|
"RX DMA channel is not available\n");
|
|
- goto null_rx_chan;
|
|
+ aq->rx_chan = NULL;
|
|
+ return ret;
|
|
}
|
|
|
|
- aq->tx_chan = dma_request_chan(&aq->pdev->dev, "tx");
|
|
+ aq->tx_chan = devm_dma_request_chan(&aq->pdev->dev, "tx");
|
|
if (IS_ERR(aq->tx_chan)) {
|
|
ret = dev_err_probe(&aq->pdev->dev, PTR_ERR(aq->tx_chan),
|
|
"TX DMA channel is not available\n");
|
|
- goto release_rx_chan;
|
|
+ aq->rx_chan = NULL;
|
|
+ aq->tx_chan = NULL;
|
|
+ return ret;
|
|
}
|
|
|
|
ctrl->dma_rx = aq->rx_chan;
|
|
@@ -1279,21 +1282,6 @@ static int atmel_qspi_dma_init(struct sp
|
|
dma_chan_name(aq->tx_chan), dma_chan_name(aq->rx_chan));
|
|
|
|
return 0;
|
|
-
|
|
-release_rx_chan:
|
|
- dma_release_channel(aq->rx_chan);
|
|
- aq->tx_chan = NULL;
|
|
-null_rx_chan:
|
|
- aq->rx_chan = NULL;
|
|
- return ret;
|
|
-}
|
|
-
|
|
-static void atmel_qspi_dma_release(struct atmel_qspi *aq)
|
|
-{
|
|
- if (aq->rx_chan)
|
|
- dma_release_channel(aq->rx_chan);
|
|
- if (aq->tx_chan)
|
|
- dma_release_channel(aq->tx_chan);
|
|
}
|
|
|
|
static const struct atmel_qspi_ops atmel_qspi_ops = {
|
|
@@ -1398,14 +1386,13 @@ static int atmel_qspi_probe(struct platf
|
|
|
|
/* Request the IRQ */
|
|
irq = platform_get_irq(pdev, 0);
|
|
- if (irq < 0) {
|
|
- err = irq;
|
|
- goto dma_release;
|
|
- }
|
|
+ if (irq < 0)
|
|
+ return irq;
|
|
+
|
|
err = devm_request_irq(&pdev->dev, irq, atmel_qspi_interrupt,
|
|
0, dev_name(&pdev->dev), aq);
|
|
if (err)
|
|
- goto dma_release;
|
|
+ return err;
|
|
|
|
pm_runtime_set_autosuspend_delay(&pdev->dev, 500);
|
|
pm_runtime_use_autosuspend(&pdev->dev);
|
|
@@ -1414,22 +1401,16 @@ static int atmel_qspi_probe(struct platf
|
|
|
|
err = atmel_qspi_init(aq);
|
|
if (err)
|
|
- goto dma_release;
|
|
+ return err;
|
|
|
|
err = spi_register_controller(ctrl);
|
|
if (err)
|
|
- goto dma_release;
|
|
+ return err;
|
|
|
|
pm_runtime_mark_last_busy(&pdev->dev);
|
|
pm_runtime_put_autosuspend(&pdev->dev);
|
|
|
|
return 0;
|
|
-
|
|
-dma_release:
|
|
- if (aq->caps->has_dma)
|
|
- atmel_qspi_dma_release(aq);
|
|
-
|
|
- return err;
|
|
}
|
|
|
|
static int atmel_qspi_sama7g5_suspend(struct atmel_qspi *aq)
|
|
@@ -1479,9 +1460,6 @@ static void atmel_qspi_remove(struct pla
|
|
|
|
ret = pm_runtime_get_sync(&pdev->dev);
|
|
if (ret >= 0) {
|
|
- if (aq->caps->has_dma)
|
|
- atmel_qspi_dma_release(aq);
|
|
-
|
|
if (aq->caps->has_gclk) {
|
|
ret = atmel_qspi_sama7g5_suspend(aq);
|
|
if (ret)
|