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....@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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot