diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2020-01-21 15:03:53 +0100 |
---|---|---|
committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2020-01-31 16:00:44 +0100 |
commit | 28a30b45f5e9e5a7e51fb93c06ae50a01d89b005 (patch) | |
tree | 814deacc2d6807e2f91b4a10b1f7975e363ef582 /drivers/gpu/drm/i915/i915_drv.h | |
parent | drm/i915: Introduce intel_calc_active_pipes() (diff) | |
download | linux-28a30b45f5e9e5a7e51fb93c06ae50a01d89b005.tar.xz linux-28a30b45f5e9e5a7e51fb93c06ae50a01d89b005.zip |
drm/i915: Convert cdclk to global state
Let's convert cdclk_state to be a proper global state. That allows
us to use the regular atomic old vs. new state accessor, hopefully
making the code less confusing.
We do have to deal with a few more error cases in case the cdclk
state duplication fails. But so be it.
v2: Fix new plane min_cdclk vs. old crtc min_cdclk check
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200121140353.25997-1-ville.syrjala@linux.intel.com
Reviewed-by: Imre Deak <imre.deak@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_drv.h')
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 2d4c0b5a2b8e..e56f289d2975 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -65,7 +65,6 @@ #include "i915_utils.h" #include "display/intel_bios.h" -#include "display/intel_cdclk.h" #include "display/intel_display.h" #include "display/intel_display_power.h" #include "display/intel_dpll_mgr.h" @@ -256,7 +255,8 @@ struct intel_connector; struct intel_encoder; struct intel_atomic_state; struct intel_cdclk_config; -struct intel_crtc_state; +struct intel_cdclk_state; +struct intel_cdclk_vals; struct intel_initial_plane_config; struct intel_crtc; struct intel_limit; @@ -280,7 +280,7 @@ struct drm_i915_display_funcs { struct intel_crtc *crtc); int (*compute_global_watermarks)(struct intel_atomic_state *state); void (*update_wm)(struct intel_crtc *crtc); - int (*modeset_calc_cdclk)(struct intel_atomic_state *state); + int (*modeset_calc_cdclk)(struct intel_cdclk_state *state); u8 (*calc_voltage_level)(int cdclk); /* Returns the active state of the crtc, and if the crtc is active, * fills out the pipe-config with the hw state. */ @@ -889,33 +889,6 @@ struct i915_selftest_stash { atomic_t counter; }; -struct intel_cdclk_state { - /* - * Logical configuration of cdclk (used for all scaling, - * watermark, etc. calculations and checks). This is - * computed as if all enabled crtcs were active. - */ - struct intel_cdclk_config logical; - - /* - * Actual configuration of cdclk, can be different from the - * logical configuration only when all crtc's are DPMS off. - */ - struct intel_cdclk_config actual; - - /* minimum acceptable cdclk for each pipe */ - int min_cdclk[I915_MAX_PIPES]; - /* minimum acceptable voltage level for each pipe */ - u8 min_voltage_level[I915_MAX_PIPES]; - - /* pipe to which cd2x update is synchronized */ - enum pipe pipe; - - /* forced minimum cdclk for glk+ audio w/a */ - int force_min_cdclk; - bool force_min_cdclk_changed; -}; - struct drm_i915_private { struct drm_device drm; @@ -1032,18 +1005,14 @@ struct drm_i915_private { unsigned int fdi_pll_freq; unsigned int czclk_freq; - /* - * For reading holding any crtc lock is sufficient, - * for writing must hold all of them. - */ - struct intel_cdclk_state cdclk_state; - struct { /* The current hardware cdclk configuration */ struct intel_cdclk_config hw; /* cdclk, divider, and ratio table from bspec */ const struct intel_cdclk_vals *table; + + struct intel_global_obj obj; } cdclk; /** @@ -1102,8 +1071,8 @@ struct drm_i915_private { struct list_head global_obj_list; /* - * For reading active_pipes, cdclk_state holding any crtc - * lock is sufficient, for writing must hold all of them. + * For reading active_pipes holding any crtc lock is + * sufficient, for writing must hold all of them. */ u8 active_pipes; |