Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'pci/controller/plda-starfive'

- Use regulator APIs to control the 3v3 power supply of PCIe slots (Hal
Feng)

* pci/controller/plda-starfive:
PCI: starfive: Use regulator APIs to control the 3v3 power supply of PCIe slots

+15 -10
+15 -10
drivers/pci/controller/plda/pcie-starfive.c
··· 55 55 struct reset_control *resets; 56 56 struct clk_bulk_data *clks; 57 57 struct regmap *reg_syscon; 58 - struct gpio_desc *power_gpio; 58 + struct regulator *vpcie3v3; 59 59 struct gpio_desc *reset_gpio; 60 60 struct phy *phy; 61 61 ··· 153 153 return dev_err_probe(dev, PTR_ERR(pcie->reset_gpio), 154 154 "failed to get perst-gpio\n"); 155 155 156 - pcie->power_gpio = devm_gpiod_get_optional(dev, "enable", 157 - GPIOD_OUT_LOW); 158 - if (IS_ERR(pcie->power_gpio)) 159 - return dev_err_probe(dev, PTR_ERR(pcie->power_gpio), 160 - "failed to get power-gpio\n"); 156 + pcie->vpcie3v3 = devm_regulator_get_optional(dev, "vpcie3v3"); 157 + if (IS_ERR(pcie->vpcie3v3)) { 158 + if (PTR_ERR(pcie->vpcie3v3) != -ENODEV) 159 + return dev_err_probe(dev, PTR_ERR(pcie->vpcie3v3), 160 + "failed to get vpcie3v3 regulator\n"); 161 + pcie->vpcie3v3 = NULL; 162 + } 161 163 162 164 return 0; 163 165 } ··· 272 270 container_of(plda, struct starfive_jh7110_pcie, plda); 273 271 274 272 starfive_pcie_clk_rst_deinit(pcie); 275 - if (pcie->power_gpio) 276 - gpiod_set_value_cansleep(pcie->power_gpio, 0); 273 + if (pcie->vpcie3v3) 274 + regulator_disable(pcie->vpcie3v3); 277 275 starfive_pcie_disable_phy(pcie); 278 276 } 279 277 ··· 306 304 if (ret) 307 305 return ret; 308 306 309 - if (pcie->power_gpio) 310 - gpiod_set_value_cansleep(pcie->power_gpio, 1); 307 + if (pcie->vpcie3v3) { 308 + ret = regulator_enable(pcie->vpcie3v3); 309 + if (ret) 310 + dev_err_probe(dev, ret, "failed to enable vpcie3v3 regulator\n"); 311 + } 311 312 312 313 if (pcie->reset_gpio) 313 314 gpiod_set_value_cansleep(pcie->reset_gpio, 1);