summaryrefslogtreecommitdiff
path: root/drivers/platform
diff options
context:
space:
mode:
authorYan He <yanhe@codeaurora.org>2015-05-29 13:43:31 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-22 11:16:07 -0700
commita0ad90f548fa9e562053d05b6875fe425eb1869d (patch)
treef8718d6ccddb3bbe31a0b60d7e35d256fc1777ed /drivers/platform
parent3e255410ad3d56e1365d82dd14ae965ddad80c98 (diff)
msm: ep_pcie: update read-only registers for compliance testing
Update some read-only PCIe registers with non-arbitrary values which are required by PCIe compliance testing. Change-Id: I10fd448f38d874ba582d1a46a98a76d29e0d9cb4 Signed-off-by: Yan He <yanhe@codeaurora.org>
Diffstat (limited to 'drivers/platform')
-rw-r--r--drivers/platform/msm/ep_pcie/ep_pcie_com.h1
-rw-r--r--drivers/platform/msm/ep_pcie/ep_pcie_core.c9
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_com.h b/drivers/platform/msm/ep_pcie/ep_pcie_com.h
index 91566446f401..6c4d69a2d459 100644
--- a/drivers/platform/msm/ep_pcie/ep_pcie_com.h
+++ b/drivers/platform/msm/ep_pcie/ep_pcie_com.h
@@ -53,6 +53,7 @@
#define PCIE20_CLASS_CODE_REVISION_ID 0x08
#define PCIE20_BIST_HDR_TYPE 0x0C
#define PCIE20_BAR0 0x10
+#define PCIE20_SUBSYSTEM 0x2c
#define PCIE20_CAP_ID_NXT_PTR 0x40
#define PCIE20_CON_STATUS 0x44
#define PCIE20_MSI_CAP_ID_NEXT_CTRL 0x50
diff --git a/drivers/platform/msm/ep_pcie/ep_pcie_core.c b/drivers/platform/msm/ep_pcie/ep_pcie_core.c
index ccca861a8180..2a646c166d7f 100644
--- a/drivers/platform/msm/ep_pcie/ep_pcie_core.c
+++ b/drivers/platform/msm/ep_pcie/ep_pcie_core.c
@@ -439,15 +439,17 @@ static void ep_pcie_bar_init(struct ep_pcie_dev_t *dev)
/* Configure BAR mask via CS2 */
ep_pcie_write_mask(dev->elbi + PCIE20_ELBI_CS2_ENABLE, 0, BIT(0));
ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0, mask);
+ ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x4, 0);
ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x8, mask);
- ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x10, mask);
+ ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0xc, 0);
+ ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x10, 0);
+ ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x14, 0);
ep_pcie_write_mask(dev->elbi + PCIE20_ELBI_CS2_ENABLE, BIT(0), 0);
/* Configure BAR properties via CS */
ep_pcie_write_mask(dev->dm_core + PCIE20_MISC_CONTROL_1, 0, BIT(0));
ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0, properties);
ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x8, properties);
- ep_pcie_write_reg(dev->dm_core, PCIE20_BAR0 + 0x10, properties);
ep_pcie_write_mask(dev->dm_core + PCIE20_MISC_CONTROL_1, BIT(0), 0);
}
@@ -508,6 +510,9 @@ static void ep_pcie_core_init(struct ep_pcie_dev_t *dev)
/* Set header type */
ep_pcie_write_reg(dev->dm_core, PCIE20_BIST_HDR_TYPE, 0x10);
+ /* Set Subsystem ID and Subsystem Vendor ID */
+ ep_pcie_write_reg(dev->dm_core, PCIE20_SUBSYSTEM, 0xa01f17cb);
+
/* Set the PMC Register - to support PME in D0, D3hot and D3cold */
ep_pcie_write_mask(dev->dm_core + PCIE20_CAP_ID_NXT_PTR, 0,
BIT(31)|BIT(30)|BIT(27));