mirror of
https://github.com/torvalds/linux.git
synced 2026-04-19 23:34:00 -04:00
We use forcewake to prevent the SoC from actually entering
PC8 while performing the PC8 disable sequence. Hide that
behind a new parent interface to eliminate the naked
forcewake/uncore usage from the display power code.
v2: Mark the interface optional and warn if
someone calls it when not provided (Jani)
Include the header to make sure the extern
declaration matches the definition (Jani)
v3: Rebase due to shuffling
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patch.msgid.link/20251218182052.18756-1-ville.syrjala@linux.intel.com
32 lines
776 B
C
32 lines
776 B
C
// SPDX-License-Identifier: MIT
|
|
/*
|
|
* Copyright 2025, Intel Corporation.
|
|
*/
|
|
|
|
#include <drm/drm_print.h>
|
|
#include <drm/intel/display_parent_interface.h>
|
|
|
|
#include "i915_display_pc8.h"
|
|
#include "i915_drv.h"
|
|
#include "intel_uncore.h"
|
|
|
|
static void i915_display_pc8_block(struct drm_device *drm)
|
|
{
|
|
struct intel_uncore *uncore = &to_i915(drm)->uncore;
|
|
|
|
/* to prevent PC8 state, just enable force_wake */
|
|
intel_uncore_forcewake_get(uncore, FORCEWAKE_ALL);
|
|
}
|
|
|
|
static void i915_display_pc8_unblock(struct drm_device *drm)
|
|
{
|
|
struct intel_uncore *uncore = &to_i915(drm)->uncore;
|
|
|
|
intel_uncore_forcewake_put(uncore, FORCEWAKE_ALL);
|
|
}
|
|
|
|
const struct intel_display_pc8_interface i915_display_pc8_interface = {
|
|
.block = i915_display_pc8_block,
|
|
.unblock = i915_display_pc8_unblock,
|
|
};
|