diff options
| author | Vinod Koul <vkoul@kernel.org> | 2021-08-02 12:34:48 +0530 | 
|---|---|---|
| committer | Vinod Koul <vkoul@kernel.org> | 2021-08-02 12:34:48 +0530 | 
| commit | ffa179ae2af6b32b1f72f4490989cd69f6385688 (patch) | |
| tree | 54afdcc9469353c629b0729ffb1ea056f595a6aa /drivers | |
| parent | dd861267bfecc49df5232c33d3566a334ff5e9f6 (diff) | |
| parent | 7199ddede9f0f2f68d41e6928e1c6c4bca9c39c0 (diff) | |
Merge branch 'fixes' into next
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/dma/of-dma.c | 9 | ||||
| -rw-r--r-- | drivers/dma/stm32-dma.c | 4 | ||||
| -rw-r--r-- | drivers/dma/stm32-dmamux.c | 6 | ||||
| -rw-r--r-- | drivers/dma/uniphier-xdmac.c | 4 | 
4 files changed, 14 insertions, 9 deletions
| diff --git a/drivers/dma/of-dma.c b/drivers/dma/of-dma.c index ec00b20ae8e4..ac61ecda2926 100644 --- a/drivers/dma/of-dma.c +++ b/drivers/dma/of-dma.c @@ -67,8 +67,12 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,  		return NULL;  	ofdma_target = of_dma_find_controller(&dma_spec_target); -	if (!ofdma_target) -		return NULL; +	if (!ofdma_target) { +		ofdma->dma_router->route_free(ofdma->dma_router->dev, +					      route_data); +		chan = ERR_PTR(-EPROBE_DEFER); +		goto err; +	}  	chan = ofdma_target->of_dma_xlate(&dma_spec_target, ofdma_target);  	if (IS_ERR_OR_NULL(chan)) { @@ -89,6 +93,7 @@ static struct dma_chan *of_dma_router_xlate(struct of_phandle_args *dma_spec,  		}  	} +err:  	/*  	 * Need to put the node back since the ofdma->of_dma_route_allocate  	 * has taken it for generating the new, translated dma_spec diff --git a/drivers/dma/stm32-dma.c b/drivers/dma/stm32-dma.c index d3aa34b3d2f7..9063c727962e 100644 --- a/drivers/dma/stm32-dma.c +++ b/drivers/dma/stm32-dma.c @@ -1202,7 +1202,7 @@ static int stm32_dma_alloc_chan_resources(struct dma_chan *c)  	chan->config_init = false; -	ret = pm_runtime_get_sync(dmadev->ddev.dev); +	ret = pm_runtime_resume_and_get(dmadev->ddev.dev);  	if (ret < 0)  		return ret; @@ -1474,7 +1474,7 @@ static int stm32_dma_suspend(struct device *dev)  	struct stm32_dma_device *dmadev = dev_get_drvdata(dev);  	int id, ret, scr; -	ret = pm_runtime_get_sync(dev); +	ret = pm_runtime_resume_and_get(dev);  	if (ret < 0)  		return ret; diff --git a/drivers/dma/stm32-dmamux.c b/drivers/dma/stm32-dmamux.c index ef0d0555103d..a42164389ebc 100644 --- a/drivers/dma/stm32-dmamux.c +++ b/drivers/dma/stm32-dmamux.c @@ -137,7 +137,7 @@ static void *stm32_dmamux_route_allocate(struct of_phandle_args *dma_spec,  	/* Set dma request */  	spin_lock_irqsave(&dmamux->lock, flags); -	ret = pm_runtime_get_sync(&pdev->dev); +	ret = pm_runtime_resume_and_get(&pdev->dev);  	if (ret < 0) {  		spin_unlock_irqrestore(&dmamux->lock, flags);  		goto error; @@ -336,7 +336,7 @@ static int stm32_dmamux_suspend(struct device *dev)  	struct stm32_dmamux_data *stm32_dmamux = platform_get_drvdata(pdev);  	int i, ret; -	ret = pm_runtime_get_sync(dev); +	ret = pm_runtime_resume_and_get(dev);  	if (ret < 0)  		return ret; @@ -361,7 +361,7 @@ static int stm32_dmamux_resume(struct device *dev)  	if (ret < 0)  		return ret; -	ret = pm_runtime_get_sync(dev); +	ret = pm_runtime_resume_and_get(dev);  	if (ret < 0)  		return ret; diff --git a/drivers/dma/uniphier-xdmac.c b/drivers/dma/uniphier-xdmac.c index 16b19654873d..d6b8a202474f 100644 --- a/drivers/dma/uniphier-xdmac.c +++ b/drivers/dma/uniphier-xdmac.c @@ -209,8 +209,8 @@ static int uniphier_xdmac_chan_stop(struct uniphier_xdmac_chan *xc)  	writel(0, xc->reg_ch_base + XDMAC_TSS);  	/* wait until transfer is stopped */ -	return readl_poll_timeout(xc->reg_ch_base + XDMAC_STAT, val, -				  !(val & XDMAC_STAT_TENF), 100, 1000); +	return readl_poll_timeout_atomic(xc->reg_ch_base + XDMAC_STAT, val, +					 !(val & XDMAC_STAT_TENF), 100, 1000);  }  /* xc->vc.lock must be held by caller */ | 
