mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
drm/i915/display: convert global state to struct intel_display
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>
This commit is contained in:
parent
445fc68549
commit
1513358246
7 changed files with 33 additions and 34 deletions
|
@ -1447,13 +1447,14 @@ static const struct intel_global_state_funcs intel_bw_funcs = {
|
||||||
|
|
||||||
int intel_bw_init(struct drm_i915_private *i915)
|
int intel_bw_init(struct drm_i915_private *i915)
|
||||||
{
|
{
|
||||||
|
struct intel_display *display = &i915->display;
|
||||||
struct intel_bw_state *state;
|
struct intel_bw_state *state;
|
||||||
|
|
||||||
state = kzalloc(sizeof(*state), GFP_KERNEL);
|
state = kzalloc(sizeof(*state), GFP_KERNEL);
|
||||||
if (!state)
|
if (!state)
|
||||||
return -ENOMEM;
|
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);
|
&state->base, &intel_bw_funcs);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -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)
|
int intel_cdclk_init(struct intel_display *display)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *dev_priv = to_i915(display->drm);
|
|
||||||
struct intel_cdclk_state *cdclk_state;
|
struct intel_cdclk_state *cdclk_state;
|
||||||
|
|
||||||
cdclk_state = kzalloc(sizeof(*cdclk_state), GFP_KERNEL);
|
cdclk_state = kzalloc(sizeof(*cdclk_state), GFP_KERNEL);
|
||||||
if (!cdclk_state)
|
if (!cdclk_state)
|
||||||
return -ENOMEM;
|
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);
|
&cdclk_state->base, &intel_cdclk_funcs);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -163,9 +163,7 @@ static void intel_mode_config_init(struct intel_display *display)
|
||||||
|
|
||||||
static void intel_mode_config_cleanup(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(display);
|
||||||
|
|
||||||
intel_atomic_global_obj_cleanup(i915);
|
|
||||||
drm_mode_config_cleanup(display->drm);
|
drm_mode_config_cleanup(display->drm);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,7 +75,7 @@ intel_atomic_global_state_get(struct intel_global_state *obj_state)
|
||||||
return 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_obj *obj,
|
||||||
struct intel_global_state *state,
|
struct intel_global_state *state,
|
||||||
const struct intel_global_state_funcs *funcs)
|
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->state = state;
|
||||||
obj->funcs = funcs;
|
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;
|
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);
|
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);
|
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;
|
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);
|
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)
|
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_modeset_acquire_ctx *ctx = state->base.acquire_ctx;
|
||||||
struct drm_i915_private *dev_priv = to_i915(state->base.dev);
|
|
||||||
struct intel_crtc *crtc;
|
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))
|
if (modeset_lock_is_held(ctx, &crtc->base.mutex))
|
||||||
return;
|
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 *
|
struct intel_global_state *
|
||||||
intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
|
intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
|
||||||
struct intel_global_obj *obj)
|
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;
|
int index, num_objs, i;
|
||||||
size_t size;
|
size_t size;
|
||||||
struct __intel_global_objs_state *arr;
|
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;
|
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);
|
obj, obj_state, state);
|
||||||
|
|
||||||
return obj_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)
|
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_state *old_obj_state, *new_obj_state;
|
||||||
struct intel_global_obj *obj;
|
struct intel_global_obj *obj;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for_each_oldnew_global_obj_in_state(state, obj, old_obj_state,
|
for_each_oldnew_global_obj_in_state(state, obj, old_obj_state,
|
||||||
new_obj_state, i) {
|
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
|
* 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)
|
if (!new_obj_state->changed)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
assert_global_state_write_locked(dev_priv);
|
assert_global_state_write_locked(display);
|
||||||
|
|
||||||
old_obj_state->state = state;
|
old_obj_state->state = state;
|
||||||
new_obj_state->state = NULL;
|
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)
|
int intel_atomic_lock_global_state(struct intel_global_state *obj_state)
|
||||||
{
|
{
|
||||||
struct intel_atomic_state *state = obj_state->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;
|
struct intel_crtc *crtc;
|
||||||
|
|
||||||
for_each_intel_crtc(&dev_priv->drm, crtc) {
|
for_each_intel_crtc(display->drm, crtc) {
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = drm_modeset_lock(&crtc->base.mutex,
|
ret = drm_modeset_lock(&crtc->base.mutex,
|
||||||
|
@ -298,10 +298,10 @@ int intel_atomic_serialize_global_state(struct intel_global_state *obj_state)
|
||||||
bool
|
bool
|
||||||
intel_atomic_global_state_is_serialized(struct intel_atomic_state *state)
|
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;
|
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))
|
if (!intel_atomic_get_new_crtc_state(state, crtc))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
|
@ -344,7 +344,7 @@ intel_atomic_global_state_setup_commit(struct intel_atomic_state *state)
|
||||||
int
|
int
|
||||||
intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *state)
|
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;
|
const struct intel_global_state *old_obj_state;
|
||||||
struct intel_global_obj *obj;
|
struct intel_global_obj *obj;
|
||||||
int i;
|
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);
|
ret = wait_for_completion_timeout(&commit->done, 10 * HZ);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
drm_err(&i915->drm, "global state timed out\n");
|
drm_err(display->drm, "global state timed out\n");
|
||||||
return -ETIMEDOUT;
|
return -ETIMEDOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@
|
||||||
#include <linux/kref.h>
|
#include <linux/kref.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
|
|
||||||
struct drm_i915_private;
|
|
||||||
struct intel_atomic_state;
|
struct intel_atomic_state;
|
||||||
|
struct intel_display;
|
||||||
struct intel_global_obj;
|
struct intel_global_obj;
|
||||||
struct intel_global_state;
|
struct intel_global_state;
|
||||||
|
|
||||||
|
@ -69,11 +69,11 @@ struct __intel_global_objs_state {
|
||||||
struct intel_global_state *state, *old_state, *new_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_obj *obj,
|
||||||
struct intel_global_state *state,
|
struct intel_global_state *state,
|
||||||
const struct intel_global_state_funcs *funcs);
|
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 *
|
struct intel_global_state *
|
||||||
intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
|
intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
|
||||||
|
|
|
@ -5,14 +5,15 @@
|
||||||
|
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
|
|
||||||
#include "i915_drv.h"
|
|
||||||
#include "i915_reg.h"
|
#include "i915_reg.h"
|
||||||
|
#include "i915_utils.h"
|
||||||
#include "intel_atomic.h"
|
#include "intel_atomic.h"
|
||||||
#include "intel_bw.h"
|
#include "intel_bw.h"
|
||||||
#include "intel_cdclk.h"
|
#include "intel_cdclk.h"
|
||||||
#include "intel_de.h"
|
#include "intel_de.h"
|
||||||
#include "intel_display_trace.h"
|
#include "intel_display_trace.h"
|
||||||
#include "intel_pmdemand.h"
|
#include "intel_pmdemand.h"
|
||||||
|
#include "intel_step.h"
|
||||||
#include "skl_watermark.h"
|
#include "skl_watermark.h"
|
||||||
|
|
||||||
struct pmdemand_params {
|
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)
|
int intel_pmdemand_init(struct intel_display *display)
|
||||||
{
|
{
|
||||||
struct drm_i915_private *i915 = to_i915(display->drm);
|
|
||||||
struct intel_pmdemand_state *pmdemand_state;
|
struct intel_pmdemand_state *pmdemand_state;
|
||||||
|
|
||||||
pmdemand_state = kzalloc(sizeof(*pmdemand_state), GFP_KERNEL);
|
pmdemand_state = kzalloc(sizeof(*pmdemand_state), GFP_KERNEL);
|
||||||
if (!pmdemand_state)
|
if (!pmdemand_state)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
intel_atomic_global_obj_init(i915, &display->pmdemand.obj,
|
intel_atomic_global_obj_init(display, &display->pmdemand.obj,
|
||||||
&pmdemand_state->base,
|
&pmdemand_state->base,
|
||||||
&intel_pmdemand_funcs);
|
&intel_pmdemand_funcs);
|
||||||
|
|
||||||
|
|
|
@ -3333,13 +3333,14 @@ intel_atomic_get_dbuf_state(struct intel_atomic_state *state)
|
||||||
|
|
||||||
int intel_dbuf_init(struct drm_i915_private *i915)
|
int intel_dbuf_init(struct drm_i915_private *i915)
|
||||||
{
|
{
|
||||||
|
struct intel_display *display = &i915->display;
|
||||||
struct intel_dbuf_state *dbuf_state;
|
struct intel_dbuf_state *dbuf_state;
|
||||||
|
|
||||||
dbuf_state = kzalloc(sizeof(*dbuf_state), GFP_KERNEL);
|
dbuf_state = kzalloc(sizeof(*dbuf_state), GFP_KERNEL);
|
||||||
if (!dbuf_state)
|
if (!dbuf_state)
|
||||||
return -ENOMEM;
|
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);
|
&dbuf_state->base, &intel_dbuf_funcs);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Add table
Reference in a new issue