]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/display: convert global state to struct intel_display
authorJani Nikula <jani.nikula@intel.com>
Tue, 31 Dec 2024 16:27:40 +0000 (18:27 +0200)
committerJani Nikula <jani.nikula@intel.com>
Tue, 7 Jan 2025 17:31:39 +0000 (19:31 +0200)
Going forward, struct intel_display is the main display device
structure. Convert intel_global_state.[ch] to it.

This allows us to make intel_pmdemand.c completely independent of
i915_drv.h.

Cc: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/2b5e743b285a86a59ee87085727847c758c8d552.1735662324.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_bw.c
drivers/gpu/drm/i915/display/intel_cdclk.c
drivers/gpu/drm/i915/display/intel_display_driver.c
drivers/gpu/drm/i915/display/intel_global_state.c
drivers/gpu/drm/i915/display/intel_global_state.h
drivers/gpu/drm/i915/display/intel_pmdemand.c
drivers/gpu/drm/i915/display/skl_watermark.c

index 08e8a67ca74cd64a0d9d05d2838c783bd40655e0..23edc81741dee8d49fa57fdb580ac48a816097a5 100644 (file)
@@ -1447,13 +1447,14 @@ static const struct intel_global_state_funcs intel_bw_funcs = {
 
 int intel_bw_init(struct drm_i915_private *i915)
 {
+       struct intel_display *display = &i915->display;
        struct intel_bw_state *state;
 
        state = kzalloc(sizeof(*state), GFP_KERNEL);
        if (!state)
                return -ENOMEM;
 
-       intel_atomic_global_obj_init(i915, &i915->display.bw.obj,
+       intel_atomic_global_obj_init(display, &display->bw.obj,
                                     &state->base, &intel_bw_funcs);
 
        /*
index 3506e576bf6b77d1a7657a5c88144ed1cce240ae..c7a603589412b6908c503d55b422a688d30ed618 100644 (file)
@@ -3217,14 +3217,13 @@ int intel_cdclk_state_set_joined_mbus(struct intel_atomic_state *state, bool joi
 
 int intel_cdclk_init(struct intel_display *display)
 {
-       struct drm_i915_private *dev_priv = to_i915(display->drm);
        struct intel_cdclk_state *cdclk_state;
 
        cdclk_state = kzalloc(sizeof(*cdclk_state), GFP_KERNEL);
        if (!cdclk_state)
                return -ENOMEM;
 
-       intel_atomic_global_obj_init(dev_priv, &display->cdclk.obj,
+       intel_atomic_global_obj_init(display, &display->cdclk.obj,
                                     &cdclk_state->base, &intel_cdclk_funcs);
 
        return 0;
index c4cfb0406fa2caf737742f33cae1a3358f5ffb9e..1aa0b298c278d402852199800c3efc7df384b93f 100644 (file)
@@ -163,9 +163,7 @@ static void intel_mode_config_init(struct intel_display *display)
 
 static void intel_mode_config_cleanup(struct intel_display *display)
 {
-       struct drm_i915_private *i915 = to_i915(display->drm);
-
-       intel_atomic_global_obj_cleanup(i915);
+       intel_atomic_global_obj_cleanup(display);
        drm_mode_config_cleanup(display->drm);
 }
 
index cbcd1e91b7bee2877fff15ff6562d20d1e7e8b7f..8a49e2bb37faac263ef645721f6c18080bf630e8 100644 (file)
@@ -75,7 +75,7 @@ intel_atomic_global_state_get(struct intel_global_state *obj_state)
        return obj_state;
 }
 
-void intel_atomic_global_obj_init(struct drm_i915_private *dev_priv,
+void intel_atomic_global_obj_init(struct intel_display *display,
                                  struct intel_global_obj *obj,
                                  struct intel_global_state *state,
                                  const struct intel_global_state_funcs *funcs)
@@ -88,26 +88,26 @@ void intel_atomic_global_obj_init(struct drm_i915_private *dev_priv,
 
        obj->state = state;
        obj->funcs = funcs;
-       list_add_tail(&obj->head, &dev_priv->display.global.obj_list);
+       list_add_tail(&obj->head, &display->global.obj_list);
 }
 
-void intel_atomic_global_obj_cleanup(struct drm_i915_private *dev_priv)
+void intel_atomic_global_obj_cleanup(struct intel_display *display)
 {
        struct intel_global_obj *obj, *next;
 
-       list_for_each_entry_safe(obj, next, &dev_priv->display.global.obj_list, head) {
+       list_for_each_entry_safe(obj, next, &display->global.obj_list, head) {
                list_del(&obj->head);
 
-               drm_WARN_ON(&dev_priv->drm, kref_read(&obj->state->ref) != 1);
+               drm_WARN_ON(display->drm, kref_read(&obj->state->ref) != 1);
                intel_atomic_global_state_put(obj->state);
        }
 }
 
-static void assert_global_state_write_locked(struct drm_i915_private *dev_priv)
+static void assert_global_state_write_locked(struct intel_display *display)
 {
        struct intel_crtc *crtc;
 
-       for_each_intel_crtc(&dev_priv->drm, crtc)
+       for_each_intel_crtc(display->drm, crtc)
                drm_modeset_lock_assert_held(&crtc->base.mutex);
 }
 
@@ -126,23 +126,23 @@ static bool modeset_lock_is_held(struct drm_modeset_acquire_ctx *ctx,
 
 static void assert_global_state_read_locked(struct intel_atomic_state *state)
 {
+       struct intel_display *display = to_intel_display(state);
        struct drm_modeset_acquire_ctx *ctx = state->base.acquire_ctx;
-       struct drm_i915_private *dev_priv = to_i915(state->base.dev);
        struct intel_crtc *crtc;
 
-       for_each_intel_crtc(&dev_priv->drm, crtc) {
+       for_each_intel_crtc(display->drm, crtc) {
                if (modeset_lock_is_held(ctx, &crtc->base.mutex))
                        return;
        }
 
-       drm_WARN(&dev_priv->drm, 1, "Global state not read locked\n");
+       drm_WARN(display->drm, 1, "Global state not read locked\n");
 }
 
 struct intel_global_state *
 intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
                                  struct intel_global_obj *obj)
 {
-       struct drm_i915_private *i915 = to_i915(state->base.dev);
+       struct intel_display *display = to_intel_display(state);
        int index, num_objs, i;
        size_t size;
        struct __intel_global_objs_state *arr;
@@ -184,7 +184,7 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
 
        state->num_global_objs = num_objs;
 
-       drm_dbg_atomic(&i915->drm, "Added new global object %p state %p to %p\n",
+       drm_dbg_atomic(display->drm, "Added new global object %p state %p to %p\n",
                       obj, obj_state, state);
 
        return obj_state;
@@ -218,14 +218,14 @@ intel_atomic_get_new_global_obj_state(struct intel_atomic_state *state,
 
 void intel_atomic_swap_global_state(struct intel_atomic_state *state)
 {
-       struct drm_i915_private *dev_priv = to_i915(state->base.dev);
+       struct intel_display *display = to_intel_display(state);
        struct intel_global_state *old_obj_state, *new_obj_state;
        struct intel_global_obj *obj;
        int i;
 
        for_each_oldnew_global_obj_in_state(state, obj, old_obj_state,
                                            new_obj_state, i) {
-               drm_WARN_ON(&dev_priv->drm, obj->state != old_obj_state);
+               drm_WARN_ON(display->drm, obj->state != old_obj_state);
 
                /*
                 * If the new state wasn't modified (and properly
@@ -234,7 +234,7 @@ void intel_atomic_swap_global_state(struct intel_atomic_state *state)
                if (!new_obj_state->changed)
                        continue;
 
-               assert_global_state_write_locked(dev_priv);
+               assert_global_state_write_locked(display);
 
                old_obj_state->state = state;
                new_obj_state->state = NULL;
@@ -265,10 +265,10 @@ void intel_atomic_clear_global_state(struct intel_atomic_state *state)
 int intel_atomic_lock_global_state(struct intel_global_state *obj_state)
 {
        struct intel_atomic_state *state = obj_state->state;
-       struct drm_i915_private *dev_priv = to_i915(state->base.dev);
+       struct intel_display *display = to_intel_display(state);
        struct intel_crtc *crtc;
 
-       for_each_intel_crtc(&dev_priv->drm, crtc) {
+       for_each_intel_crtc(display->drm, crtc) {
                int ret;
 
                ret = drm_modeset_lock(&crtc->base.mutex,
@@ -298,10 +298,10 @@ int intel_atomic_serialize_global_state(struct intel_global_state *obj_state)
 bool
 intel_atomic_global_state_is_serialized(struct intel_atomic_state *state)
 {
-       struct drm_i915_private *i915 = to_i915(state->base.dev);
+       struct intel_display *display = to_intel_display(state);
        struct intel_crtc *crtc;
 
-       for_each_intel_crtc(&i915->drm, crtc)
+       for_each_intel_crtc(display->drm, crtc)
                if (!intel_atomic_get_new_crtc_state(state, crtc))
                        return false;
        return true;
@@ -344,7 +344,7 @@ intel_atomic_global_state_setup_commit(struct intel_atomic_state *state)
 int
 intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *state)
 {
-       struct drm_i915_private *i915 = to_i915(state->base.dev);
+       struct intel_display *display = to_intel_display(state);
        const struct intel_global_state *old_obj_state;
        struct intel_global_obj *obj;
        int i;
@@ -358,7 +358,7 @@ intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *state
 
                ret = wait_for_completion_timeout(&commit->done, 10 * HZ);
                if (ret == 0) {
-                       drm_err(&i915->drm, "global state timed out\n");
+                       drm_err(display->drm, "global state timed out\n");
                        return -ETIMEDOUT;
                }
        }
index 6506a8e32972a8c6efd0280e3ea29dd8041421ef..d42fb2547ee94295a2d247f4961d6c82a6931726 100644 (file)
@@ -9,8 +9,8 @@
 #include <linux/kref.h>
 #include <linux/list.h>
 
-struct drm_i915_private;
 struct intel_atomic_state;
+struct intel_display;
 struct intel_global_obj;
 struct intel_global_state;
 
@@ -69,11 +69,11 @@ struct __intel_global_objs_state {
        struct intel_global_state *state, *old_state, *new_state;
 };
 
-void intel_atomic_global_obj_init(struct drm_i915_private *dev_priv,
+void intel_atomic_global_obj_init(struct intel_display *display,
                                  struct intel_global_obj *obj,
                                  struct intel_global_state *state,
                                  const struct intel_global_state_funcs *funcs);
-void intel_atomic_global_obj_cleanup(struct drm_i915_private *dev_priv);
+void intel_atomic_global_obj_cleanup(struct intel_display *display);
 
 struct intel_global_state *
 intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
index 9373cf2885ababaf981fa225027b8e7af62a0655..975520322136e2e6133d222ff6e440a5cfbb61b4 100644 (file)
@@ -5,14 +5,15 @@
 
 #include <linux/bitops.h>
 
-#include "i915_drv.h"
 #include "i915_reg.h"
+#include "i915_utils.h"
 #include "intel_atomic.h"
 #include "intel_bw.h"
 #include "intel_cdclk.h"
 #include "intel_de.h"
 #include "intel_display_trace.h"
 #include "intel_pmdemand.h"
+#include "intel_step.h"
 #include "skl_watermark.h"
 
 struct pmdemand_params {
@@ -115,14 +116,13 @@ intel_atomic_get_new_pmdemand_state(struct intel_atomic_state *state)
 
 int intel_pmdemand_init(struct intel_display *display)
 {
-       struct drm_i915_private *i915 = to_i915(display->drm);
        struct intel_pmdemand_state *pmdemand_state;
 
        pmdemand_state = kzalloc(sizeof(*pmdemand_state), GFP_KERNEL);
        if (!pmdemand_state)
                return -ENOMEM;
 
-       intel_atomic_global_obj_init(i915, &display->pmdemand.obj,
+       intel_atomic_global_obj_init(display, &display->pmdemand.obj,
                                     &pmdemand_state->base,
                                     &intel_pmdemand_funcs);
 
index 407af5b9f1dc68c687c15f141edf6e44b4d1ea87..f4458d1185b3ad3b491adc759f1a9796cc7757d4 100644 (file)
@@ -3333,13 +3333,14 @@ intel_atomic_get_dbuf_state(struct intel_atomic_state *state)
 
 int intel_dbuf_init(struct drm_i915_private *i915)
 {
+       struct intel_display *display = &i915->display;
        struct intel_dbuf_state *dbuf_state;
 
        dbuf_state = kzalloc(sizeof(*dbuf_state), GFP_KERNEL);
        if (!dbuf_state)
                return -ENOMEM;
 
-       intel_atomic_global_obj_init(i915, &i915->display.dbuf.obj,
+       intel_atomic_global_obj_init(display, &display->dbuf.obj,
                                     &dbuf_state->base, &intel_dbuf_funcs);
 
        return 0;