summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Wojtas <mw@semihalf.com>2017-05-06 00:58:05 +0200
committerKostya Porotchkin <kostap@marvell.com>2017-05-11 15:43:33 +0300
commit90f2a7016857cc4f2f94b23a4431263dc8212346 (patch)
tree107a4aecf0813fcddd3c2ee0a367522d927b1267
parent308adbec82334125a2c3ff1a808ffe9a1c9f0801 (diff)
fix: ap806: enable 48-bit virtual address
Issue found when enable 48-bit Virtual Address in kernel In ARMv8 the CPU can work with 48-bit virtual address, at this case for propagating TLB maintenance 44-bit of Physical address are needed. Marvell interconnect is configured to be 40-bit address by default, therefore AxAddr[43:40] are not propagated so the DVM is not working. Change-Id: I7b8a3ec7960697814079f2c932fd06962bfa4c75 Signed-off-by: Marcin Wojtas <mw@semihalf.com> Reviewed-on: http://vgitil04.il.marvell.com:8080/39185 Reviewed-by: Igal Liberman <igall@marvell.com> Tested-by: iSoC Platform CI <ykjenk@marvell.com> Reviewed-by: Hanna Hawa <hannah@marvell.com>
-rw-r--r--drivers/marvell/mochi/apn806_setup.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/marvell/mochi/apn806_setup.c b/drivers/marvell/mochi/apn806_setup.c
index 95dff189..03ba5872 100644
--- a/drivers/marvell/mochi/apn806_setup.c
+++ b/drivers/marvell/mochi/apn806_setup.c
@@ -52,6 +52,9 @@
#define CCU_LTC_CR (MVEBU_CCU_BASE + 0x300)
#define CCU_CLEAN_INV_WRITE_OFFSET 8
+#define DSS_CR0 (MVEBU_RFU_BASE + 0x100)
+#define DVM_48BIT_VA_ENABLE (1 << 21)
+
/* Secure MoChi incoming access */
#define SEC_MOCHI_IN_ACC_REG (MVEBU_RFU_BASE + 0x4738)
#define SEC_MOCHI_IN_ACC_IHB0_EN (1)
@@ -176,6 +179,12 @@ void apn806_axi_attr_init(void)
return;
}
+void dss_setup(void)
+{
+ /* Enable 48-bit VA */
+ mmio_setbits_32(DSS_CR0, DVM_48BIT_VA_ENABLE);
+}
+
void misc_soc_configurations(void)
{
uint32_t reg;
@@ -202,6 +211,9 @@ void apn806_init(void)
/* configure CCU windows */
init_ccu();
+ /* configure DSS */
+ dss_setup();
+
/* configure the SMMU */
setup_smmu();