@@ -2273,7 +2273,7 @@ static int sun4i_codec_probe(struct platform_device *pdev)
2273
2273
}
2274
2274
2275
2275
/* Get the clocks from the DT */
2276
- scodec -> clk_apb = devm_clk_get (& pdev -> dev , "apb" );
2276
+ scodec -> clk_apb = devm_clk_get_enabled (& pdev -> dev , "apb" );
2277
2277
if (IS_ERR (scodec -> clk_apb )) {
2278
2278
dev_err (& pdev -> dev , "Failed to get the APB clock\n" );
2279
2279
return PTR_ERR (scodec -> clk_apb );
@@ -2286,8 +2286,7 @@ static int sun4i_codec_probe(struct platform_device *pdev)
2286
2286
}
2287
2287
2288
2288
if (quirks -> has_reset ) {
2289
- scodec -> rst = devm_reset_control_get_exclusive (& pdev -> dev ,
2290
- NULL );
2289
+ scodec -> rst = devm_reset_control_get_exclusive_deasserted (& pdev -> dev , NULL );
2291
2290
if (IS_ERR (scodec -> rst )) {
2292
2291
dev_err (& pdev -> dev , "Failed to get reset control\n" );
2293
2292
return PTR_ERR (scodec -> rst );
@@ -2323,22 +2322,6 @@ static int sun4i_codec_probe(struct platform_device *pdev)
2323
2322
return ret ;
2324
2323
}
2325
2324
2326
- /* Enable the bus clock */
2327
- if (clk_prepare_enable (scodec -> clk_apb )) {
2328
- dev_err (& pdev -> dev , "Failed to enable the APB clock\n" );
2329
- return - EINVAL ;
2330
- }
2331
-
2332
- /* Deassert the reset control */
2333
- if (scodec -> rst ) {
2334
- ret = reset_control_deassert (scodec -> rst );
2335
- if (ret ) {
2336
- dev_err (& pdev -> dev ,
2337
- "Failed to deassert the reset control\n" );
2338
- goto err_clk_disable ;
2339
- }
2340
- }
2341
-
2342
2325
/* DMA configuration for TX FIFO */
2343
2326
scodec -> playback_dma_data .addr = res -> start + quirks -> reg_dac_txdata ;
2344
2327
scodec -> playback_dma_data .maxburst = quirks -> dma_max_burst ;
@@ -2356,57 +2339,46 @@ static int sun4i_codec_probe(struct platform_device *pdev)
2356
2339
& sun4i_codec_dai , 1 );
2357
2340
if (ret ) {
2358
2341
dev_err (& pdev -> dev , "Failed to register our codec\n" );
2359
- goto err_assert_reset ;
2342
+ return ret ;
2360
2343
}
2361
2344
2362
2345
ret = devm_snd_soc_register_component (& pdev -> dev ,
2363
2346
& sun4i_codec_component ,
2364
2347
& dummy_cpu_dai , 1 );
2365
2348
if (ret ) {
2366
2349
dev_err (& pdev -> dev , "Failed to register our DAI\n" );
2367
- goto err_assert_reset ;
2350
+ return ret ;
2368
2351
}
2369
2352
2370
2353
ret = devm_snd_dmaengine_pcm_register (& pdev -> dev , NULL , 0 );
2371
2354
if (ret ) {
2372
2355
dev_err (& pdev -> dev , "Failed to register against DMAEngine\n" );
2373
- goto err_assert_reset ;
2356
+ return ret ;
2374
2357
}
2375
2358
2376
2359
card = quirks -> create_card (& pdev -> dev );
2377
2360
if (IS_ERR (card )) {
2378
2361
ret = PTR_ERR (card );
2379
2362
dev_err (& pdev -> dev , "Failed to create our card\n" );
2380
- goto err_assert_reset ;
2363
+ return ret ;
2381
2364
}
2382
2365
2383
2366
snd_soc_card_set_drvdata (card , scodec );
2384
2367
2385
2368
ret = snd_soc_register_card (card );
2386
2369
if (ret ) {
2387
2370
dev_err_probe (& pdev -> dev , ret , "Failed to register our card\n" );
2388
- goto err_assert_reset ;
2371
+ return ret ;
2389
2372
}
2390
2373
2391
2374
return 0 ;
2392
-
2393
- err_assert_reset :
2394
- if (scodec -> rst )
2395
- reset_control_assert (scodec -> rst );
2396
- err_clk_disable :
2397
- clk_disable_unprepare (scodec -> clk_apb );
2398
- return ret ;
2399
2375
}
2400
2376
2401
2377
static void sun4i_codec_remove (struct platform_device * pdev )
2402
2378
{
2403
2379
struct snd_soc_card * card = platform_get_drvdata (pdev );
2404
- struct sun4i_codec * scodec = snd_soc_card_get_drvdata (card );
2405
2380
2406
2381
snd_soc_unregister_card (card );
2407
- if (scodec -> rst )
2408
- reset_control_assert (scodec -> rst );
2409
- clk_disable_unprepare (scodec -> clk_apb );
2410
2382
}
2411
2383
2412
2384
static struct platform_driver sun4i_codec_driver = {
0 commit comments