Commit 04155815 authored by Ville Syrjälä's avatar Ville Syrjälä

drm/i915: Move dbuf details to INTEL_INFO->display

DBUF is a display thing, so move it into the display
portion of the device info.
Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220623130900.26078-2-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 3cdcdc34
...@@ -193,7 +193,7 @@ enum plane_id { ...@@ -193,7 +193,7 @@ enum plane_id {
#define for_each_dbuf_slice(__dev_priv, __slice) \ #define for_each_dbuf_slice(__dev_priv, __slice) \
for ((__slice) = DBUF_S1; (__slice) < I915_MAX_DBUF_SLICES; (__slice)++) \ for ((__slice) = DBUF_S1; (__slice) < I915_MAX_DBUF_SLICES; (__slice)++) \
for_each_if(INTEL_INFO(__dev_priv)->dbuf.slice_mask & BIT(__slice)) for_each_if(INTEL_INFO(__dev_priv)->display.dbuf.slice_mask & BIT(__slice))
#define for_each_dbuf_slice_in_mask(__dev_priv, __slice, __mask) \ #define for_each_dbuf_slice_in_mask(__dev_priv, __slice, __mask) \
for_each_dbuf_slice((__dev_priv), (__slice)) \ for_each_dbuf_slice((__dev_priv), (__slice)) \
......
...@@ -1038,7 +1038,7 @@ void gen9_dbuf_slices_update(struct drm_i915_private *dev_priv, ...@@ -1038,7 +1038,7 @@ void gen9_dbuf_slices_update(struct drm_i915_private *dev_priv,
u8 req_slices) u8 req_slices)
{ {
struct i915_power_domains *power_domains = &dev_priv->power_domains; struct i915_power_domains *power_domains = &dev_priv->power_domains;
u8 slice_mask = INTEL_INFO(dev_priv)->dbuf.slice_mask; u8 slice_mask = INTEL_INFO(dev_priv)->display.dbuf.slice_mask;
enum dbuf_slice slice; enum dbuf_slice slice;
drm_WARN(&dev_priv->drm, req_slices & ~slice_mask, drm_WARN(&dev_priv->drm, req_slices & ~slice_mask,
......
...@@ -649,8 +649,8 @@ static const struct intel_device_info chv_info = { ...@@ -649,8 +649,8 @@ static const struct intel_device_info chv_info = {
.display.has_ipc = 1, \ .display.has_ipc = 1, \
.display.has_psr = 1, \ .display.has_psr = 1, \
.display.has_psr_hw_tracking = 1, \ .display.has_psr_hw_tracking = 1, \
.dbuf.size = 896 - 4, /* 4 blocks for bypass path allocation */ \ .display.dbuf.size = 896 - 4, /* 4 blocks for bypass path allocation */ \
.dbuf.slice_mask = BIT(DBUF_S1) .display.dbuf.slice_mask = BIT(DBUF_S1)
#define SKL_PLATFORM \ #define SKL_PLATFORM \
GEN9_FEATURES, \ GEN9_FEATURES, \
...@@ -685,7 +685,7 @@ static const struct intel_device_info skl_gt4_info = { ...@@ -685,7 +685,7 @@ static const struct intel_device_info skl_gt4_info = {
#define GEN9_LP_FEATURES \ #define GEN9_LP_FEATURES \
GEN(9), \ GEN(9), \
.is_lp = 1, \ .is_lp = 1, \
.dbuf.slice_mask = BIT(DBUF_S1), \ .display.dbuf.slice_mask = BIT(DBUF_S1), \
.display.has_hotplug = 1, \ .display.has_hotplug = 1, \
.platform_engine_mask = BIT(RCS0) | BIT(VCS0) | BIT(BCS0) | BIT(VECS0), \ .platform_engine_mask = BIT(RCS0) | BIT(VCS0) | BIT(BCS0) | BIT(VECS0), \
.display.pipe_mask = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C), \ .display.pipe_mask = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C), \
...@@ -722,14 +722,14 @@ static const struct intel_device_info skl_gt4_info = { ...@@ -722,14 +722,14 @@ static const struct intel_device_info skl_gt4_info = {
static const struct intel_device_info bxt_info = { static const struct intel_device_info bxt_info = {
GEN9_LP_FEATURES, GEN9_LP_FEATURES,
PLATFORM(INTEL_BROXTON), PLATFORM(INTEL_BROXTON),
.dbuf.size = 512 - 4, /* 4 blocks for bypass path allocation */ .display.dbuf.size = 512 - 4, /* 4 blocks for bypass path allocation */
}; };
static const struct intel_device_info glk_info = { static const struct intel_device_info glk_info = {
GEN9_LP_FEATURES, GEN9_LP_FEATURES,
PLATFORM(INTEL_GEMINILAKE), PLATFORM(INTEL_GEMINILAKE),
.display.ver = 10, .display.ver = 10,
.dbuf.size = 1024 - 4, /* 4 blocks for bypass path allocation */ .display.dbuf.size = 1024 - 4, /* 4 blocks for bypass path allocation */
GLK_COLORS, GLK_COLORS,
}; };
...@@ -819,8 +819,8 @@ static const struct intel_device_info cml_gt2_info = { ...@@ -819,8 +819,8 @@ static const struct intel_device_info cml_gt2_info = {
}, \ }, \
GEN(11), \ GEN(11), \
ICL_COLORS, \ ICL_COLORS, \
.dbuf.size = 2048, \ .display.dbuf.size = 2048, \
.dbuf.slice_mask = BIT(DBUF_S1) | BIT(DBUF_S2), \ .display.dbuf.slice_mask = BIT(DBUF_S1) | BIT(DBUF_S2), \
.display.has_dsc = 1, \ .display.has_dsc = 1, \
.has_coherent_ggtt = false, \ .has_coherent_ggtt = false, \
.has_logical_ring_elsq = 1 .has_logical_ring_elsq = 1
...@@ -942,8 +942,8 @@ static const struct intel_device_info adl_s_info = { ...@@ -942,8 +942,8 @@ static const struct intel_device_info adl_s_info = {
.degamma_lut_tests = DRM_COLOR_LUT_NON_DECREASING | \ .degamma_lut_tests = DRM_COLOR_LUT_NON_DECREASING | \
DRM_COLOR_LUT_EQUAL_CHANNELS, \ DRM_COLOR_LUT_EQUAL_CHANNELS, \
}, \ }, \
.dbuf.size = 4096, \ .display.dbuf.size = 4096, \
.dbuf.slice_mask = BIT(DBUF_S1) | BIT(DBUF_S2) | BIT(DBUF_S3) | \ .display.dbuf.slice_mask = BIT(DBUF_S1) | BIT(DBUF_S2) | BIT(DBUF_S3) | \
BIT(DBUF_S4), \ BIT(DBUF_S4), \
.display.has_ddi = 1, \ .display.has_ddi = 1, \
.display.has_dmc = 1, \ .display.has_dmc = 1, \
......
...@@ -225,15 +225,16 @@ struct intel_device_info { ...@@ -225,15 +225,16 @@ struct intel_device_info {
u8 fbc_mask; u8 fbc_mask;
u8 abox_mask; u8 abox_mask;
struct {
u16 size; /* in blocks */
u8 slice_mask;
} dbuf;
#define DEFINE_FLAG(name) u8 name:1 #define DEFINE_FLAG(name) u8 name:1
DEV_INFO_DISPLAY_FOR_EACH_FLAG(DEFINE_FLAG); DEV_INFO_DISPLAY_FOR_EACH_FLAG(DEFINE_FLAG);
#undef DEFINE_FLAG #undef DEFINE_FLAG
} display; } display;
struct {
u16 size; /* in blocks */
u8 slice_mask;
} dbuf;
/* Register offsets for the various display pipes and transcoders */ /* Register offsets for the various display pipes and transcoders */
int pipe_offsets[I915_MAX_TRANSCODERS]; int pipe_offsets[I915_MAX_TRANSCODERS];
......
...@@ -4100,8 +4100,8 @@ static u16 skl_ddb_entry_init(struct skl_ddb_entry *entry, ...@@ -4100,8 +4100,8 @@ static u16 skl_ddb_entry_init(struct skl_ddb_entry *entry,
static int intel_dbuf_slice_size(struct drm_i915_private *dev_priv) static int intel_dbuf_slice_size(struct drm_i915_private *dev_priv)
{ {
return INTEL_INFO(dev_priv)->dbuf.size / return INTEL_INFO(dev_priv)->display.dbuf.size /
hweight8(INTEL_INFO(dev_priv)->dbuf.slice_mask); hweight8(INTEL_INFO(dev_priv)->display.dbuf.slice_mask);
} }
static void static void
...@@ -4120,7 +4120,7 @@ skl_ddb_entry_for_slices(struct drm_i915_private *dev_priv, u8 slice_mask, ...@@ -4120,7 +4120,7 @@ skl_ddb_entry_for_slices(struct drm_i915_private *dev_priv, u8 slice_mask,
ddb->end = fls(slice_mask) * slice_size; ddb->end = fls(slice_mask) * slice_size;
WARN_ON(ddb->start >= ddb->end); WARN_ON(ddb->start >= ddb->end);
WARN_ON(ddb->end > INTEL_INFO(dev_priv)->dbuf.size); WARN_ON(ddb->end > INTEL_INFO(dev_priv)->display.dbuf.size);
} }
static unsigned int mbus_ddb_offset(struct drm_i915_private *i915, u8 slice_mask) static unsigned int mbus_ddb_offset(struct drm_i915_private *i915, u8 slice_mask)
...@@ -6095,7 +6095,7 @@ skl_compute_ddb(struct intel_atomic_state *state) ...@@ -6095,7 +6095,7 @@ skl_compute_ddb(struct intel_atomic_state *state)
"Enabled dbuf slices 0x%x -> 0x%x (total dbuf slices 0x%x), mbus joined? %s->%s\n", "Enabled dbuf slices 0x%x -> 0x%x (total dbuf slices 0x%x), mbus joined? %s->%s\n",
old_dbuf_state->enabled_slices, old_dbuf_state->enabled_slices,
new_dbuf_state->enabled_slices, new_dbuf_state->enabled_slices,
INTEL_INFO(dev_priv)->dbuf.slice_mask, INTEL_INFO(dev_priv)->display.dbuf.slice_mask,
str_yes_no(old_dbuf_state->joined_mbus), str_yes_no(old_dbuf_state->joined_mbus),
str_yes_no(new_dbuf_state->joined_mbus)); str_yes_no(new_dbuf_state->joined_mbus));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment