Merge branch 'remotes/lorenzo/pci/rockchip'

- Make rockchip 0V9 and 1V8 power regulators non-optional (Robin Murphy)

* remotes/lorenzo/pci/rockchip:
  PCI: rockchip: Make some regulators non-optional
This commit is contained in:
Bjorn Helgaas 2019-11-28 08:54:49 -06:00
commit 069ade5dfe

View File

@ -620,19 +620,13 @@ static int rockchip_pcie_parse_host_dt(struct rockchip_pcie *rockchip)
dev_info(dev, "no vpcie3v3 regulator found\n"); dev_info(dev, "no vpcie3v3 regulator found\n");
} }
rockchip->vpcie1v8 = devm_regulator_get_optional(dev, "vpcie1v8"); rockchip->vpcie1v8 = devm_regulator_get(dev, "vpcie1v8");
if (IS_ERR(rockchip->vpcie1v8)) { if (IS_ERR(rockchip->vpcie1v8))
if (PTR_ERR(rockchip->vpcie1v8) != -ENODEV) return PTR_ERR(rockchip->vpcie1v8);
return PTR_ERR(rockchip->vpcie1v8);
dev_info(dev, "no vpcie1v8 regulator found\n");
}
rockchip->vpcie0v9 = devm_regulator_get_optional(dev, "vpcie0v9"); rockchip->vpcie0v9 = devm_regulator_get(dev, "vpcie0v9");
if (IS_ERR(rockchip->vpcie0v9)) { if (IS_ERR(rockchip->vpcie0v9))
if (PTR_ERR(rockchip->vpcie0v9) != -ENODEV) return PTR_ERR(rockchip->vpcie0v9);
return PTR_ERR(rockchip->vpcie0v9);
dev_info(dev, "no vpcie0v9 regulator found\n");
}
return 0; return 0;
} }
@ -658,27 +652,22 @@ static int rockchip_pcie_set_vpcie(struct rockchip_pcie *rockchip)
} }
} }
if (!IS_ERR(rockchip->vpcie1v8)) { err = regulator_enable(rockchip->vpcie1v8);
err = regulator_enable(rockchip->vpcie1v8); if (err) {
if (err) { dev_err(dev, "fail to enable vpcie1v8 regulator\n");
dev_err(dev, "fail to enable vpcie1v8 regulator\n"); goto err_disable_3v3;
goto err_disable_3v3;
}
} }
if (!IS_ERR(rockchip->vpcie0v9)) { err = regulator_enable(rockchip->vpcie0v9);
err = regulator_enable(rockchip->vpcie0v9); if (err) {
if (err) { dev_err(dev, "fail to enable vpcie0v9 regulator\n");
dev_err(dev, "fail to enable vpcie0v9 regulator\n"); goto err_disable_1v8;
goto err_disable_1v8;
}
} }
return 0; return 0;
err_disable_1v8: err_disable_1v8:
if (!IS_ERR(rockchip->vpcie1v8)) regulator_disable(rockchip->vpcie1v8);
regulator_disable(rockchip->vpcie1v8);
err_disable_3v3: err_disable_3v3:
if (!IS_ERR(rockchip->vpcie3v3)) if (!IS_ERR(rockchip->vpcie3v3))
regulator_disable(rockchip->vpcie3v3); regulator_disable(rockchip->vpcie3v3);
@ -897,8 +886,7 @@ static int __maybe_unused rockchip_pcie_suspend_noirq(struct device *dev)
rockchip_pcie_disable_clocks(rockchip); rockchip_pcie_disable_clocks(rockchip);
if (!IS_ERR(rockchip->vpcie0v9)) regulator_disable(rockchip->vpcie0v9);
regulator_disable(rockchip->vpcie0v9);
return ret; return ret;
} }
@ -908,12 +896,10 @@ static int __maybe_unused rockchip_pcie_resume_noirq(struct device *dev)
struct rockchip_pcie *rockchip = dev_get_drvdata(dev); struct rockchip_pcie *rockchip = dev_get_drvdata(dev);
int err; int err;
if (!IS_ERR(rockchip->vpcie0v9)) { err = regulator_enable(rockchip->vpcie0v9);
err = regulator_enable(rockchip->vpcie0v9); if (err) {
if (err) { dev_err(dev, "fail to enable vpcie0v9 regulator\n");
dev_err(dev, "fail to enable vpcie0v9 regulator\n"); return err;
return err;
}
} }
err = rockchip_pcie_enable_clocks(rockchip); err = rockchip_pcie_enable_clocks(rockchip);
@ -939,8 +925,7 @@ err_err_deinit_port:
err_pcie_resume: err_pcie_resume:
rockchip_pcie_disable_clocks(rockchip); rockchip_pcie_disable_clocks(rockchip);
err_disable_0v9: err_disable_0v9:
if (!IS_ERR(rockchip->vpcie0v9)) regulator_disable(rockchip->vpcie0v9);
regulator_disable(rockchip->vpcie0v9);
return err; return err;
} }
@ -1081,10 +1066,8 @@ err_vpcie:
regulator_disable(rockchip->vpcie12v); regulator_disable(rockchip->vpcie12v);
if (!IS_ERR(rockchip->vpcie3v3)) if (!IS_ERR(rockchip->vpcie3v3))
regulator_disable(rockchip->vpcie3v3); regulator_disable(rockchip->vpcie3v3);
if (!IS_ERR(rockchip->vpcie1v8)) regulator_disable(rockchip->vpcie1v8);
regulator_disable(rockchip->vpcie1v8); regulator_disable(rockchip->vpcie0v9);
if (!IS_ERR(rockchip->vpcie0v9))
regulator_disable(rockchip->vpcie0v9);
err_set_vpcie: err_set_vpcie:
rockchip_pcie_disable_clocks(rockchip); rockchip_pcie_disable_clocks(rockchip);
return err; return err;
@ -1108,10 +1091,8 @@ static int rockchip_pcie_remove(struct platform_device *pdev)
regulator_disable(rockchip->vpcie12v); regulator_disable(rockchip->vpcie12v);
if (!IS_ERR(rockchip->vpcie3v3)) if (!IS_ERR(rockchip->vpcie3v3))
regulator_disable(rockchip->vpcie3v3); regulator_disable(rockchip->vpcie3v3);
if (!IS_ERR(rockchip->vpcie1v8)) regulator_disable(rockchip->vpcie1v8);
regulator_disable(rockchip->vpcie1v8); regulator_disable(rockchip->vpcie0v9);
if (!IS_ERR(rockchip->vpcie0v9))
regulator_disable(rockchip->vpcie0v9);
return 0; return 0;
} }