[PATCH] pci: imx: disable imx6sdl LTSSM upon driver remove

Tim Harvey tharvey at gateworks.com
Fri Apr 16 22:48:09 CEST 2021


On Fri, Apr 16, 2021 at 1:41 PM Fabio Estevam <festevam at gmail.com> wrote:
>
> Hi Tim,
>
> Some more comments.
>
> On Fri, Apr 16, 2021 at 5:30 PM Tim Harvey <tharvey at gateworks.com> wrote:
> >
> > commit 6ecbe1375671 ("drivers: pci: imx: add imx_pcie_remove function")
> > attempted to resolve an issue caused by MX6QDL not having a proper
> > intneral PCIe core reset and thus hanging during kernel init if the
>
> "internal"
>

Fabio,

Thanks, I will correct this for a v2

> > --- a/drivers/pci/pcie_imx.c
> > +++ b/drivers/pci/pcie_imx.c
> > @@ -473,7 +473,7 @@ static int imx6_pcie_assert_core_reset(struct imx_pcie_priv *priv,
> >          * If both LTSSM_ENABLE and REF_SSP_ENABLE are active we have a strong
> >          * indication that the bootloader activated the link.
> >          */
> > -       if (is_mx6dq() && prepare_for_boot) {
> > +       if ((is_mx6dq() || is_mx6sdl()) && prepare_for_boot) {
>
> It seems that i.MX6QP is missing. What about adding is_mx6dqp() too?

The QP has a soft reset bit such that this isn't an issue. For
reference I'm basing this off the kernel 'fixup' that was removed in
v4.11 which can be found here:
https://elixir.bootlin.com/linux/v4.10.17/source/drivers/pci/host/pci-imx6.c#L269

I'm the one who authored the original patch and it was my mistake way
back then to use 'is_mx6dq()' in U-Boot thinking that it covered all
the early IMX6's that lacked a PCIe soft reset.

Tim


More information about the U-Boot mailing list