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;
 }
 
        /* 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);