@@ -1405,39 +1405,35 @@ static int lmk04832_probe(struct spi_device *spi)
1405
1405
1406
1406
lmk -> dev = & spi -> dev ;
1407
1407
1408
- lmk -> oscin = devm_clk_get (lmk -> dev , "oscin" );
1408
+ lmk -> oscin = devm_clk_get_enabled (lmk -> dev , "oscin" );
1409
1409
if (IS_ERR (lmk -> oscin )) {
1410
1410
dev_err (lmk -> dev , "failed to get oscin clock\n" );
1411
1411
return PTR_ERR (lmk -> oscin );
1412
1412
}
1413
1413
1414
- ret = clk_prepare_enable (lmk -> oscin );
1415
- if (ret )
1416
- return ret ;
1417
-
1418
1414
lmk -> reset_gpio = devm_gpiod_get_optional (& spi -> dev , "reset" ,
1419
1415
GPIOD_OUT_LOW );
1420
1416
1421
1417
lmk -> dclk = devm_kcalloc (lmk -> dev , info -> num_channels >> 1 ,
1422
1418
sizeof (struct lmk_dclk ), GFP_KERNEL );
1423
1419
if (!lmk -> dclk ) {
1424
1420
ret = - ENOMEM ;
1425
- goto err_disable_oscin ;
1421
+ return ret ;
1426
1422
}
1427
1423
1428
1424
lmk -> clkout = devm_kcalloc (lmk -> dev , info -> num_channels ,
1429
1425
sizeof (* lmk -> clkout ), GFP_KERNEL );
1430
1426
if (!lmk -> clkout ) {
1431
1427
ret = - ENOMEM ;
1432
- goto err_disable_oscin ;
1428
+ return ret ;
1433
1429
}
1434
1430
1435
1431
lmk -> clk_data = devm_kzalloc (lmk -> dev , struct_size (lmk -> clk_data , hws ,
1436
1432
info -> num_channels ),
1437
1433
GFP_KERNEL );
1438
1434
if (!lmk -> clk_data ) {
1439
1435
ret = - ENOMEM ;
1440
- goto err_disable_oscin ;
1436
+ return ret ;
1441
1437
}
1442
1438
1443
1439
device_property_read_u32 (lmk -> dev , "ti,vco-hz" , & lmk -> vco_rate );
@@ -1465,7 +1461,7 @@ static int lmk04832_probe(struct spi_device *spi)
1465
1461
dev_err (lmk -> dev , "missing reg property in child: %s\n" ,
1466
1462
child -> full_name );
1467
1463
of_node_put (child );
1468
- goto err_disable_oscin ;
1464
+ return ret ;
1469
1465
}
1470
1466
1471
1467
of_property_read_u32 (child , "ti,clkout-fmt" ,
@@ -1486,7 +1482,7 @@ static int lmk04832_probe(struct spi_device *spi)
1486
1482
1487
1483
__func__ , PTR_ERR (lmk -> regmap ));
1488
1484
ret = PTR_ERR (lmk -> regmap );
1489
- goto err_disable_oscin ;
1485
+ return ret ;
1490
1486
}
1491
1487
1492
1488
regmap_write (lmk -> regmap , LMK04832_REG_RST3W , LMK04832_BIT_RESET );
@@ -1496,43 +1492,43 @@ static int lmk04832_probe(struct spi_device *spi)
1496
1492
& rdbk_pin );
1497
1493
ret = lmk04832_set_spi_rdbk (lmk , rdbk_pin );
1498
1494
if (ret )
1499
- goto err_disable_oscin ;
1495
+ return ret ;
1500
1496
}
1501
1497
1502
1498
regmap_bulk_read (lmk -> regmap , LMK04832_REG_ID_PROD_MSB , & tmp , 3 );
1503
1499
if ((tmp [0 ] << 8 | tmp [1 ]) != info -> pid || tmp [2 ] != info -> maskrev ) {
1504
1500
dev_err (lmk -> dev , "unsupported device type: pid 0x%04x, maskrev 0x%02x\n" ,
1505
1501
tmp [0 ] << 8 | tmp [1 ], tmp [2 ]);
1506
1502
ret = - EINVAL ;
1507
- goto err_disable_oscin ;
1503
+ return ret ;
1508
1504
}
1509
1505
1510
1506
ret = lmk04832_register_vco (lmk );
1511
1507
if (ret ) {
1512
1508
dev_err (lmk -> dev , "failed to init device clock path\n" );
1513
- goto err_disable_oscin ;
1509
+ return ret ;
1514
1510
}
1515
1511
1516
1512
if (lmk -> vco_rate ) {
1517
1513
dev_info (lmk -> dev , "setting VCO rate to %u Hz\n" , lmk -> vco_rate );
1518
1514
ret = clk_set_rate (lmk -> vco .clk , lmk -> vco_rate );
1519
1515
if (ret ) {
1520
1516
dev_err (lmk -> dev , "failed to set VCO rate\n" );
1521
- goto err_disable_oscin ;
1517
+ return ret ;
1522
1518
}
1523
1519
}
1524
1520
1525
1521
ret = lmk04832_register_sclk (lmk );
1526
1522
if (ret ) {
1527
1523
dev_err (lmk -> dev , "failed to init SYNC/SYSREF clock path\n" );
1528
- goto err_disable_oscin ;
1524
+ return ret ;
1529
1525
}
1530
1526
1531
1527
for (i = 0 ; i < info -> num_channels ; i ++ ) {
1532
1528
ret = lmk04832_register_clkout (lmk , i );
1533
1529
if (ret ) {
1534
1530
dev_err (lmk -> dev , "failed to register clk %d\n" , i );
1535
- goto err_disable_oscin ;
1531
+ return ret ;
1536
1532
}
1537
1533
}
1538
1534
@@ -1541,24 +1537,12 @@ static int lmk04832_probe(struct spi_device *spi)
1541
1537
lmk -> clk_data );
1542
1538
if (ret ) {
1543
1539
dev_err (lmk -> dev , "failed to add provider (%d)\n" , ret );
1544
- goto err_disable_oscin ;
1540
+ return ret ;
1545
1541
}
1546
1542
1547
1543
spi_set_drvdata (spi , lmk );
1548
1544
1549
1545
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 );
1562
1546
}
1563
1547
1564
1548
static const struct spi_device_id lmk04832_id [] = {
@@ -1579,7 +1563,6 @@ static struct spi_driver lmk04832_driver = {
1579
1563
.of_match_table = lmk04832_of_id ,
1580
1564
},
1581
1565
.probe = lmk04832_probe ,
1582
- .remove = lmk04832_remove ,
1583
1566
.id_table = lmk04832_id ,
1584
1567
};
1585
1568
module_spi_driver (lmk04832_driver );
0 commit comments