@@ -477,9 +477,7 @@ static int j721e_pcie_probe(struct platform_device *pdev)
477477 struct j721e_pcie * pcie ;
478478 struct cdns_pcie_rc * rc = NULL ;
479479 struct cdns_pcie_ep * ep = NULL ;
480- struct gpio_desc * gpiod ;
481480 void __iomem * base ;
482- struct clk * clk ;
483481 u32 num_lanes ;
484482 u32 mode ;
485483 int ret ;
@@ -590,49 +588,41 @@ static int j721e_pcie_probe(struct platform_device *pdev)
590588
591589 switch (mode ) {
592590 case PCI_MODE_RC :
593- gpiod = devm_gpiod_get_optional (dev , "reset" , GPIOD_OUT_LOW );
594- if (IS_ERR (gpiod )) {
595- ret = dev_err_probe (dev , PTR_ERR (gpiod ), "Failed to get reset GPIO\n" );
591+ pcie -> reset_gpio = devm_gpiod_get_optional (dev , "reset" , GPIOD_OUT_LOW );
592+ if (IS_ERR (pcie -> reset_gpio )) {
593+ ret = dev_err_probe (dev , PTR_ERR (pcie -> reset_gpio ),
594+ "Failed to get reset GPIO\n" );
596595 goto err_get_sync ;
597596 }
598- pcie -> reset_gpio = gpiod ;
599597
600598 ret = cdns_pcie_init_phy (dev , cdns_pcie );
601599 if (ret ) {
602600 dev_err_probe (dev , ret , "Failed to init phy\n" );
603601 goto err_get_sync ;
604602 }
605603
606- clk = devm_clk_get_optional (dev , "pcie_refclk" );
607- if (IS_ERR (clk )) {
608- ret = dev_err_probe (dev , PTR_ERR (clk ), "failed to get pcie_refclk\n" );
604+ pcie -> refclk = devm_clk_get_optional_enabled (dev , "pcie_refclk" );
605+ if (IS_ERR (pcie -> refclk )) {
606+ ret = dev_err_probe (dev , PTR_ERR (pcie -> refclk ),
607+ "failed to enable pcie_refclk\n" );
609608 goto err_pcie_setup ;
610609 }
611610
612- ret = clk_prepare_enable (clk );
613- if (ret ) {
614- dev_err_probe (dev , ret , "failed to enable pcie_refclk\n" );
615- goto err_pcie_setup ;
616- }
617- pcie -> refclk = clk ;
618-
619611 /*
620612 * Section 2.2 of the PCI Express Card Electromechanical
621613 * Specification (Revision 5.1) mandates that the deassertion
622614 * of the PERST# signal should be delayed by 100 ms (TPVPERL).
623615 * This shall ensure that the power and the reference clock
624616 * are stable.
625617 */
626- if (gpiod ) {
618+ if (pcie -> reset_gpio ) {
627619 msleep (PCIE_T_PVPERL_MS );
628- gpiod_set_value_cansleep (gpiod , 1 );
620+ gpiod_set_value_cansleep (pcie -> reset_gpio , 1 );
629621 }
630622
631623 ret = cdns_pcie_host_setup (rc );
632- if (ret < 0 ) {
633- clk_disable_unprepare (pcie -> refclk );
624+ if (ret < 0 )
634625 goto err_pcie_setup ;
635- }
636626
637627 break ;
638628 case PCI_MODE_EP :
@@ -679,7 +669,6 @@ static void j721e_pcie_remove(struct platform_device *pdev)
679669
680670 gpiod_set_value_cansleep (pcie -> reset_gpio , 0 );
681671
682- clk_disable_unprepare (pcie -> refclk );
683672 cdns_pcie_disable_phy (cdns_pcie );
684673 j721e_pcie_disable_link_irq (pcie );
685674 pm_runtime_put (dev );
0 commit comments