summaryrefslogtreecommitdiff
path: root/drivers/iommu
diff options
context:
space:
mode:
authorVarun Sethi <Varun.Sethi@freescale.com>2014-03-09 18:33:16 (GMT)
committerJose Rivera <German.Rivera@freescale.com>2014-03-18 18:38:46 (GMT)
commit5231ff739a8628bb8301aa9502b1d26ec6c19f7e (patch)
treee9eba14f74c91a5dec11b0ad8904448a8d929506 /drivers/iommu
parent5a4763edff47f6c1b5547b0e0c66cd529cee9160 (diff)
downloadlinux-fsl-qoriq-5231ff739a8628bb8301aa9502b1d26ec6c19f7e.tar.xz
iommu/fsl: Enable OMT cache, before invalidating PAACT and SPAACT cache.
Enable OMT cache, before invalidating PAACT and SPAACT cache. This is a PAMU hardware errata work around. Signed-off-by: Varun Sethi <Varun.Sethi@freescale.com> Change-Id: Iecf8dfcbf0ccc535dff4825a046b2badc660ec8b Reviewed-on: http://git.am.freescale.net:8181/9619 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Stuart Yoder <stuart.yoder@freescale.com> Reviewed-by: Jose Rivera <German.Rivera@freescale.com>
Diffstat (limited to 'drivers/iommu')
-rw-r--r--drivers/iommu/fsl_pamu.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/iommu/fsl_pamu.c b/drivers/iommu/fsl_pamu.c
index ecf260c..e7778c6 100644
--- a/drivers/iommu/fsl_pamu.c
+++ b/drivers/iommu/fsl_pamu.c
@@ -814,6 +814,16 @@ int setup_one_pamu(unsigned long pamu_reg_base, unsigned long pamu_reg_size,
pamu_regs = (struct pamu_mmap_regs *)
(pamu_reg_base + PAMU_MMAP_REGS_BASE);
+ /*
+ * As per PAMU errata A-005982, writing the PAACT and SPAACT
+ * base address registers wouldn't invalidate the corresponding
+ * caches if the OMT cache is disabled. The workaround is to
+ * enable the OMT cache before setting the base registers.
+ * This can be done without actually enabling PAMU.
+ */
+
+ out_be32(pc, PAMU_PC_OCE);
+
/* set up pointers to corenet control blocks */
out_be32(&pamu_regs->ppbah, upper_32_bits(ppaact_phys));