@@ -2273,7 +2273,7 @@ static int sun4i_codec_probe(struct platform_device *pdev)
22732273 }
22742274
22752275 /* 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" );
22772277 if (IS_ERR (scodec -> clk_apb )) {
22782278 dev_err (& pdev -> dev , "Failed to get the APB clock\n" );
22792279 return PTR_ERR (scodec -> clk_apb );
@@ -2286,8 +2286,7 @@ static int sun4i_codec_probe(struct platform_device *pdev)
22862286 }
22872287
22882288 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 );
22912290 if (IS_ERR (scodec -> rst )) {
22922291 dev_err (& pdev -> dev , "Failed to get reset control\n" );
22932292 return PTR_ERR (scodec -> rst );
@@ -2323,22 +2322,6 @@ static int sun4i_codec_probe(struct platform_device *pdev)
23232322 return ret ;
23242323 }
23252324
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-
23422325 /* DMA configuration for TX FIFO */
23432326 scodec -> playback_dma_data .addr = res -> start + quirks -> reg_dac_txdata ;
23442327 scodec -> playback_dma_data .maxburst = quirks -> dma_max_burst ;
@@ -2356,57 +2339,46 @@ static int sun4i_codec_probe(struct platform_device *pdev)
23562339 & sun4i_codec_dai , 1 );
23572340 if (ret ) {
23582341 dev_err (& pdev -> dev , "Failed to register our codec\n" );
2359- goto err_assert_reset ;
2342+ return ret ;
23602343 }
23612344
23622345 ret = devm_snd_soc_register_component (& pdev -> dev ,
23632346 & sun4i_codec_component ,
23642347 & dummy_cpu_dai , 1 );
23652348 if (ret ) {
23662349 dev_err (& pdev -> dev , "Failed to register our DAI\n" );
2367- goto err_assert_reset ;
2350+ return ret ;
23682351 }
23692352
23702353 ret = devm_snd_dmaengine_pcm_register (& pdev -> dev , NULL , 0 );
23712354 if (ret ) {
23722355 dev_err (& pdev -> dev , "Failed to register against DMAEngine\n" );
2373- goto err_assert_reset ;
2356+ return ret ;
23742357 }
23752358
23762359 card = quirks -> create_card (& pdev -> dev );
23772360 if (IS_ERR (card )) {
23782361 ret = PTR_ERR (card );
23792362 dev_err (& pdev -> dev , "Failed to create our card\n" );
2380- goto err_assert_reset ;
2363+ return ret ;
23812364 }
23822365
23832366 snd_soc_card_set_drvdata (card , scodec );
23842367
23852368 ret = snd_soc_register_card (card );
23862369 if (ret ) {
23872370 dev_err_probe (& pdev -> dev , ret , "Failed to register our card\n" );
2388- goto err_assert_reset ;
2371+ return ret ;
23892372 }
23902373
23912374 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 ;
23992375}
24002376
24012377static void sun4i_codec_remove (struct platform_device * pdev )
24022378{
24032379 struct snd_soc_card * card = platform_get_drvdata (pdev );
2404- struct sun4i_codec * scodec = snd_soc_card_get_drvdata (card );
24052380
24062381 snd_soc_unregister_card (card );
2407- if (scodec -> rst )
2408- reset_control_assert (scodec -> rst );
2409- clk_disable_unprepare (scodec -> clk_apb );
24102382}
24112383
24122384static struct platform_driver sun4i_codec_driver = {
0 commit comments