Skip to content

Commit 51f8276

Browse files
committed
Merge branch 'pci/controller/j721e'
- Use devm_clk_get_optional_enabled() instead of open-coding devm_clk_get_optional() and clk_prepare_enable() (Anand Moon) * pci/controller/j721e: PCI: j721e: Use 'pcie->reset_gpio' directly and drop the local variable PCI: j721e: Use devm_clk_get_optional_enabled() to get and enable the clock
2 parents 3041820 + 444a43b commit 51f8276

1 file changed

Lines changed: 11 additions & 22 deletions

File tree

drivers/pci/controller/cadence/pci-j721e.c

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)