summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHonghui Zhang <honghui.zhang@mediatek.com>2019-02-01 00:36:07 -0500
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>2019-03-01 06:22:21 -0500
commitcbe3a7728c7ad4721677208e155db06f67eb57d2 (patch)
tree919e48c3264e73bfbb411f0cc2e38018586a6417
parentc61df57343bf05743f8abbb31eec9a6f05820dd1 (diff)
PCI: mediatek: Enlarge PCIe2AHB window size to support 4GB DRAM
The PCIE_AXI_WINDOW0 register defines the inbound window size for requests coming from PCI endpoints. Requests outside of this window will be treated as unsupported requests. Enlarge this window size from 2^31 to 2^33 to support a 8GB address space (which gives endpoints DMA access to full 4GB DRAM address range - physical DRAM starts at 0x40000000). Reported-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Honghui Zhang <honghui.zhang@mediatek.com> [lorenzo.pieralisi@arm.com: updated commit log] Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
-rw-r--r--drivers/pci/controller/pcie-mediatek.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
index c42fe5c4319f..0b6c72804e03 100644
--- a/drivers/pci/controller/pcie-mediatek.c
+++ b/drivers/pci/controller/pcie-mediatek.c
@@ -90,6 +90,12 @@
90#define AHB2PCIE_SIZE(x) ((x) & GENMASK(4, 0)) 90#define AHB2PCIE_SIZE(x) ((x) & GENMASK(4, 0))
91#define PCIE_AXI_WINDOW0 0x448 91#define PCIE_AXI_WINDOW0 0x448
92#define WIN_ENABLE BIT(7) 92#define WIN_ENABLE BIT(7)
93/*
94 * Define PCIe to AHB window size as 2^33 to support max 8GB address space
95 * translate, support least 4GB DRAM size access from EP DMA(physical DRAM
96 * start from 0x40000000).
97 */
98#define PCIE2AHB_SIZE 0x21
93 99
94/* PCIe V2 configuration transaction header */ 100/* PCIe V2 configuration transaction header */
95#define PCIE_CFG_HEADER0 0x460 101#define PCIE_CFG_HEADER0 0x460
@@ -713,7 +719,7 @@ static int mtk_pcie_startup_port_v2(struct mtk_pcie_port *port)
713 writel(val, port->base + PCIE_AHB_TRANS_BASE0_H); 719 writel(val, port->base + PCIE_AHB_TRANS_BASE0_H);
714 720
715 /* Set PCIe to AXI translation memory space.*/ 721 /* Set PCIe to AXI translation memory space.*/
716 val = fls(0xffffffff) | WIN_ENABLE; 722 val = PCIE2AHB_SIZE | WIN_ENABLE;
717 writel(val, port->base + PCIE_AXI_WINDOW0); 723 writel(val, port->base + PCIE_AXI_WINDOW0);
718 724
719 return 0; 725 return 0;