From mboxrd@z Thu Jan 1 00:00:00 1970 From: York Sun Date: Fri, 2 Nov 2018 14:52:39 +0000 Subject: [U-Boot] [PATCH 3/3] pci: layerscape: Add the dts fixup for EP and RC References: <20181026015626.40131-1-xiaowei.bao@nxp.com> <20181026015626.40131-3-xiaowei.bao@nxp.com> Message-ID: List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > 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