diff options
author | Stepan Moskovchenko <stepanm@codeaurora.org> | 2010-11-15 21:19:35 -0500 |
---|---|---|
committer | Daniel Walker <dwalker@codeaurora.org> | 2010-11-30 19:05:05 -0500 |
commit | 08bd6839783319085ee0db4c888534e626225774 (patch) | |
tree | 74f0374f4905a45bad209868fac45adb9ed333a2 /arch/arm/mach-msm | |
parent | 0ab84745ef65043a616b36b26bec58e1cb62a742 (diff) |
msm: iommu: Definitions for extended memory attributes
Add the register field definitions and memory attribute
definitions that will be needed to support IOMMU
transactions with cache-coherent memory access.
Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Signed-off-by: Daniel Walker <dwalker@codeaurora.org>
Diffstat (limited to 'arch/arm/mach-msm')
-rw-r--r-- | arch/arm/mach-msm/include/mach/iommu.h | 13 | ||||
-rw-r--r-- | arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h | 22 |
2 files changed, 34 insertions, 1 deletions
diff --git a/arch/arm/mach-msm/include/mach/iommu.h b/arch/arm/mach-msm/include/mach/iommu.h index 17fc79fc8bc2..296c0f10f230 100644 --- a/arch/arm/mach-msm/include/mach/iommu.h +++ b/arch/arm/mach-msm/include/mach/iommu.h | |||
@@ -20,6 +20,19 @@ | |||
20 | 20 | ||
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | 22 | ||
23 | /* Sharability attributes of MSM IOMMU mappings */ | ||
24 | #define MSM_IOMMU_ATTR_NON_SH 0x0 | ||
25 | #define MSM_IOMMU_ATTR_SH 0x4 | ||
26 | |||
27 | /* Cacheability attributes of MSM IOMMU mappings */ | ||
28 | #define MSM_IOMMU_ATTR_NONCACHED 0x0 | ||
29 | #define MSM_IOMMU_ATTR_CACHED_WB_WA 0x1 | ||
30 | #define MSM_IOMMU_ATTR_CACHED_WB_NWA 0x2 | ||
31 | #define MSM_IOMMU_ATTR_CACHED_WT 0x3 | ||
32 | |||
33 | /* Mask for the cache policy attribute */ | ||
34 | #define MSM_IOMMU_CP_MASK 0x03 | ||
35 | |||
23 | /* Maximum number of Machine IDs that we are allowing to be mapped to the same | 36 | /* Maximum number of Machine IDs that we are allowing to be mapped to the same |
24 | * context bank. The number of MIDs mapped to the same CB does not affect | 37 | * context bank. The number of MIDs mapped to the same CB does not affect |
25 | * performance, but there is a practical limit on how many distinct MIDs may | 38 | * performance, but there is a practical limit on how many distinct MIDs may |
diff --git a/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h b/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h index f9386d3a2f77..c2c3da9444f4 100644 --- a/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h +++ b/arch/arm/mach-msm/include/mach/iommu_hw-8xxx.h | |||
@@ -54,6 +54,7 @@ do { \ | |||
54 | 54 | ||
55 | #define NUM_FL_PTE 4096 | 55 | #define NUM_FL_PTE 4096 |
56 | #define NUM_SL_PTE 256 | 56 | #define NUM_SL_PTE 256 |
57 | #define NUM_TEX_CLASS 8 | ||
57 | 58 | ||
58 | /* First-level page table bits */ | 59 | /* First-level page table bits */ |
59 | #define FL_BASE_MASK 0xFFFFFC00 | 60 | #define FL_BASE_MASK 0xFFFFFC00 |
@@ -63,6 +64,9 @@ do { \ | |||
63 | #define FL_AP_WRITE (1 << 10) | 64 | #define FL_AP_WRITE (1 << 10) |
64 | #define FL_AP_READ (1 << 11) | 65 | #define FL_AP_READ (1 << 11) |
65 | #define FL_SHARED (1 << 16) | 66 | #define FL_SHARED (1 << 16) |
67 | #define FL_BUFFERABLE (1 << 2) | ||
68 | #define FL_CACHEABLE (1 << 3) | ||
69 | #define FL_TEX0 (1 << 12) | ||
66 | #define FL_OFFSET(va) (((va) & 0xFFF00000) >> 20) | 70 | #define FL_OFFSET(va) (((va) & 0xFFF00000) >> 20) |
67 | 71 | ||
68 | /* Second-level page table bits */ | 72 | /* Second-level page table bits */ |
@@ -73,8 +77,20 @@ do { \ | |||
73 | #define SL_AP0 (1 << 4) | 77 | #define SL_AP0 (1 << 4) |
74 | #define SL_AP1 (2 << 4) | 78 | #define SL_AP1 (2 << 4) |
75 | #define SL_SHARED (1 << 10) | 79 | #define SL_SHARED (1 << 10) |
80 | #define SL_BUFFERABLE (1 << 2) | ||
81 | #define SL_CACHEABLE (1 << 3) | ||
82 | #define SL_TEX0 (1 << 6) | ||
76 | #define SL_OFFSET(va) (((va) & 0xFF000) >> 12) | 83 | #define SL_OFFSET(va) (((va) & 0xFF000) >> 12) |
77 | 84 | ||
85 | /* Memory type and cache policy attributes */ | ||
86 | #define MT_SO 0 | ||
87 | #define MT_DEV 1 | ||
88 | #define MT_NORMAL 2 | ||
89 | #define CP_NONCACHED 0 | ||
90 | #define CP_WB_WA 1 | ||
91 | #define CP_WT 2 | ||
92 | #define CP_WB_NWA 3 | ||
93 | |||
78 | /* Global register setters / getters */ | 94 | /* Global register setters / getters */ |
79 | #define SET_M2VCBR_N(b, N, v) SET_GLOBAL_REG_N(M2VCBR_N, N, (b), (v)) | 95 | #define SET_M2VCBR_N(b, N, v) SET_GLOBAL_REG_N(M2VCBR_N, N, (b), (v)) |
80 | #define SET_CBACR_N(b, N, v) SET_GLOBAL_REG_N(CBACR_N, N, (b), (v)) | 96 | #define SET_CBACR_N(b, N, v) SET_GLOBAL_REG_N(CBACR_N, N, (b), (v)) |
@@ -706,7 +722,9 @@ do { \ | |||
706 | #define GET_OCPC5(b, c) GET_CONTEXT_FIELD(b, c, NMRR, OCPC5) | 722 | #define GET_OCPC5(b, c) GET_CONTEXT_FIELD(b, c, NMRR, OCPC5) |
707 | #define GET_OCPC6(b, c) GET_CONTEXT_FIELD(b, c, NMRR, OCPC6) | 723 | #define GET_OCPC6(b, c) GET_CONTEXT_FIELD(b, c, NMRR, OCPC6) |
708 | #define GET_OCPC7(b, c) GET_CONTEXT_FIELD(b, c, NMRR, OCPC7) | 724 | #define GET_OCPC7(b, c) GET_CONTEXT_FIELD(b, c, NMRR, OCPC7) |
709 | 725 | #define NMRR_ICP(nmrr, n) (((nmrr) & (3 << ((n) * 2))) >> ((n) * 2)) | |
726 | #define NMRR_OCP(nmrr, n) (((nmrr) & (3 << ((n) * 2 + 16))) >> \ | ||
727 | ((n) * 2 + 16)) | ||
710 | 728 | ||
711 | /* PAR */ | 729 | /* PAR */ |
712 | #define GET_FAULT(b, c) GET_CONTEXT_FIELD(b, c, PAR, FAULT) | 730 | #define GET_FAULT(b, c) GET_CONTEXT_FIELD(b, c, PAR, FAULT) |
@@ -750,6 +768,8 @@ do { \ | |||
750 | #define GET_NOS5(b, c) GET_CONTEXT_FIELD(b, c, PRRR, NOS5) | 768 | #define GET_NOS5(b, c) GET_CONTEXT_FIELD(b, c, PRRR, NOS5) |
751 | #define GET_NOS6(b, c) GET_CONTEXT_FIELD(b, c, PRRR, NOS6) | 769 | #define GET_NOS6(b, c) GET_CONTEXT_FIELD(b, c, PRRR, NOS6) |
752 | #define GET_NOS7(b, c) GET_CONTEXT_FIELD(b, c, PRRR, NOS7) | 770 | #define GET_NOS7(b, c) GET_CONTEXT_FIELD(b, c, PRRR, NOS7) |
771 | #define PRRR_NOS(prrr, n) ((prrr) & (1 << ((n) + 24)) ? 1 : 0) | ||
772 | #define PRRR_MT(prrr, n) ((((prrr) & (3 << ((n) * 2))) >> ((n) * 2))) | ||
753 | 773 | ||
754 | 774 | ||
755 | /* RESUME */ | 775 | /* RESUME */ |