Merge branch 'remotes/lorenzo/pci/imx6'
- Fix PERST# start-up sequence (Francesco Dolcini) * remotes/lorenzo/pci/imx6: PCI: imx6: Fix PERST# start-up sequence
This commit is contained in:
commit
b8dc34460c
@ -408,6 +408,11 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
|
|||||||
dev_err(dev, "failed to disable vpcie regulator: %d\n",
|
dev_err(dev, "failed to disable vpcie regulator: %d\n",
|
||||||
ret);
|
ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Some boards don't have PCIe reset GPIO. */
|
||||||
|
if (gpio_is_valid(imx6_pcie->reset_gpio))
|
||||||
|
gpio_set_value_cansleep(imx6_pcie->reset_gpio,
|
||||||
|
imx6_pcie->gpio_active_high);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie)
|
static unsigned int imx6_pcie_grp_offset(const struct imx6_pcie *imx6_pcie)
|
||||||
@ -540,15 +545,6 @@ static void imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
|
|||||||
/* allow the clocks to stabilize */
|
/* allow the clocks to stabilize */
|
||||||
usleep_range(200, 500);
|
usleep_range(200, 500);
|
||||||
|
|
||||||
/* Some boards don't have PCIe reset GPIO. */
|
|
||||||
if (gpio_is_valid(imx6_pcie->reset_gpio)) {
|
|
||||||
gpio_set_value_cansleep(imx6_pcie->reset_gpio,
|
|
||||||
imx6_pcie->gpio_active_high);
|
|
||||||
msleep(100);
|
|
||||||
gpio_set_value_cansleep(imx6_pcie->reset_gpio,
|
|
||||||
!imx6_pcie->gpio_active_high);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (imx6_pcie->drvdata->variant) {
|
switch (imx6_pcie->drvdata->variant) {
|
||||||
case IMX8MQ:
|
case IMX8MQ:
|
||||||
reset_control_deassert(imx6_pcie->pciephy_reset);
|
reset_control_deassert(imx6_pcie->pciephy_reset);
|
||||||
@ -595,6 +591,15 @@ static void imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Some boards don't have PCIe reset GPIO. */
|
||||||
|
if (gpio_is_valid(imx6_pcie->reset_gpio)) {
|
||||||
|
msleep(100);
|
||||||
|
gpio_set_value_cansleep(imx6_pcie->reset_gpio,
|
||||||
|
!imx6_pcie->gpio_active_high);
|
||||||
|
/* Wait for 100ms after PERST# deassertion (PCIe r5.0, 6.6.1) */
|
||||||
|
msleep(100);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
err_ref_clk:
|
err_ref_clk:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user