
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@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