diff options
Diffstat (limited to 'target/linux/layerscape/patches-4.4/8237-pcie-ls208x-use-unified-compatible-fsl-ls2080a-pcie-.patch')
-rw-r--r-- | target/linux/layerscape/patches-4.4/8237-pcie-ls208x-use-unified-compatible-fsl-ls2080a-pcie-.patch | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-4.4/8237-pcie-ls208x-use-unified-compatible-fsl-ls2080a-pcie-.patch b/target/linux/layerscape/patches-4.4/8237-pcie-ls208x-use-unified-compatible-fsl-ls2080a-pcie-.patch new file mode 100644 index 0000000000..08e1ecba9a --- /dev/null +++ b/target/linux/layerscape/patches-4.4/8237-pcie-ls208x-use-unified-compatible-fsl-ls2080a-pcie-.patch @@ -0,0 +1,103 @@ +From 562f1311b529d81662ed41786b8d240db2e2ff51 Mon Sep 17 00:00:00 2001 +From: Shengzhou Liu <Shengzhou.Liu@nxp.com> +Date: Tue, 6 Dec 2016 15:30:39 +0800 +Subject: [PATCH 237/238] pcie/ls208x: use unified compatible + "fsl,ls2080a-pcie" for ls208x + +To avoid unnecessary reduplication, let's use unified compatible +"fsl,ls2080a-pcie" for ls2080a, ls2085a, ls2088a. + +This patch fixes issue of pcie not working on ls2088a. + +Signed-off-by: Shengzhou Liu <Shengzhou.Liu@nxp.com> +--- + arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi | 12 ++++-------- + drivers/pci/host/pci-layerscape.c | 13 ++++++++----- + 2 files changed, 12 insertions(+), 13 deletions(-) + +diff --git a/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi +index bd69942..07c917b 100644 +--- a/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi ++++ b/arch/arm64/boot/dts/freescale/fsl-ls2088a.dtsi +@@ -513,8 +513,7 @@ + }; + + pcie1: pcie@3400000 { +- compatible = "fsl,ls2088a-pcie", "fsl,ls2080a-pcie", +- "fsl,ls2085a-pcie", "snps,dw-pcie"; ++ compatible = "fsl,ls2080a-pcie", "snps,dw-pcie"; + reg = <0x00 0x03400000 0x0 0x00100000 /* controller registers */ + 0x20 0x00000000 0x0 0x00002000>; /* configuration space */ + reg-names = "regs", "config"; +@@ -539,8 +538,7 @@ + }; + + pcie2: pcie@3500000 { +- compatible = "fsl,ls2080a-pcie", "fsl,ls2080a-pcie", +- "fsl,ls2085a-pcie", "snps,dw-pcie"; ++ compatible = "fsl,ls2080a-pcie", "snps,dw-pcie"; + reg = <0x00 0x03500000 0x0 0x00100000 /* controller registers */ + 0x28 0x00000000 0x0 0x00002000>; /* configuration space */ + reg-names = "regs", "config"; +@@ -565,8 +563,7 @@ + }; + + pcie3: pcie@3600000 { +- compatible = "fsl,ls2088a-pcie", "fsl,ls2080a-pcie", +- "fsl,ls2085a-pcie", "snps,dw-pcie"; ++ compatible = "fsl,ls2080a-pcie", "snps,dw-pcie"; + reg = <0x00 0x03600000 0x0 0x00100000 /* controller registers */ + 0x30 0x00000000 0x0 0x00002000>; /* configuration space */ + reg-names = "regs", "config"; +@@ -591,8 +588,7 @@ + }; + + pcie4: pcie@3700000 { +- compatible = "fsl,ls2080a-pcie", "fsl,ls2080a-pcie", +- "fsl,ls2085a-pcie", "snps,dw-pcie"; ++ compatible = "fsl,ls2080a-pcie", "snps,dw-pcie"; + reg = <0x00 0x03700000 0x0 0x00100000 /* controller registers */ + 0x38 0x00000000 0x0 0x00002000>; /* configuration space */ + reg-names = "regs", "config"; +diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c +index 00feabf..3e2100d 100644 +--- a/drivers/pci/host/pci-layerscape.c ++++ b/drivers/pci/host/pci-layerscape.c +@@ -158,9 +158,14 @@ static void ls1021_pcie_host_init(struct pcie_port *pp) + static int ls_pcie_link_up(struct pcie_port *pp) + { + struct ls_pcie *pcie = to_ls_pcie(pp); +- u32 state; ++ u32 state, offset; ++ ++ if (of_get_property(pp->dev->of_node, "fsl,lut_diff", NULL)) ++ offset = 0x407fc; ++ else ++ offset = pcie->drvdata->lut_dbg; + +- state = (ioread32(pcie->lut + pcie->drvdata->lut_dbg) >> ++ state = (ioread32(pcie->lut + offset) >> + pcie->drvdata->ltssm_shift) & + LTSSM_STATE_MASK; + +@@ -261,7 +266,6 @@ static const struct of_device_id ls_pcie_of_match[] = { + { .compatible = "fsl,ls1046a-pcie", .data = &ls1046_drvdata }, + { .compatible = "fsl,ls1088a-pcie", .data = &ls1088_drvdata }, + { .compatible = "fsl,ls2080a-pcie", .data = &ls2080_drvdata }, +- { .compatible = "fsl,ls2085a-pcie", .data = &ls2080_drvdata }, + { }, + }; + MODULE_DEVICE_TABLE(of, ls_pcie_of_match); +@@ -315,8 +319,7 @@ static int __init ls_pcie_probe(struct platform_device *pdev) + if (!ls_pcie_is_bridge(pcie)) + return -ENODEV; + +- if (of_device_is_compatible(pdev->dev.of_node, "fsl,ls2085a-pcie") || +- of_device_is_compatible(pdev->dev.of_node, "fsl,ls2080a-pcie") || ++ if (of_device_is_compatible(pdev->dev.of_node, "fsl,ls2080a-pcie") || + of_device_is_compatible(pdev->dev.of_node, "fsl,ls1088a-pcie")) { + int len; + const u32 *prop; +-- +1.7.9.5 + |