Messages in this thread | | | Date | Mon, 9 May 2022 14:18:34 +0200 | Subject | Re: [PATCH] PCI: mediatek-gen3: Assert resets to ensure expected init state | From | AngeloGioacchino Del Regno <> |
| |
Il 04/04/22 16:48, AngeloGioacchino Del Regno ha scritto: > The controller may have been left out of reset by the bootloader, > in which case, before the powerup sequence, the controller will be > found preconfigured with values that were set before booting the > kernel: this produces a controller failure, with the result of > a failure during the mtk_pcie_startup_port() sequence as the PCIe > link never gets up. > > To ensure that we get a clean start in an expected state, assert > both the PHY and MAC resets before executing the controller > power-up sequence. > > Fixes: d3bf75b579b9 ("PCI: mediatek-gen3: Add MediaTek Gen3 driver for MT8192") > Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Friendly ping for an important fix :-)
Regards, Angelo
> --- > drivers/pci/controller/pcie-mediatek-gen3.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/pci/controller/pcie-mediatek-gen3.c b/drivers/pci/controller/pcie-mediatek-gen3.c > index f7048ea4c020..dccdfce12b1c 100644 > --- a/drivers/pci/controller/pcie-mediatek-gen3.c > +++ b/drivers/pci/controller/pcie-mediatek-gen3.c > @@ -838,6 +838,14 @@ static int mtk_pcie_setup(struct mtk_gen3_pcie *pcie) > if (err) > return err; > > + /* > + * The controller may have been left out of reset by the bootloader > + * so make sure that we get a clean start by asserting resets here. > + */ > + reset_control_assert(pcie->phy_reset); > + reset_control_assert(pcie->mac_reset); > + usleep_range(10, 20); > + > /* Don't touch the hardware registers before power up */ > err = mtk_pcie_power_up(pcie); > if (err)
| |