mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
drm/i915/display: Add new interface for getting dc_state
To implement workaround for underrun on idle PSR HW issue (Wa_16025596647) we need to have current configured DC state available. Add new interface for this purpose. Signed-off-by: Jouni Högander <jouni.hogander@intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com> Link: https://lore.kernel.org/r/20250414100508.1208774-2-jouni.hogander@intel.com
This commit is contained in:
parent
246b259f1d
commit
208b22a86f
|
|
@ -323,6 +323,35 @@ void intel_display_power_set_target_dc_state(struct intel_display *display,
|
|||
mutex_unlock(&power_domains->lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* intel_display_power_get_current_dc_state - Set target dc state.
|
||||
* @display: display device
|
||||
*
|
||||
* This function set the "DC off" power well target_dc_state,
|
||||
* based upon this target_dc_stste, "DC off" power well will
|
||||
* enable desired DC state.
|
||||
*/
|
||||
u32 intel_display_power_get_current_dc_state(struct intel_display *display)
|
||||
{
|
||||
struct i915_power_well *power_well;
|
||||
struct i915_power_domains *power_domains = &display->power.domains;
|
||||
u32 current_dc_state = DC_STATE_DISABLE;
|
||||
|
||||
mutex_lock(&power_domains->lock);
|
||||
power_well = lookup_power_well(display, SKL_DISP_DC_OFF);
|
||||
|
||||
if (drm_WARN_ON(display->drm, !power_well))
|
||||
goto unlock;
|
||||
|
||||
current_dc_state = intel_power_well_is_enabled(display, power_well) ?
|
||||
DC_STATE_DISABLE : power_domains->target_dc_state;
|
||||
|
||||
unlock:
|
||||
mutex_unlock(&power_domains->lock);
|
||||
|
||||
return current_dc_state;
|
||||
}
|
||||
|
||||
static void __async_put_domains_mask(struct i915_power_domains *power_domains,
|
||||
struct intel_power_domain_mask *mask)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -183,6 +183,7 @@ void intel_display_power_suspend(struct intel_display *display);
|
|||
void intel_display_power_resume(struct intel_display *display);
|
||||
void intel_display_power_set_target_dc_state(struct intel_display *display,
|
||||
u32 state);
|
||||
u32 intel_display_power_get_current_dc_state(struct intel_display *display);
|
||||
|
||||
bool intel_display_power_is_enabled(struct intel_display *display,
|
||||
enum intel_display_power_domain domain);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user