Commit 67ebda8c authored by Dave Airlie's avatar Dave Airlie

Merge tag 'drm-intel-next-fixes-2023-06-29' of...

Merge tag 'drm-intel-next-fixes-2023-06-29' of git://anongit.freedesktop.org/drm/drm-intel into drm-next

- Allow DC states along with PW2 only for PWB functionality [adlp+] (Imre Deak)
- Fix SSC selection for MPLLA [mtl] (Radhakrishna Sripada)
- Use hw.adjusted mode when calculating io/fast wake times [psr] (Jouni Högander)
- Apply min softlimit correctly [guc/slpc] (Vinay Belgaumkar)
- Assign correct hdcp content type [hdcp] (Suraj Kandpal)
- Add missing forward declarations/includes to display power headers (Imre Deak)
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/ZJ1WpY+GF9NcsWXp@tursulin-desk
parents d011f0c3 5b782635
...@@ -2435,7 +2435,8 @@ static void intel_program_port_clock_ctl(struct intel_encoder *encoder, ...@@ -2435,7 +2435,8 @@ static void intel_program_port_clock_ctl(struct intel_encoder *encoder,
intel_de_rmw(i915, XELPDP_PORT_CLOCK_CTL(encoder->port), intel_de_rmw(i915, XELPDP_PORT_CLOCK_CTL(encoder->port),
XELPDP_LANE1_PHY_CLOCK_SELECT | XELPDP_FORWARD_CLOCK_UNGATE | XELPDP_LANE1_PHY_CLOCK_SELECT | XELPDP_FORWARD_CLOCK_UNGATE |
XELPDP_DDI_CLOCK_SELECT_MASK | XELPDP_SSC_ENABLE_PLLB, val); XELPDP_DDI_CLOCK_SELECT_MASK | XELPDP_SSC_ENABLE_PLLA |
XELPDP_SSC_ENABLE_PLLB, val);
} }
static u32 intel_cx0_get_powerdown_update(u8 lane_mask) static u32 intel_cx0_get_powerdown_update(u8 lane_mask)
......
...@@ -6,6 +6,9 @@ ...@@ -6,6 +6,9 @@
#ifndef __INTEL_DISPLAY_POWER_H__ #ifndef __INTEL_DISPLAY_POWER_H__
#define __INTEL_DISPLAY_POWER_H__ #define __INTEL_DISPLAY_POWER_H__
#include <linux/mutex.h>
#include <linux/workqueue.h>
#include "intel_wakeref.h" #include "intel_wakeref.h"
enum aux_ch; enum aux_ch;
...@@ -16,6 +19,7 @@ enum port; ...@@ -16,6 +19,7 @@ enum port;
struct drm_i915_private; struct drm_i915_private;
struct i915_power_well; struct i915_power_well;
struct intel_encoder; struct intel_encoder;
struct seq_file;
/* /*
* Keep the pipe, transcoder, port (DDI_LANES,DDI_IO,AUX) domain instances * Keep the pipe, transcoder, port (DDI_LANES,DDI_IO,AUX) domain instances
......
...@@ -1252,10 +1252,18 @@ I915_DECL_PW_DOMAINS(xelpd_pwdoms_pw_a, ...@@ -1252,10 +1252,18 @@ I915_DECL_PW_DOMAINS(xelpd_pwdoms_pw_a,
POWER_DOMAIN_INIT); POWER_DOMAIN_INIT);
#define XELPD_DC_OFF_PORT_POWER_DOMAINS \ #define XELPD_DC_OFF_PORT_POWER_DOMAINS \
POWER_DOMAIN_PORT_DDI_LANES_C, \
POWER_DOMAIN_PORT_DDI_LANES_D, \
POWER_DOMAIN_PORT_DDI_LANES_E, \
POWER_DOMAIN_PORT_DDI_LANES_TC1, \ POWER_DOMAIN_PORT_DDI_LANES_TC1, \
POWER_DOMAIN_PORT_DDI_LANES_TC2, \ POWER_DOMAIN_PORT_DDI_LANES_TC2, \
POWER_DOMAIN_PORT_DDI_LANES_TC3, \ POWER_DOMAIN_PORT_DDI_LANES_TC3, \
POWER_DOMAIN_PORT_DDI_LANES_TC4, \ POWER_DOMAIN_PORT_DDI_LANES_TC4, \
POWER_DOMAIN_VGA, \
POWER_DOMAIN_AUDIO_PLAYBACK, \
POWER_DOMAIN_AUX_IO_C, \
POWER_DOMAIN_AUX_IO_D, \
POWER_DOMAIN_AUX_IO_E, \
POWER_DOMAIN_AUX_C, \ POWER_DOMAIN_AUX_C, \
POWER_DOMAIN_AUX_D, \ POWER_DOMAIN_AUX_D, \
POWER_DOMAIN_AUX_E, \ POWER_DOMAIN_AUX_E, \
...@@ -1272,14 +1280,6 @@ I915_DECL_PW_DOMAINS(xelpd_pwdoms_pw_a, ...@@ -1272,14 +1280,6 @@ I915_DECL_PW_DOMAINS(xelpd_pwdoms_pw_a,
XELPD_PW_B_POWER_DOMAINS, \ XELPD_PW_B_POWER_DOMAINS, \
XELPD_PW_C_POWER_DOMAINS, \ XELPD_PW_C_POWER_DOMAINS, \
XELPD_PW_D_POWER_DOMAINS, \ XELPD_PW_D_POWER_DOMAINS, \
POWER_DOMAIN_PORT_DDI_LANES_C, \
POWER_DOMAIN_PORT_DDI_LANES_D, \
POWER_DOMAIN_PORT_DDI_LANES_E, \
POWER_DOMAIN_VGA, \
POWER_DOMAIN_AUDIO_PLAYBACK, \
POWER_DOMAIN_AUX_IO_C, \
POWER_DOMAIN_AUX_IO_D, \
POWER_DOMAIN_AUX_IO_E, \
XELPD_DC_OFF_PORT_POWER_DOMAINS XELPD_DC_OFF_PORT_POWER_DOMAINS
I915_DECL_PW_DOMAINS(xelpd_pwdoms_pw_2, I915_DECL_PW_DOMAINS(xelpd_pwdoms_pw_2,
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
struct drm_i915_private; struct drm_i915_private;
struct i915_power_well; struct i915_power_well;
struct i915_power_well_ops;
struct intel_encoder;
#define for_each_power_well(__dev_priv, __power_well) \ #define for_each_power_well(__dev_priv, __power_well) \
for ((__power_well) = (__dev_priv)->display.power.domains.power_wells; \ for ((__power_well) = (__dev_priv)->display.power.domains.power_wells; \
......
...@@ -2358,7 +2358,7 @@ int intel_hdcp_enable(struct intel_atomic_state *state, ...@@ -2358,7 +2358,7 @@ int intel_hdcp_enable(struct intel_atomic_state *state,
mutex_lock(&dig_port->hdcp_mutex); mutex_lock(&dig_port->hdcp_mutex);
drm_WARN_ON(&i915->drm, drm_WARN_ON(&i915->drm,
hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED); hdcp->value == DRM_MODE_CONTENT_PROTECTION_ENABLED);
hdcp->content_type = (u8)conn_state->content_type; hdcp->content_type = (u8)conn_state->hdcp_content_type;
if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) { if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_DP_MST)) {
hdcp->cpu_transcoder = pipe_config->mst_master_transcoder; hdcp->cpu_transcoder = pipe_config->mst_master_transcoder;
......
...@@ -933,9 +933,9 @@ static bool _compute_psr2_wake_times(struct intel_dp *intel_dp, ...@@ -933,9 +933,9 @@ static bool _compute_psr2_wake_times(struct intel_dp *intel_dp,
} }
io_wake_lines = intel_usecs_to_scanlines( io_wake_lines = intel_usecs_to_scanlines(
&crtc_state->uapi.adjusted_mode, io_wake_time); &crtc_state->hw.adjusted_mode, io_wake_time);
fast_wake_lines = intel_usecs_to_scanlines( fast_wake_lines = intel_usecs_to_scanlines(
&crtc_state->uapi.adjusted_mode, fast_wake_time); &crtc_state->hw.adjusted_mode, fast_wake_time);
if (io_wake_lines > max_wake_lines || if (io_wake_lines > max_wake_lines ||
fast_wake_lines > max_wake_lines) fast_wake_lines > max_wake_lines)
......
...@@ -606,7 +606,7 @@ static int slpc_set_softlimits(struct intel_guc_slpc *slpc) ...@@ -606,7 +606,7 @@ static int slpc_set_softlimits(struct intel_guc_slpc *slpc)
if (unlikely(ret)) if (unlikely(ret))
return ret; return ret;
slpc_to_gt(slpc)->defaults.min_freq = slpc->min_freq_softlimit; slpc_to_gt(slpc)->defaults.min_freq = slpc->min_freq_softlimit;
} else if (slpc->min_freq_softlimit != slpc->min_freq) { } else {
return intel_guc_slpc_set_min_freq(slpc, return intel_guc_slpc_set_min_freq(slpc,
slpc->min_freq_softlimit); slpc->min_freq_softlimit);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment