diff options
Diffstat (limited to 'drivers/spi/spi-stm32.c')
| -rw-r--r-- | drivers/spi/spi-stm32.c | 39 | 
1 files changed, 16 insertions, 23 deletions
| diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c index 25c076461011..8ffcffbb8157 100644 --- a/drivers/spi/spi-stm32.c +++ b/drivers/spi/spi-stm32.c @@ -1803,7 +1803,7 @@ static int stm32_spi_probe(struct platform_device *pdev)  	struct reset_control *rst;  	int ret; -	master = spi_alloc_master(&pdev->dev, sizeof(struct stm32_spi)); +	master = devm_spi_alloc_master(&pdev->dev, sizeof(struct stm32_spi));  	if (!master) {  		dev_err(&pdev->dev, "spi master allocation failed\n");  		return -ENOMEM; @@ -1821,18 +1821,16 @@ static int stm32_spi_probe(struct platform_device *pdev)  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);  	spi->base = devm_ioremap_resource(&pdev->dev, res); -	if (IS_ERR(spi->base)) { -		ret = PTR_ERR(spi->base); -		goto err_master_put; -	} +	if (IS_ERR(spi->base)) +		return PTR_ERR(spi->base);  	spi->phys_addr = (dma_addr_t)res->start;  	spi->irq = platform_get_irq(pdev, 0); -	if (spi->irq <= 0) { -		ret = dev_err_probe(&pdev->dev, spi->irq, "failed to get irq\n"); -		goto err_master_put; -	} +	if (spi->irq <= 0) +		return dev_err_probe(&pdev->dev, spi->irq, +				     "failed to get irq\n"); +  	ret = devm_request_threaded_irq(&pdev->dev, spi->irq,  					spi->cfg->irq_handler_event,  					spi->cfg->irq_handler_thread, @@ -1840,20 +1838,20 @@ static int stm32_spi_probe(struct platform_device *pdev)  	if (ret) {  		dev_err(&pdev->dev, "irq%d request failed: %d\n", spi->irq,  			ret); -		goto err_master_put; +		return ret;  	}  	spi->clk = devm_clk_get(&pdev->dev, NULL);  	if (IS_ERR(spi->clk)) {  		ret = PTR_ERR(spi->clk);  		dev_err(&pdev->dev, "clk get failed: %d\n", ret); -		goto err_master_put; +		return ret;  	}  	ret = clk_prepare_enable(spi->clk);  	if (ret) {  		dev_err(&pdev->dev, "clk enable failed: %d\n", ret); -		goto err_master_put; +		return ret;  	}  	spi->clk_rate = clk_get_rate(spi->clk);  	if (!spi->clk_rate) { @@ -1929,7 +1927,7 @@ static int stm32_spi_probe(struct platform_device *pdev)  	pm_runtime_set_active(&pdev->dev);  	pm_runtime_enable(&pdev->dev); -	ret = devm_spi_register_master(&pdev->dev, master); +	ret = spi_register_master(master);  	if (ret) {  		dev_err(&pdev->dev, "spi master registration failed: %d\n",  			ret); @@ -1949,8 +1947,6 @@ err_dma_release:  		dma_release_channel(spi->dma_rx);  err_clk_disable:  	clk_disable_unprepare(spi->clk); -err_master_put: -	spi_master_put(master);  	return ret;  } @@ -1960,6 +1956,7 @@ static int stm32_spi_remove(struct platform_device *pdev)  	struct spi_master *master = platform_get_drvdata(pdev);  	struct stm32_spi *spi = spi_master_get_devdata(master); +	spi_unregister_master(master);  	spi->cfg->disable(spi);  	if (master->dma_tx) @@ -1976,8 +1973,7 @@ static int stm32_spi_remove(struct platform_device *pdev)  	return 0;  } -#ifdef CONFIG_PM -static int stm32_spi_runtime_suspend(struct device *dev) +static int __maybe_unused stm32_spi_runtime_suspend(struct device *dev)  {  	struct spi_master *master = dev_get_drvdata(dev);  	struct stm32_spi *spi = spi_master_get_devdata(master); @@ -1987,7 +1983,7 @@ static int stm32_spi_runtime_suspend(struct device *dev)  	return pinctrl_pm_select_sleep_state(dev);  } -static int stm32_spi_runtime_resume(struct device *dev) +static int __maybe_unused stm32_spi_runtime_resume(struct device *dev)  {  	struct spi_master *master = dev_get_drvdata(dev);  	struct stm32_spi *spi = spi_master_get_devdata(master); @@ -1999,10 +1995,8 @@ static int stm32_spi_runtime_resume(struct device *dev)  	return clk_prepare_enable(spi->clk);  } -#endif -#ifdef CONFIG_PM_SLEEP -static int stm32_spi_suspend(struct device *dev) +static int __maybe_unused stm32_spi_suspend(struct device *dev)  {  	struct spi_master *master = dev_get_drvdata(dev);  	int ret; @@ -2014,7 +2008,7 @@ static int stm32_spi_suspend(struct device *dev)  	return pm_runtime_force_suspend(dev);  } -static int stm32_spi_resume(struct device *dev) +static int __maybe_unused stm32_spi_resume(struct device *dev)  {  	struct spi_master *master = dev_get_drvdata(dev);  	struct stm32_spi *spi = spi_master_get_devdata(master); @@ -2044,7 +2038,6 @@ static int stm32_spi_resume(struct device *dev)  	return 0;  } -#endif  static const struct dev_pm_ops stm32_spi_pm_ops = {  	SET_SYSTEM_SLEEP_PM_OPS(stm32_spi_suspend, stm32_spi_resume) | 
