forked from mirrors/linux
		
	spi: rockchip: fix probe deferral handling
Use dma_request_chan instead of dma_request_slave_channel, in this case we can check EPROBE_DEFER without static warning. Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com> Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
		
							parent
							
								
									bb51537aa8
								
							
						
					
					
						commit
						e4c0e06f94
					
				
					 1 changed files with 9 additions and 5 deletions
				
			
		| 
						 | 
				
			
			@ -723,23 +723,27 @@ static int rockchip_spi_probe(struct platform_device *pdev)
 | 
			
		|||
	master->transfer_one = rockchip_spi_transfer_one;
 | 
			
		||||
	master->handle_err = rockchip_spi_handle_err;
 | 
			
		||||
 | 
			
		||||
	rs->dma_tx.ch = dma_request_slave_channel(rs->dev, "tx");
 | 
			
		||||
	if (IS_ERR_OR_NULL(rs->dma_tx.ch)) {
 | 
			
		||||
	rs->dma_tx.ch = dma_request_chan(rs->dev, "tx");
 | 
			
		||||
	if (IS_ERR(rs->dma_tx.ch)) {
 | 
			
		||||
		/* Check tx to see if we need defer probing driver */
 | 
			
		||||
		if (PTR_ERR(rs->dma_tx.ch) == -EPROBE_DEFER) {
 | 
			
		||||
			ret = -EPROBE_DEFER;
 | 
			
		||||
			goto err_get_fifo_len;
 | 
			
		||||
		}
 | 
			
		||||
		dev_warn(rs->dev, "Failed to request TX DMA channel\n");
 | 
			
		||||
		rs->dma_tx.ch = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	rs->dma_rx.ch = dma_request_slave_channel(rs->dev, "rx");
 | 
			
		||||
	if (!rs->dma_rx.ch) {
 | 
			
		||||
		if (rs->dma_tx.ch) {
 | 
			
		||||
	rs->dma_rx.ch = dma_request_chan(rs->dev, "rx");
 | 
			
		||||
	if (IS_ERR(rs->dma_rx.ch)) {
 | 
			
		||||
		if (PTR_ERR(rs->dma_rx.ch) == -EPROBE_DEFER) {
 | 
			
		||||
			dma_release_channel(rs->dma_tx.ch);
 | 
			
		||||
			rs->dma_tx.ch = NULL;
 | 
			
		||||
			ret = -EPROBE_DEFER;
 | 
			
		||||
			goto err_get_fifo_len;
 | 
			
		||||
		}
 | 
			
		||||
		dev_warn(rs->dev, "Failed to request RX DMA channel\n");
 | 
			
		||||
		rs->dma_rx.ch = NULL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (rs->dma_tx.ch && rs->dma_rx.ch) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue