Skip to content

Commit

Permalink
drm/i915: split the dpll clock compute out from display vtable.
Browse files Browse the repository at this point in the history
this single function might be possible to merge later, but
for now it's simple to just split it out.

Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ba570aa10b694b2e8640e0c58430fd0053c306b7.1632869550.git.jani.nikula@intel.com
  • Loading branch information
Dave Airlie authored and Jani Nikula committed Sep 29, 2021
1 parent 5c8c179 commit 903f380
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 12 deletions.
6 changes: 3 additions & 3 deletions drivers/gpu/drm/i915/display/intel_display.c
Original file line number Diff line number Diff line change
Expand Up @@ -6833,10 +6833,10 @@ static int intel_crtc_atomic_check(struct intel_atomic_state *state,
crtc_state->update_wm_post = true;

if (mode_changed && crtc_state->hw.enable &&
dev_priv->display.crtc_compute_clock &&
dev_priv->dpll_funcs.crtc_compute_clock &&
!crtc_state->bigjoiner_slave &&
!drm_WARN_ON(&dev_priv->drm, crtc_state->shared_dpll)) {
ret = dev_priv->display.crtc_compute_clock(crtc_state);
ret = dev_priv->dpll_funcs.crtc_compute_clock(crtc_state);
if (ret)
return ret;
}
Expand Down Expand Up @@ -8863,7 +8863,7 @@ static void intel_modeset_clear_plls(struct intel_atomic_state *state)
struct intel_crtc *crtc;
int i;

if (!dev_priv->display.crtc_compute_clock)
if (!dev_priv->dpll_funcs.crtc_compute_clock)
return;

for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
Expand Down
16 changes: 8 additions & 8 deletions drivers/gpu/drm/i915/display/intel_dpll.c
Original file line number Diff line number Diff line change
Expand Up @@ -1369,21 +1369,21 @@ void
intel_dpll_init_clock_hook(struct drm_i915_private *dev_priv)
{
if (DISPLAY_VER(dev_priv) >= 9 || HAS_DDI(dev_priv))
dev_priv->display.crtc_compute_clock = hsw_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = hsw_crtc_compute_clock;
else if (HAS_PCH_SPLIT(dev_priv))
dev_priv->display.crtc_compute_clock = ilk_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = ilk_crtc_compute_clock;
else if (IS_CHERRYVIEW(dev_priv))
dev_priv->display.crtc_compute_clock = chv_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = chv_crtc_compute_clock;
else if (IS_VALLEYVIEW(dev_priv))
dev_priv->display.crtc_compute_clock = vlv_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = vlv_crtc_compute_clock;
else if (IS_G4X(dev_priv))
dev_priv->display.crtc_compute_clock = g4x_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = g4x_crtc_compute_clock;
else if (IS_PINEVIEW(dev_priv))
dev_priv->display.crtc_compute_clock = pnv_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = pnv_crtc_compute_clock;
else if (DISPLAY_VER(dev_priv) != 2)
dev_priv->display.crtc_compute_clock = i9xx_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = i9xx_crtc_compute_clock;
else
dev_priv->display.crtc_compute_clock = i8xx_crtc_compute_clock;
dev_priv->dpll_funcs.crtc_compute_clock = i8xx_crtc_compute_clock;
}

static bool i9xx_has_pps(struct drm_i915_private *dev_priv)
Expand Down
8 changes: 7 additions & 1 deletion drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -393,14 +393,17 @@ struct intel_fdi_funcs {
const struct intel_crtc_state *crtc_state);
};

struct intel_dpll_funcs {
int (*crtc_compute_clock)(struct intel_crtc_state *crtc_state);
};

struct drm_i915_display_funcs {
/* Returns the active state of the crtc, and if the crtc is active,
* fills out the pipe-config with the hw state. */
bool (*get_pipe_config)(struct intel_crtc *,
struct intel_crtc_state *);
void (*get_initial_plane_config)(struct intel_crtc *,
struct intel_initial_plane_config *);
int (*crtc_compute_clock)(struct intel_crtc_state *crtc_state);
void (*crtc_enable)(struct intel_atomic_state *state,
struct intel_crtc *crtc);
void (*crtc_disable)(struct intel_atomic_state *state,
Expand Down Expand Up @@ -990,6 +993,9 @@ struct drm_i915_private {
/* fdi display functions */
struct intel_fdi_funcs fdi_funcs;

/* display pll funcs */
struct intel_dpll_funcs dpll_funcs;

/* Display functions */
struct drm_i915_display_funcs display;

Expand Down

0 comments on commit 903f380

Please sign in to comment.