[U-Boot] [PATCH] pci: layerscape: Only set EP CFG READY bit
Z.q. Hou
zhiqiang.hou at nxp.com
Tue Oct 15 02:51:48 UTC 2019
> -----Original Message-----
> From: Pankaj Bansal
> Sent: 2019年10月14日 19:43
> To: Priyanka Jain <priyanka.jain at nxp.com>; Xiaowei Bao
> <xiaowei.bao at nxp.com>; Tom Rini <trini at konsulko.com>; Z.q. Hou
> <zhiqiang.hou at nxp.com>
> Cc: u-boot at lists.denx.de; Pankaj Bansal <pankaj.bansal at nxp.com>
> Subject: [PATCH] pci: layerscape: Only set EP CFG READY bit
>
> As part of EP setup, we want to set the config ready bit of controller, so that
> RC can read the config space of EP.
> Now, when we set the config ready bit we are inadvertently clearing the
> LTSSM_EN bit in same register, which restarts the link tarining between RC
> and EP.
> Therefore, just set the desired CFG_READY bit (bit 0), while leaving the other
> bits unchanged.
>
> Signed-off-by: Pankaj Bansal <pankaj.bansal at nxp.com>
> ---
> drivers/pci/pcie_layerscape.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/pcie_layerscape.c b/drivers/pci/pcie_layerscape.c
> index d8a7b7c865..bb2ec7c2ce 100644
> --- a/drivers/pci/pcie_layerscape.c
> +++ b/drivers/pci/pcie_layerscape.c
> @@ -407,7 +407,11 @@ static void ls_pcie_ep_setup_bars(void *bar_base)
>
> static void ls_pcie_ep_enable_cfg(struct ls_pcie *pcie) {
> - ctrl_writel(pcie, PCIE_CONFIG_READY, PCIE_PF_CONFIG);
> + u32 config;
> +
> + config = ctrl_readl(pcie, PCIE_PF_CONFIG);
> + config |= PCIE_CONFIG_READY;
> + ctrl_writel(pcie, config, PCIE_PF_CONFIG);
> }
>
> static void ls_pcie_setup_ep(struct ls_pcie *pcie)
> --
> 2.17.1
Reviewed-by: Hou Zhiqiang <Zhiqiang.Hou at nxp.com>
More information about the U-Boot
mailing list