summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomasz Lis <tomasz.lis@intel.com>2019-01-23 16:06:00 -0800
committerLucas De Marchi <lucas.demarchi@intel.com>2019-01-24 19:34:34 -0800
commit66f996052f955fe338c7cd6ca2099cfdf396b2bf (patch)
tree7a354c5943586c830f58ce60a9148ba7cc4f3d43
parentd7a43c3ba607207bc51d859e3bd450047519a06f (diff)
downloadlwn-66f996052f955fe338c7cd6ca2099cfdf396b2bf.tar.gz
lwn-66f996052f955fe338c7cd6ca2099cfdf396b2bf.zip
drm/i915/skl: Rework MOCS tables to keep common part in a define
The MOCS tables are going to be very similar across platforms. To reduce the amount of copied code, this patch rips the common part and puts it into a definition valid for all gen9 platforms. v2: Made defines for or-ing flags. Renamed macros from MOCS_TABLE to MOCS_ENTRIES. (Joonas) v3 (Lucas): - Fix indentation - Rebase on rework done by additional patch - Remove define for or-ing flags as it made the table more complex by requiring zeroed values to be passed - Do not embed comma in the macro, so to treat that just as another item and please source code formatting tools Signed-off-by: Tomasz Lis <tomasz.lis@intel.com> Suggested-by: Lucas De Marchi <lucas.demarchi@intel.com> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Link: https://patchwork.freedesktop.org/patch/msgid/20190124000604.18861-4-lucas.demarchi@intel.com
-rw-r--r--drivers/gpu/drm/i915/intel_mocs.c57
1 files changed, 25 insertions, 32 deletions
diff --git a/drivers/gpu/drm/i915/intel_mocs.c b/drivers/gpu/drm/i915/intel_mocs.c
index 4ea80bb7dcc8..c7a2a8d81d90 100644
--- a/drivers/gpu/drm/i915/intel_mocs.c
+++ b/drivers/gpu/drm/i915/intel_mocs.c
@@ -93,46 +93,39 @@ struct drm_i915_mocs_table {
* may only be updated incrementally by adding entries at the
* end.
*/
+
+#define GEN9_MOCS_ENTRIES \
+ [I915_MOCS_UNCACHED] = { \
+ /* 0x00000009 */ \
+ .control_value = LE_1_UC | LE_TC_2_LLC_ELLC, \
+ /* 0x0010 */ \
+ .l3cc_value = L3_1_UC, \
+ }, \
+ [I915_MOCS_PTE] = { \
+ /* 0x00000038 */ \
+ .control_value = LE_0_PAGETABLE | LE_TC_2_LLC_ELLC | LE_LRUM(3), \
+ /* 0x0030 */ \
+ .l3cc_value = L3_3_WB, \
+ }
+
static const struct drm_i915_mocs_entry skylake_mocs_table[] = {
- [I915_MOCS_UNCACHED] = {
- /* 0x00000009 */
- .control_value = LE_1_UC | LE_TC_2_LLC_ELLC,
- /* 0x0010 */
- .l3cc_value = L3_1_UC,
- },
- [I915_MOCS_PTE] = {
- /* 0x00000038 */
- .control_value = LE_0_PAGETABLE | LE_TC_2_LLC_ELLC | LE_LRUM(3),
- /* 0x0030 */
- .l3cc_value = L3_3_WB,
- },
+ GEN9_MOCS_ENTRIES,
[I915_MOCS_CACHED] = {
- /* 0x0000003b */
- .control_value = LE_3_WB | LE_TC_2_LLC_ELLC | LE_LRUM(3),
- /* 0x0030 */
- .l3cc_value = L3_3_WB,
+ /* 0x0000003b */
+ .control_value = LE_3_WB | LE_TC_2_LLC_ELLC | LE_LRUM(3),
+ /* 0x0030 */
+ .l3cc_value = L3_3_WB,
},
};
/* NOTE: the LE_TGT_CACHE is not used on Broxton */
static const struct drm_i915_mocs_entry broxton_mocs_table[] = {
- [I915_MOCS_UNCACHED] = {
- /* 0x00000009 */
- .control_value = LE_1_UC | LE_TC_2_LLC_ELLC,
- /* 0x0010 */
- .l3cc_value = L3_1_UC,
- },
- [I915_MOCS_PTE] = {
- /* 0x00000038 */
- .control_value = LE_0_PAGETABLE | LE_TC_2_LLC_ELLC | LE_LRUM(3),
- /* 0x0030 */
- .l3cc_value = L3_3_WB,
- },
+ GEN9_MOCS_ENTRIES,
[I915_MOCS_CACHED] = {
- /* 0x00000039 */
- .control_value = LE_1_UC | LE_TC_2_LLC_ELLC | LE_LRUM(3),
- /* 0x0030 */
- .l3cc_value = L3_3_WB,
+ /* 0x00000039 */
+ .control_value = LE_1_UC | LE_TC_2_LLC_ELLC | LE_LRUM(3),
+ /* 0x0030 */
+ .l3cc_value = L3_3_WB,
},
};