Skip to content

Commit c930b10

Browse files
moonlinuxMani-Sadhasivam
authored andcommitted
PCI: dw-rockchip: Simplify regulator setup with devm_regulator_get_enable_optional()
Replace manual get/enable logic with devm_regulator_get_enable_optional() to reduce boilerplate and improve error handling. This devm helper ensures the regulator is enabled during probe and automatically disabled when the platform device is freed. Also drop the redundant 'rockchip_pcie::vpcie3v3' pointer. Signed-off-by: Anand Moon <linux.amoon@gmail.com> Signed-off-by: Manivannan Sadhasivam <mani@kernel.org> Link: https://patch.msgid.link/20250905112736.6401-1-linux.amoon@gmail.com
1 parent 3a86608 commit c930b10

1 file changed

Lines changed: 6 additions & 17 deletions

File tree

drivers/pci/controller/dwc/pcie-dw-rockchip.c

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ struct rockchip_pcie {
8282
unsigned int clk_cnt;
8383
struct reset_control *rst;
8484
struct gpio_desc *rst_gpio;
85-
struct regulator *vpcie3v3;
8685
struct irq_domain *irq_domain;
8786
const struct rockchip_pcie_of_data *data;
8887
};
@@ -652,22 +651,15 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
652651
return ret;
653652

654653
/* DON'T MOVE ME: must be enable before PHY init */
655-
rockchip->vpcie3v3 = devm_regulator_get_optional(dev, "vpcie3v3");
656-
if (IS_ERR(rockchip->vpcie3v3)) {
657-
if (PTR_ERR(rockchip->vpcie3v3) != -ENODEV)
658-
return dev_err_probe(dev, PTR_ERR(rockchip->vpcie3v3),
659-
"failed to get vpcie3v3 regulator\n");
660-
rockchip->vpcie3v3 = NULL;
661-
} else {
662-
ret = regulator_enable(rockchip->vpcie3v3);
663-
if (ret)
664-
return dev_err_probe(dev, ret,
665-
"failed to enable vpcie3v3 regulator\n");
666-
}
654+
ret = devm_regulator_get_enable_optional(dev, "vpcie3v3");
655+
if (ret < 0 && ret != -ENODEV)
656+
return dev_err_probe(dev, ret,
657+
"failed to enable vpcie3v3 regulator\n");
667658

668659
ret = rockchip_pcie_phy_init(rockchip);
669660
if (ret)
670-
goto disable_regulator;
661+
return dev_err_probe(dev, ret,
662+
"failed to initialize the phy\n");
671663

672664
ret = reset_control_deassert(rockchip->rst);
673665
if (ret)
@@ -700,9 +692,6 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
700692
clk_bulk_disable_unprepare(rockchip->clk_cnt, rockchip->clks);
701693
deinit_phy:
702694
rockchip_pcie_phy_deinit(rockchip);
703-
disable_regulator:
704-
if (rockchip->vpcie3v3)
705-
regulator_disable(rockchip->vpcie3v3);
706695

707696
return ret;
708697
}

0 commit comments

Comments
 (0)