summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Hovold <johan@kernel.org>2026-05-05 10:29:06 +0300
committerMark Brown <broonie@kernel.org>2026-05-11 03:55:52 +0300
commit76a24627b98ca712df8724985a4601c502b7875f (patch)
tree8a5cbd93c8559da2c9c68c5197ab2dd8d50b6cc1
parent3a14bf4f5453121cae3cbdfb6180317c5d74f424 (diff)
downloadlinux-76a24627b98ca712df8724985a4601c502b7875f.tar.xz
spi: ti-qspi: switch to managed controller allocation
Switch to device managed controller allocation to simplify error handling and to avoid having to take another reference during deregistration. Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://patch.msgid.link/20260505072909.618363-18-johan@kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--drivers/spi/spi-ti-qspi.c30
1 files changed, 9 insertions, 21 deletions
diff --git a/drivers/spi/spi-ti-qspi.c b/drivers/spi/spi-ti-qspi.c
index 1fbd710d616f..2a8548810f84 100644
--- a/drivers/spi/spi-ti-qspi.c
+++ b/drivers/spi/spi-ti-qspi.c
@@ -765,7 +765,7 @@ static int ti_qspi_probe(struct platform_device *pdev)
int ret = 0, num_cs, irq;
dma_cap_mask_t mask;
- host = spi_alloc_host(&pdev->dev, sizeof(*qspi));
+ host = devm_spi_alloc_host(&pdev->dev, sizeof(*qspi));
if (!host)
return -ENOMEM;
@@ -793,8 +793,7 @@ static int ti_qspi_probe(struct platform_device *pdev)
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if (r == NULL) {
dev_err(&pdev->dev, "missing platform data\n");
- ret = -ENODEV;
- goto free_host;
+ return -ENODEV;
}
}
@@ -812,28 +811,22 @@ static int ti_qspi_probe(struct platform_device *pdev)
qspi->mmap_size = resource_size(res_mmap);
irq = platform_get_irq(pdev, 0);
- if (irq < 0) {
- ret = irq;
- goto free_host;
- }
+ if (irq < 0)
+ return irq;
mutex_init(&qspi->list_lock);
qspi->base = devm_ioremap_resource(&pdev->dev, r);
- if (IS_ERR(qspi->base)) {
- ret = PTR_ERR(qspi->base);
- goto free_host;
- }
+ if (IS_ERR(qspi->base))
+ return PTR_ERR(qspi->base);
if (of_property_present(np, "syscon-chipselects")) {
qspi->ctrl_base =
syscon_regmap_lookup_by_phandle_args(np, "syscon-chipselects",
1, &qspi->ctrl_reg);
- if (IS_ERR(qspi->ctrl_base)) {
- ret = PTR_ERR(qspi->ctrl_base);
- goto free_host;
- }
+ if (IS_ERR(qspi->ctrl_base))
+ return PTR_ERR(qspi->ctrl_base);
}
qspi->fclk = devm_clk_get(&pdev->dev, "fck");
@@ -895,8 +888,7 @@ no_dma:
ti_qspi_dma_cleanup(qspi);
pm_runtime_disable(&pdev->dev);
-free_host:
- spi_controller_put(host);
+
return ret;
}
@@ -904,16 +896,12 @@ static void ti_qspi_remove(struct platform_device *pdev)
{
struct ti_qspi *qspi = platform_get_drvdata(pdev);
- spi_controller_get(qspi->host);
-
spi_unregister_controller(qspi->host);
pm_runtime_put_sync(&pdev->dev);
pm_runtime_disable(&pdev->dev);
ti_qspi_dma_cleanup(qspi);
-
- spi_controller_put(qspi->host);
}
static const struct dev_pm_ops ti_qspi_pm_ops = {