PCI: starfive: Use regulator APIs instead of GPIO APIs to control the 3V3 power supply of PCIe slots
PATCH RESEND 1/1 PCI: starfive: Use regulator APIs instead of GPIO APIs to control the 3V3 power supply of PCIe slots
The "enable-gpio" property is obtained to control the 3V3 power supply of PCIe slots but it is not documented in the dt-bindings and using GPIO APIs is not a standard method to control PCIe slot power, so use "vpcie3v3-supply" property and regulator APIs to replace them.
This change will break the DTs which add "enable-gpio" or "enable-gpios" property under the node with compatible "starfive,jh7110-pcie". Fortunately, there are no such DTs in the upstream mainline, so this change has no impact on the upstream mainline.
If you have used "enable-gpio" or "enable-gpios" property in your downstream DTs, please update it with "vpcie3v3-supply" after applying this commit.
---
This patch is derived from the reply of Manivannan [1]. And the previous version is [2].
Changes since [2]:
- Improve the commit messages. Add description to explain the impact of this patch.
- Remove the Fixes tag and the Tested-by tag.
[1] https://lore.kernel.org/all/xxswzi4v6gpuqbe3cczj2yjmprhvln26fl5ligsp5vkiogrnwk@hpifxivaps6j/
[2] https://lore.kernel.org/all/[email protected]/
--- drivers/pci/controller/plda/pcie-starfive.c | 25 ++++++++++++--------- 1 file changed, 15 insertions(+), 10 deletions(-)
drivers/pci/controller/plda/pcie-starfive.c +15 -10
@@ -55,7 +55,7 @@ struct starfive_jh7110_pcie {struct reset_control *resets;struct clk_bulk_data *clks;struct regmap *reg_syscon; -struct gpio_desc *power_gpio; +struct regulator *vpcie3v3;struct gpio_desc *reset_gpio;struct phy *phy;
@@ -153,11 +153,13 @@ static int starfive_pcie_parse_dt(struct starfive_jh7110_pcie *pcie,return dev_err_probe (dev,PTR_ERR (pcie->reset_gpio),"failed to get perst-gpio\n" ); - pcie->power_gpio =devm_gpiod_get_optional (dev,"enable" , -GPIOD_OUT_LOW ); -if (IS_ERR (pcie->power_gpio)) -return dev_err_probe (dev,PTR_ERR (pcie->power_gpio), -"failed to get power-gpio\n" ); + pcie->vpcie3v3 =devm_regulator_get_optional (dev,"vpcie3v3" ); +if (IS_ERR (pcie->vpcie3v3)) { +if (PTR_ERR (pcie->vpcie3v3) != -ENODEV ) +return dev_err_probe (dev,PTR_ERR (pcie->vpcie3v3), +"failed to get vpcie3v3 regulator\n" ); + pcie->vpcie3v3 =NULL ; + }return 0 ; }
@@ -270,8 +272,8 @@ static void starfive_pcie_host_deinit(struct plda_pcie_rp *plda) container_of(plda, struct starfive_jh7110_pcie, plda);starfive_pcie_clk_rst_deinit (pcie); -if (pcie->power_gpio) -gpiod_set_value_cansleep (pcie->power_gpio,0 ); +if (pcie->vpcie3v3) +regulator_disable (pcie->vpcie3v3);starfive_pcie_disable_phy (pcie); }
@@ -304,8 +306,11 @@ static int starfive_pcie_host_init(struct plda_pcie_rp *plda)if (ret)return ret; -if (pcie->power_gpio) -gpiod_set_value_cansleep (pcie->power_gpio,1 ); +if (pcie->vpcie3v3) { + ret =regulator_enable (pcie->vpcie3v3); +if (ret) +dev_err_probe (dev, ret,"failed to enable vpcie3v3 regulator\n" ); + }if (pcie->reset_gpio)gpiod_set_value_cansleep (pcie->reset_gpio,1 );
base-commit: ea1013c1539270e372fc99854bc6e4d94eaeff66
Signature · 1 line
2.43.2
Manivannan Sadhasivam
AppliedQuoted 13 lines · Hal Feng
The "enable-gpio" property is obtained to control the 3V3 power supply of PCIe slots but it is not documented in the dt-bindings and using GPIO APIs is not a standard method to control PCIe slot power, so use "vpcie3v3-supply" property and regulator APIs to replace them.
This change will break the DTs which add "enable-gpio" or "enable-gpios" property under the node with compatible "starfive,jh7110-pcie". Fortunately, there are no such DTs in the upstream mainline, so this change has no impact on the upstream mainline.
If you have used "enable-gpio" or "enable-gpios" property in your downstream DTs, please update it with "vpcie3v3-supply" after applying this commit.
Quoted 1 line
[...]
Applied, thanks!
[1/1] PCI: starfive: Use regulator APIs instead of GPIO APIs to control the 3V3 power supply of PCIe slots
commit: 05a75df4182e301a1b0059606f77b65c74deaa9b
Best regards,
Signature · 1 line
Manivannan Sadhasivam <[email protected]>