diff options
-rw-r--r-- | drivers/usb/musb/ux500_dma.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/usb/musb/ux500_dma.c b/drivers/usb/musb/ux500_dma.c index 382291b91f7b..4bd5400e0395 100644 --- a/drivers/usb/musb/ux500_dma.c +++ b/drivers/usb/musb/ux500_dma.c | |||
@@ -289,7 +289,7 @@ static int ux500_dma_controller_start(struct dma_controller *c) | |||
289 | struct musb *musb = controller->private_data; | 289 | struct musb *musb = controller->private_data; |
290 | struct device *dev = musb->controller; | 290 | struct device *dev = musb->controller; |
291 | struct musb_hdrc_platform_data *plat = dev->platform_data; | 291 | struct musb_hdrc_platform_data *plat = dev->platform_data; |
292 | struct ux500_musb_board_data *data = plat->board_data; | 292 | struct ux500_musb_board_data *data; |
293 | struct dma_channel *dma_channel = NULL; | 293 | struct dma_channel *dma_channel = NULL; |
294 | u32 ch_num; | 294 | u32 ch_num; |
295 | u8 dir; | 295 | u8 dir; |
@@ -299,14 +299,19 @@ static int ux500_dma_controller_start(struct dma_controller *c) | |||
299 | struct ux500_dma_channel *channel_array; | 299 | struct ux500_dma_channel *channel_array; |
300 | dma_cap_mask_t mask; | 300 | dma_cap_mask_t mask; |
301 | 301 | ||
302 | if (!plat) { | ||
303 | dev_err(musb->controller, "No platform data\n"); | ||
304 | return -EINVAL; | ||
305 | } | ||
302 | 306 | ||
307 | data = plat->board_data; | ||
303 | 308 | ||
304 | dma_cap_zero(mask); | 309 | dma_cap_zero(mask); |
305 | dma_cap_set(DMA_SLAVE, mask); | 310 | dma_cap_set(DMA_SLAVE, mask); |
306 | 311 | ||
307 | /* Prepare the loop for RX channels */ | 312 | /* Prepare the loop for RX channels */ |
308 | channel_array = controller->rx_channel; | 313 | channel_array = controller->rx_channel; |
309 | param_array = data->dma_rx_param_array; | 314 | param_array = data ? data->dma_rx_param_array : NULL; |
310 | 315 | ||
311 | for (dir = 0; dir < 2; dir++) { | 316 | for (dir = 0; dir < 2; dir++) { |
312 | for (ch_num = 0; | 317 | for (ch_num = 0; |
@@ -339,7 +344,7 @@ static int ux500_dma_controller_start(struct dma_controller *c) | |||
339 | 344 | ||
340 | /* Prepare the loop for TX channels */ | 345 | /* Prepare the loop for TX channels */ |
341 | channel_array = controller->tx_channel; | 346 | channel_array = controller->tx_channel; |
342 | param_array = data->dma_tx_param_array; | 347 | param_array = data ? data->dma_tx_param_array : NULL; |
343 | is_tx = 1; | 348 | is_tx = 1; |
344 | } | 349 | } |
345 | 350 | ||