@@ -1249,11 +1249,10 @@ static int sun4i_dma_probe(struct platform_device *pdev)
1249
1249
if (priv -> irq < 0 )
1250
1250
return priv -> irq ;
1251
1251
1252
- priv -> clk = devm_clk_get (& pdev -> dev , NULL );
1253
- if (IS_ERR (priv -> clk )) {
1254
- dev_err (& pdev -> dev , "No clock specified\n" );
1255
- return PTR_ERR (priv -> clk );
1256
- }
1252
+ priv -> clk = devm_clk_get_enabled (& pdev -> dev , NULL );
1253
+ if (IS_ERR (priv -> clk ))
1254
+ return dev_err_probe (& pdev -> dev , PTR_ERR (priv -> clk ),
1255
+ "Couldn't start the clock\n" );
1257
1256
1258
1257
if (priv -> cfg -> has_reset ) {
1259
1258
priv -> rst = devm_reset_control_get_exclusive_deasserted (& pdev -> dev , NULL );
@@ -1328,12 +1327,6 @@ static int sun4i_dma_probe(struct platform_device *pdev)
1328
1327
vchan_init (& vchan -> vc , & priv -> slave );
1329
1328
}
1330
1329
1331
- ret = clk_prepare_enable (priv -> clk );
1332
- if (ret ) {
1333
- dev_err (& pdev -> dev , "Couldn't enable the clock\n" );
1334
- return ret ;
1335
- }
1336
-
1337
1330
/*
1338
1331
* Make sure the IRQs are all disabled and accounted for. The bootloader
1339
1332
* likes to leave these dirty
@@ -1343,33 +1336,23 @@ static int sun4i_dma_probe(struct platform_device *pdev)
1343
1336
1344
1337
ret = devm_request_irq (& pdev -> dev , priv -> irq , sun4i_dma_interrupt ,
1345
1338
0 , dev_name (& pdev -> dev ), priv );
1346
- if (ret ) {
1347
- dev_err (& pdev -> dev , "Cannot request IRQ\n" );
1348
- goto err_clk_disable ;
1349
- }
1339
+ if (ret )
1340
+ return dev_err_probe (& pdev -> dev , ret , "Cannot request IRQ\n" );
1350
1341
1351
- ret = dma_async_device_register (& priv -> slave );
1352
- if (ret ) {
1353
- dev_warn (& pdev -> dev , "Failed to register DMA engine device\n" );
1354
- goto err_clk_disable ;
1355
- }
1342
+ ret = dmaenginem_async_device_register (& priv -> slave );
1343
+ if (ret )
1344
+ return dev_err_probe (& pdev -> dev , ret ,
1345
+ "Failed to register DMA engine device\n" );
1356
1346
1357
1347
ret = of_dma_controller_register (pdev -> dev .of_node , sun4i_dma_of_xlate ,
1358
1348
priv );
1359
- if (ret ) {
1360
- dev_err (& pdev -> dev , "of_dma_controller_register failed\n" );
1361
- goto err_dma_unregister ;
1362
- }
1349
+ if (ret )
1350
+ return dev_err_probe (& pdev -> dev , ret ,
1351
+ "Failed to register translation function\n" );
1363
1352
1364
1353
dev_dbg (& pdev -> dev , "Successfully probed SUN4I_DMA\n" );
1365
1354
1366
1355
return 0 ;
1367
-
1368
- err_dma_unregister :
1369
- dma_async_device_unregister (& priv -> slave );
1370
- err_clk_disable :
1371
- clk_disable_unprepare (priv -> clk );
1372
- return ret ;
1373
1356
}
1374
1357
1375
1358
static void sun4i_dma_remove (struct platform_device * pdev )
@@ -1380,9 +1363,6 @@ static void sun4i_dma_remove(struct platform_device *pdev)
1380
1363
disable_irq (priv -> irq );
1381
1364
1382
1365
of_dma_controller_free (pdev -> dev .of_node );
1383
- dma_async_device_unregister (& priv -> slave );
1384
-
1385
- clk_disable_unprepare (priv -> clk );
1386
1366
}
1387
1367
1388
1368
static struct sun4i_dma_config sun4i_a10_dma_cfg = {
0 commit comments