Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6f936db authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

spi: omap2-mcspi: Convert to use devm_kcalloc



This saves a few unwind code and return proper error if devm_kcalloc fails.

Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 455c6fdb
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -1356,12 +1356,13 @@ static int omap2_mcspi_probe(struct platform_device *pdev)

	INIT_LIST_HEAD(&mcspi->ctx.cs);

	mcspi->dma_channels = kcalloc(master->num_chipselect,
	mcspi->dma_channels = devm_kcalloc(&pdev->dev, master->num_chipselect,
					   sizeof(struct omap2_mcspi_dma),
					   GFP_KERNEL);

	if (mcspi->dma_channels == NULL)
	if (mcspi->dma_channels == NULL) {
		status = -ENOMEM;
		goto free_master;
	}

	for (i = 0; i < master->num_chipselect; i++) {
		char *dma_rx_ch_name = mcspi->dma_channels[i].dma_rx_ch_name;
@@ -1403,7 +1404,7 @@ static int omap2_mcspi_probe(struct platform_device *pdev)
	}

	if (status < 0)
		goto dma_chnl_free;
		goto free_master;

	pm_runtime_use_autosuspend(&pdev->dev);
	pm_runtime_set_autosuspend_delay(&pdev->dev, SPI_AUTOSUSPEND_TIMEOUT);
@@ -1421,8 +1422,6 @@ static int omap2_mcspi_probe(struct platform_device *pdev)

disable_pm:
	pm_runtime_disable(&pdev->dev);
dma_chnl_free:
	kfree(mcspi->dma_channels);
free_master:
	spi_master_put(master);
	return status;
@@ -1430,19 +1429,12 @@ static int omap2_mcspi_probe(struct platform_device *pdev)

static int omap2_mcspi_remove(struct platform_device *pdev)
{
	struct spi_master	*master;
	struct omap2_mcspi	*mcspi;
	struct omap2_mcspi_dma	*dma_channels;

	master = platform_get_drvdata(pdev);
	mcspi = spi_master_get_devdata(master);
	dma_channels = mcspi->dma_channels;
	struct spi_master *master = platform_get_drvdata(pdev);
	struct omap2_mcspi *mcspi = spi_master_get_devdata(master);

	pm_runtime_put_sync(mcspi->dev);
	pm_runtime_disable(&pdev->dev);

	kfree(dma_channels);

	return 0;
}