summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristine Gharzuzi <chrisg@marvell.com>2018-03-26 20:15:04 +0300
committerKostya Porotchkin <kostap@marvell.com>2018-03-28 10:03:28 +0300
commitd173258d9d8cfe2ff689f3d6cb27c62d4c9890c7 (patch)
tree5303648d7ae8864225f02a71a003ae55e2ad5c85
parente887e8f1cdcb6440f455c256e26d99a1e9c6449a (diff)
plat_pm: ap807: disable PM options for Armada-AP-807
Disabled CPUs early powerdown and powerup in Linux boot, for AP807 Change-Id: I69f935719772e0ba1619931557b94b63cea5fe58 Signed-off-by: Christine Gharzuzi <chrisg@marvell.com> Reviewed-on: http://vgitil04.il.marvell.com:8080/52588 Reviewed-by: Hanna Hawa <hannah@marvell.com> Tested-by: iSoC Platform CI <ykjenk@marvell.com>
-rw-r--r--plat/marvell/a8k/common/include/a8k_plat_def.h5
-rw-r--r--plat/marvell/a8k/common/plat_pm.c19
2 files changed, 24 insertions, 0 deletions
diff --git a/plat/marvell/a8k/common/include/a8k_plat_def.h b/plat/marvell/a8k/common/include/a8k_plat_def.h
index 34a1acd4..ce95d6c6 100644
--- a/plat/marvell/a8k/common/include/a8k_plat_def.h
+++ b/plat/marvell/a8k/common/include/a8k_plat_def.h
@@ -44,6 +44,11 @@
#define MVEBU_CSS_GWD_CTRL_IIDR2_REG (MVEBU_REGS_BASE + 0x610FCC)
#define GWD_IIDR2_REV_ID_OFFSET 12
#define GWD_IIDR2_REV_ID_MASK 0xF
+#define GWD_IIDR2_CHIP_ID_OFFSET 20
+#define GWD_IIDR2_CHIP_ID_MASK (0xFFF << GWD_IIDR2_CHIP_ID_OFFSET)
+
+#define CHIP_ID_AP806 0x806
+#define CHIP_ID_AP807 0x807
#if PALLADIUM
#define COUNTER_FREQUENCY 7000
diff --git a/plat/marvell/a8k/common/plat_pm.c b/plat/marvell/a8k/common/plat_pm.c
index 2b982334..2e4eab7e 100644
--- a/plat/marvell/a8k/common/plat_pm.c
+++ b/plat/marvell/a8k/common/plat_pm.c
@@ -123,6 +123,14 @@ static int plat_marvell_cpu_powerdown(int cpu_id)
{
uint32_t reg_val;
int exit_loop = REG_WR_VALIDATE_TIMEOUT;
+ unsigned int chip_rev_id;
+
+ chip_rev_id = mmio_read_32(MVEBU_CSS_GWD_CTRL_IIDR2_REG);
+ chip_rev_id = ((chip_rev_id & GWD_IIDR2_CHIP_ID_MASK) >> GWD_IIDR2_CHIP_ID_OFFSET);
+
+ /* TODO: support for ap807 needs to be added */
+ if (chip_rev_id == CHIP_ID_AP807)
+ return 0;
INFO("Powering down CPU%d\n", cpu_id);
@@ -226,6 +234,17 @@ static int plat_marvell_cpu_powerup(u_register_t mpidr)
uint32_t reg_val;
int cpu_id = MPIDR_CPU_GET(mpidr), cluster = MPIDR_CLUSTER_GET(mpidr);
int exit_loop = REG_WR_VALIDATE_TIMEOUT;
+ unsigned int chip_rev_id;
+
+ /* TODO: support for ap807 needs to be added */
+ chip_rev_id = mmio_read_32(MVEBU_CSS_GWD_CTRL_IIDR2_REG);
+ chip_rev_id = ((chip_rev_id & GWD_IIDR2_CHIP_ID_MASK) >> GWD_IIDR2_CHIP_ID_OFFSET);
+
+ /* Power up CPU (CPUs 1-3 are powered off at start of BLE) for AP806
+ * only.
+ */
+ if (chip_rev_id == CHIP_ID_AP807)
+ return 0;
/* calculate absolute CPU ID */
cpu_id = cluster * PLAT_MARVELL_CLUSTER_CORE_COUNT + cpu_id;