return -EINVAL;
}
- host = spi_alloc_host(&pdev->dev, sizeof(*mcfqspi));
- if (host == NULL) {
- dev_dbg(&pdev->dev, "spi_alloc_host failed\n");
+ host = devm_spi_alloc_host(&pdev->dev, sizeof(*mcfqspi));
+ if (host == NULL)
return -ENOMEM;
- }
mcfqspi = spi_controller_get_devdata(host);
mcfqspi->iobase = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(mcfqspi->iobase)) {
- status = PTR_ERR(mcfqspi->iobase);
- goto fail0;
- }
+ if (IS_ERR(mcfqspi->iobase))
+ return PTR_ERR(mcfqspi->iobase);
mcfqspi->irq = platform_get_irq(pdev, 0);
if (mcfqspi->irq < 0) {
dev_dbg(&pdev->dev, "platform_get_irq failed\n");
- status = -ENXIO;
- goto fail0;
+ return -ENXIO;
}
status = devm_request_irq(&pdev->dev, mcfqspi->irq, mcfqspi_irq_handler,
0, pdev->name, mcfqspi);
if (status) {
dev_dbg(&pdev->dev, "request_irq failed\n");
- goto fail0;
+ return status;
}
mcfqspi->clk = devm_clk_get_enabled(&pdev->dev, "qspi_clk");
if (IS_ERR(mcfqspi->clk)) {
dev_dbg(&pdev->dev, "clk_get failed\n");
- status = PTR_ERR(mcfqspi->clk);
- goto fail0;
+ return PTR_ERR(mcfqspi->clk);
}
host->bus_num = pdata->bus_num;
status = mcfqspi_cs_setup(mcfqspi);
if (status) {
dev_dbg(&pdev->dev, "error initializing cs_control\n");
- goto fail0;
+ return status;
}
init_waitqueue_head(&mcfqspi->waitq);
fail1:
pm_runtime_disable(&pdev->dev);
mcfqspi_cs_teardown(mcfqspi);
-fail0:
- spi_controller_put(host);
dev_dbg(&pdev->dev, "Coldfire QSPI probe failed\n");
struct spi_controller *host = platform_get_drvdata(pdev);
struct mcfqspi *mcfqspi = spi_controller_get_devdata(host);
- spi_controller_get(host);
-
spi_unregister_controller(host);
pm_runtime_disable(&pdev->dev);
mcfqspi_wr_qmr(mcfqspi, MCFQSPI_QMR_MSTR);
mcfqspi_cs_teardown(mcfqspi);
-
- spi_controller_put(host);
}
#ifdef CONFIG_PM_SLEEP