@@ -1405,39 +1405,35 @@ static int lmk04832_probe(struct spi_device *spi)
14051405
14061406 lmk -> dev = & spi -> dev ;
14071407
1408- lmk -> oscin = devm_clk_get (lmk -> dev , "oscin" );
1408+ lmk -> oscin = devm_clk_get_enabled (lmk -> dev , "oscin" );
14091409 if (IS_ERR (lmk -> oscin )) {
14101410 dev_err (lmk -> dev , "failed to get oscin clock\n" );
14111411 return PTR_ERR (lmk -> oscin );
14121412 }
14131413
1414- ret = clk_prepare_enable (lmk -> oscin );
1415- if (ret )
1416- return ret ;
1417-
14181414 lmk -> reset_gpio = devm_gpiod_get_optional (& spi -> dev , "reset" ,
14191415 GPIOD_OUT_LOW );
14201416
14211417 lmk -> dclk = devm_kcalloc (lmk -> dev , info -> num_channels >> 1 ,
14221418 sizeof (struct lmk_dclk ), GFP_KERNEL );
14231419 if (!lmk -> dclk ) {
14241420 ret = - ENOMEM ;
1425- goto err_disable_oscin ;
1421+ return ret ;
14261422 }
14271423
14281424 lmk -> clkout = devm_kcalloc (lmk -> dev , info -> num_channels ,
14291425 sizeof (* lmk -> clkout ), GFP_KERNEL );
14301426 if (!lmk -> clkout ) {
14311427 ret = - ENOMEM ;
1432- goto err_disable_oscin ;
1428+ return ret ;
14331429 }
14341430
14351431 lmk -> clk_data = devm_kzalloc (lmk -> dev , struct_size (lmk -> clk_data , hws ,
14361432 info -> num_channels ),
14371433 GFP_KERNEL );
14381434 if (!lmk -> clk_data ) {
14391435 ret = - ENOMEM ;
1440- goto err_disable_oscin ;
1436+ return ret ;
14411437 }
14421438
14431439 device_property_read_u32 (lmk -> dev , "ti,vco-hz" , & lmk -> vco_rate );
@@ -1465,7 +1461,7 @@ static int lmk04832_probe(struct spi_device *spi)
14651461 dev_err (lmk -> dev , "missing reg property in child: %s\n" ,
14661462 child -> full_name );
14671463 of_node_put (child );
1468- goto err_disable_oscin ;
1464+ return ret ;
14691465 }
14701466
14711467 of_property_read_u32 (child , "ti,clkout-fmt" ,
@@ -1486,7 +1482,7 @@ static int lmk04832_probe(struct spi_device *spi)
14861482
14871483 __func__ , PTR_ERR (lmk -> regmap ));
14881484 ret = PTR_ERR (lmk -> regmap );
1489- goto err_disable_oscin ;
1485+ return ret ;
14901486 }
14911487
14921488 regmap_write (lmk -> regmap , LMK04832_REG_RST3W , LMK04832_BIT_RESET );
@@ -1496,43 +1492,43 @@ static int lmk04832_probe(struct spi_device *spi)
14961492 & rdbk_pin );
14971493 ret = lmk04832_set_spi_rdbk (lmk , rdbk_pin );
14981494 if (ret )
1499- goto err_disable_oscin ;
1495+ return ret ;
15001496 }
15011497
15021498 regmap_bulk_read (lmk -> regmap , LMK04832_REG_ID_PROD_MSB , & tmp , 3 );
15031499 if ((tmp [0 ] << 8 | tmp [1 ]) != info -> pid || tmp [2 ] != info -> maskrev ) {
15041500 dev_err (lmk -> dev , "unsupported device type: pid 0x%04x, maskrev 0x%02x\n" ,
15051501 tmp [0 ] << 8 | tmp [1 ], tmp [2 ]);
15061502 ret = - EINVAL ;
1507- goto err_disable_oscin ;
1503+ return ret ;
15081504 }
15091505
15101506 ret = lmk04832_register_vco (lmk );
15111507 if (ret ) {
15121508 dev_err (lmk -> dev , "failed to init device clock path\n" );
1513- goto err_disable_oscin ;
1509+ return ret ;
15141510 }
15151511
15161512 if (lmk -> vco_rate ) {
15171513 dev_info (lmk -> dev , "setting VCO rate to %u Hz\n" , lmk -> vco_rate );
15181514 ret = clk_set_rate (lmk -> vco .clk , lmk -> vco_rate );
15191515 if (ret ) {
15201516 dev_err (lmk -> dev , "failed to set VCO rate\n" );
1521- goto err_disable_oscin ;
1517+ return ret ;
15221518 }
15231519 }
15241520
15251521 ret = lmk04832_register_sclk (lmk );
15261522 if (ret ) {
15271523 dev_err (lmk -> dev , "failed to init SYNC/SYSREF clock path\n" );
1528- goto err_disable_oscin ;
1524+ return ret ;
15291525 }
15301526
15311527 for (i = 0 ; i < info -> num_channels ; i ++ ) {
15321528 ret = lmk04832_register_clkout (lmk , i );
15331529 if (ret ) {
15341530 dev_err (lmk -> dev , "failed to register clk %d\n" , i );
1535- goto err_disable_oscin ;
1531+ return ret ;
15361532 }
15371533 }
15381534
@@ -1541,24 +1537,12 @@ static int lmk04832_probe(struct spi_device *spi)
15411537 lmk -> clk_data );
15421538 if (ret ) {
15431539 dev_err (lmk -> dev , "failed to add provider (%d)\n" , ret );
1544- goto err_disable_oscin ;
1540+ return ret ;
15451541 }
15461542
15471543 spi_set_drvdata (spi , lmk );
15481544
15491545 return 0 ;
1550-
1551- err_disable_oscin :
1552- clk_disable_unprepare (lmk -> oscin );
1553-
1554- return ret ;
1555- }
1556-
1557- static void lmk04832_remove (struct spi_device * spi )
1558- {
1559- struct lmk04832 * lmk = spi_get_drvdata (spi );
1560-
1561- clk_disable_unprepare (lmk -> oscin );
15621546}
15631547
15641548static const struct spi_device_id lmk04832_id [] = {
@@ -1579,7 +1563,6 @@ static struct spi_driver lmk04832_driver = {
15791563 .of_match_table = lmk04832_of_id ,
15801564 },
15811565 .probe = lmk04832_probe ,
1582- .remove = lmk04832_remove ,
15831566 .id_table = lmk04832_id ,
15841567};
15851568module_spi_driver (lmk04832_driver );
0 commit comments