@@ -414,7 +414,6 @@ struct cdns_i3c_master {
414414 } xferqueue ;
415415 void __iomem * regs ;
416416 struct clk * sysclk ;
417- struct clk * pclk ;
418417 struct cdns_i3c_master_caps caps ;
419418 unsigned long i3c_scl_lim ;
420419 const struct cdns_i3c_data * devdata ;
@@ -1551,6 +1550,7 @@ MODULE_DEVICE_TABLE(of, cdns_i3c_master_of_ids);
15511550static int cdns_i3c_master_probe (struct platform_device * pdev )
15521551{
15531552 struct cdns_i3c_master * master ;
1553+ struct clk * pclk ;
15541554 int ret , irq ;
15551555 u32 val ;
15561556
@@ -1566,30 +1566,20 @@ static int cdns_i3c_master_probe(struct platform_device *pdev)
15661566 if (IS_ERR (master -> regs ))
15671567 return PTR_ERR (master -> regs );
15681568
1569- master -> pclk = devm_clk_get (& pdev -> dev , "pclk" );
1570- if (IS_ERR (master -> pclk ))
1571- return PTR_ERR (master -> pclk );
1569+ pclk = devm_clk_get_enabled (& pdev -> dev , "pclk" );
1570+ if (IS_ERR (pclk ))
1571+ return PTR_ERR (pclk );
15721572
1573- master -> sysclk = devm_clk_get (& pdev -> dev , "sysclk" );
1573+ master -> sysclk = devm_clk_get_enabled (& pdev -> dev , "sysclk" );
15741574 if (IS_ERR (master -> sysclk ))
15751575 return PTR_ERR (master -> sysclk );
15761576
15771577 irq = platform_get_irq (pdev , 0 );
15781578 if (irq < 0 )
15791579 return irq ;
15801580
1581- ret = clk_prepare_enable (master -> pclk );
1582- if (ret )
1583- return ret ;
1584-
1585- ret = clk_prepare_enable (master -> sysclk );
1586- if (ret )
1587- goto err_disable_pclk ;
1588-
1589- if (readl (master -> regs + DEV_ID ) != DEV_ID_I3C_MASTER ) {
1590- ret = - EINVAL ;
1591- goto err_disable_sysclk ;
1592- }
1581+ if (readl (master -> regs + DEV_ID ) != DEV_ID_I3C_MASTER )
1582+ return - EINVAL ;
15931583
15941584 spin_lock_init (& master -> xferqueue .lock );
15951585 INIT_LIST_HEAD (& master -> xferqueue .list );
@@ -1600,7 +1590,7 @@ static int cdns_i3c_master_probe(struct platform_device *pdev)
16001590 ret = devm_request_irq (& pdev -> dev , irq , cdns_i3c_master_interrupt , 0 ,
16011591 dev_name (& pdev -> dev ), master );
16021592 if (ret )
1603- goto err_disable_sysclk ;
1593+ return ret ;
16041594
16051595 platform_set_drvdata (pdev , master );
16061596
@@ -1622,29 +1612,15 @@ static int cdns_i3c_master_probe(struct platform_device *pdev)
16221612 master -> ibi .slots = devm_kcalloc (& pdev -> dev , master -> ibi .num_slots ,
16231613 sizeof (* master -> ibi .slots ),
16241614 GFP_KERNEL );
1625- if (!master -> ibi .slots ) {
1626- ret = - ENOMEM ;
1627- goto err_disable_sysclk ;
1628- }
1615+ if (!master -> ibi .slots )
1616+ return - ENOMEM ;
16291617
16301618 writel (IBIR_THR (1 ), master -> regs + CMD_IBI_THR_CTRL );
16311619 writel (MST_INT_IBIR_THR , master -> regs + MST_IER );
16321620 writel (DEVS_CTRL_DEV_CLR_ALL , master -> regs + DEVS_CTRL );
16331621
1634- ret = i3c_master_register (& master -> base , & pdev -> dev ,
1635- & cdns_i3c_master_ops , false);
1636- if (ret )
1637- goto err_disable_sysclk ;
1638-
1639- return 0 ;
1640-
1641- err_disable_sysclk :
1642- clk_disable_unprepare (master -> sysclk );
1643-
1644- err_disable_pclk :
1645- clk_disable_unprepare (master -> pclk );
1646-
1647- return ret ;
1622+ return i3c_master_register (& master -> base , & pdev -> dev ,
1623+ & cdns_i3c_master_ops , false);
16481624}
16491625
16501626static void cdns_i3c_master_remove (struct platform_device * pdev )
@@ -1653,9 +1629,6 @@ static void cdns_i3c_master_remove(struct platform_device *pdev)
16531629
16541630 cancel_work_sync (& master -> hj_work );
16551631 i3c_master_unregister (& master -> base );
1656-
1657- clk_disable_unprepare (master -> sysclk );
1658- clk_disable_unprepare (master -> pclk );
16591632}
16601633
16611634static struct platform_driver cdns_i3c_master = {
0 commit comments