usb: musb: musb_cppi41: Defer probe only if DMA is not ready

If dma_request_slave_channel() failed to return a channel,
then the driver will print an error and request to defer probe,
regardless of the cause of the failure.
Defer if the DMA is not ready yet otherwise print an error.

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Reviewed-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Alexandre Bailon 2017-06-16 10:40:54 -05:00 committed by Greg Kroah-Hartman
parent 24040a5837
commit a70df14602

View File

@ -673,12 +673,15 @@ static int cppi41_dma_controller_start(struct cppi41_dma_controller *controller)
musb_dma->status = MUSB_DMA_STATUS_FREE;
musb_dma->max_len = SZ_4M;
dc = dma_request_slave_channel(dev->parent, str);
if (!dc) {
dev_err(dev, "Failed to request %s.\n", str);
ret = -EPROBE_DEFER;
dc = dma_request_chan(dev->parent, str);
if (IS_ERR(dc)) {
ret = PTR_ERR(dc);
if (ret != -EPROBE_DEFER)
dev_err(dev, "Failed to request %s: %d.\n",
str, ret);
goto err;
}
cppi41_channel->dc = dc;
}
return 0;