|
@@ -214,9 +214,12 @@ static int imx6_pcie_assert_core_reset(struct pcie_port *pp)
|
|
|
regmap_update_bits(imx6_pcie->iomuxc_gpr, IOMUXC_GPR1,
|
|
|
IMX6Q_GPR1_PCIE_REF_CLK_EN, 0 << 16);
|
|
|
|
|
|
- gpio_set_value(imx6_pcie->reset_gpio, 0);
|
|
|
- msleep(100);
|
|
|
- gpio_set_value(imx6_pcie->reset_gpio, 1);
|
|
|
+ /* Some boards don't have PCIe reset GPIO. */
|
|
|
+ if (gpio_is_valid(imx6_pcie->reset_gpio)) {
|
|
|
+ gpio_set_value(imx6_pcie->reset_gpio, 0);
|
|
|
+ msleep(100);
|
|
|
+ gpio_set_value(imx6_pcie->reset_gpio, 1);
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -432,17 +435,13 @@ static int __init imx6_pcie_probe(struct platform_device *pdev)
|
|
|
|
|
|
/* Fetch GPIOs */
|
|
|
imx6_pcie->reset_gpio = of_get_named_gpio(np, "reset-gpio", 0);
|
|
|
- if (!gpio_is_valid(imx6_pcie->reset_gpio)) {
|
|
|
- dev_err(&pdev->dev, "no reset-gpio defined\n");
|
|
|
- ret = -ENODEV;
|
|
|
- }
|
|
|
- ret = devm_gpio_request_one(&pdev->dev,
|
|
|
- imx6_pcie->reset_gpio,
|
|
|
- GPIOF_OUT_INIT_LOW,
|
|
|
- "PCIe reset");
|
|
|
- if (ret) {
|
|
|
- dev_err(&pdev->dev, "unable to get reset gpio\n");
|
|
|
- return ret;
|
|
|
+ if (gpio_is_valid(imx6_pcie->reset_gpio)) {
|
|
|
+ ret = devm_gpio_request_one(&pdev->dev, imx6_pcie->reset_gpio,
|
|
|
+ GPIOF_OUT_INIT_LOW, "PCIe reset");
|
|
|
+ if (ret) {
|
|
|
+ dev_err(&pdev->dev, "unable to get reset gpio\n");
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
imx6_pcie->power_on_gpio = of_get_named_gpio(np, "power-on-gpio", 0);
|