[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