[U-Boot] [PATCH 3/3] pci: layerscape: Add the dts fixup for EP and RC
York Sun
york.sun at nxp.com
Fri Nov 2 14:52:39 UTC 2018
On 10/25/18 7:01 PM, Xiaowei Bao wrote:
> Add the dts fixup when PCI controller work diffferent mode.
>
> Signed-off-by: Xiaowei Bao <xiaowei.bao at nxp.com>
> ---
> drivers/pci/pcie_layerscape_fixup.c | 25 +++++++++++++++++++++++--
> 1 files changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/pcie_layerscape_fixup.c b/drivers/pci/pcie_layerscape_fixup.c
> index 1a17bd9..089e031 100644
> --- a/drivers/pci/pcie_layerscape_fixup.c
> +++ b/drivers/pci/pcie_layerscape_fixup.c
> @@ -218,7 +218,7 @@ static void fdt_fixup_pcie(void *blob)
> }
> #endif
>
> -static void ft_pcie_ls_setup(void *blob, struct ls_pcie *pcie)
> +static void ft_pcie_rc_fix(void *blob, struct ls_pcie *pcie)
> {
> int off;
> uint svr;
> @@ -243,12 +243,33 @@ static void ft_pcie_ls_setup(void *blob, struct ls_pcie *pcie)
> return;
> }
>
> - if (pcie->enabled)
> + if (pcie->enabled && pcie->mode == PCI_HEADER_TYPE_BRIDGE)
> + fdt_set_node_status(blob, off, FDT_STATUS_OKAY, 0);
> + else
> + fdt_set_node_status(blob, off, FDT_STATUS_DISABLED, 0);
> +}
> +
> +static void ft_pcie_ep_fix(void *blob, struct ls_pcie *pcie)
> +{
> + int off;
> +
> + off = fdt_node_offset_by_compat_reg(blob, "fsl,ls-pcie-ep",
> + pcie->dbi_res.start);
> + if (off < 0)
> + return;
> +
> + if (pcie->enabled && pcie->mode == PCI_HEADER_TYPE_NORMAL)
> fdt_set_node_status(blob, off, FDT_STATUS_OKAY, 0);
> else
> fdt_set_node_status(blob, off, FDT_STATUS_DISABLED, 0);
> }
>
> +static void ft_pcie_ls_setup(void *blob, struct ls_pcie *pcie)
> +{
> + ft_pcie_ep_fix(blob, pcie);
> + ft_pcie_rc_fix(blob, pcie);
> +}
Wouldn't it be faster to check the result of first call before entering
the second function? One cannot be both EP and RC, right?
York
More information about the U-Boot
mailing list