Commit 45f8a8ce authored by Jani Nikula's avatar Jani Nikula

drm/i915/dp: abstract struct intel_dp pps members to a sub-struct

Add some namespacing to highlight what belongs where. No functional
changes.

Cc: Anshuman Gupta <anshuman.gupta@intel.com>
Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210120101834.19813-3-jani.nikula@intel.com
parent 0bf1e5a8
...@@ -2155,13 +2155,13 @@ static int i915_panel_show(struct seq_file *m, void *data) ...@@ -2155,13 +2155,13 @@ static int i915_panel_show(struct seq_file *m, void *data)
return -ENODEV; return -ENODEV;
seq_printf(m, "Panel power up delay: %d\n", seq_printf(m, "Panel power up delay: %d\n",
intel_dp->panel_power_up_delay); intel_dp->pps.panel_power_up_delay);
seq_printf(m, "Panel power down delay: %d\n", seq_printf(m, "Panel power down delay: %d\n",
intel_dp->panel_power_down_delay); intel_dp->pps.panel_power_down_delay);
seq_printf(m, "Backlight on delay: %d\n", seq_printf(m, "Backlight on delay: %d\n",
intel_dp->backlight_on_delay); intel_dp->pps.backlight_on_delay);
seq_printf(m, "Backlight off delay: %d\n", seq_printf(m, "Backlight off delay: %d\n",
intel_dp->backlight_off_delay); intel_dp->pps.backlight_off_delay);
return 0; return 0;
} }
......
...@@ -1369,6 +1369,38 @@ struct intel_dp_pcon_frl { ...@@ -1369,6 +1369,38 @@ struct intel_dp_pcon_frl {
int trained_rate_gbps; int trained_rate_gbps;
}; };
struct intel_pps {
int panel_power_up_delay;
int panel_power_down_delay;
int panel_power_cycle_delay;
int backlight_on_delay;
int backlight_off_delay;
struct delayed_work panel_vdd_work;
bool want_panel_vdd;
unsigned long last_power_on;
unsigned long last_backlight_off;
ktime_t panel_power_off_time;
intel_wakeref_t vdd_wakeref;
/*
* Pipe whose power sequencer is currently locked into
* this port. Only relevant on VLV/CHV.
*/
enum pipe pps_pipe;
/*
* Pipe currently driving the port. Used for preventing
* the use of the PPS for any pipe currentrly driving
* external DP as that will mess things up on VLV.
*/
enum pipe active_pipe;
/*
* Set if the sequencer may be reset due to a power transition,
* requiring a reinitialization. Only relevant on BXT.
*/
bool pps_reset;
struct edp_power_seq pps_delays;
};
struct intel_dp { struct intel_dp {
i915_reg_t output_reg; i915_reg_t output_reg;
u32 DP; u32 DP;
...@@ -1408,35 +1440,8 @@ struct intel_dp { ...@@ -1408,35 +1440,8 @@ struct intel_dp {
struct drm_dp_aux aux; struct drm_dp_aux aux;
u32 aux_busy_last_status; u32 aux_busy_last_status;
u8 train_set[4]; u8 train_set[4];
int panel_power_up_delay;
int panel_power_down_delay;
int panel_power_cycle_delay;
int backlight_on_delay;
int backlight_off_delay;
struct delayed_work panel_vdd_work;
bool want_panel_vdd;
unsigned long last_power_on;
unsigned long last_backlight_off;
ktime_t panel_power_off_time;
intel_wakeref_t vdd_wakeref;
/* struct intel_pps pps;
* Pipe whose power sequencer is currently locked into
* this port. Only relevant on VLV/CHV.
*/
enum pipe pps_pipe;
/*
* Pipe currently driving the port. Used for preventing
* the use of the PPS for any pipe currentrly driving
* external DP as that will mess things up on VLV.
*/
enum pipe active_pipe;
/*
* Set if the sequencer may be reset due to a power transition,
* requiring a reinitialization. Only relevant on BXT.
*/
bool pps_reset;
struct edp_power_seq pps_delays;
bool can_mst; /* this port supports mst */ bool can_mst; /* this port supports mst */
bool is_mst; bool is_mst;
......
...@@ -4129,7 +4129,7 @@ intel_dp_link_down(struct intel_encoder *encoder, ...@@ -4129,7 +4129,7 @@ intel_dp_link_down(struct intel_encoder *encoder,
intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true); intel_set_pch_fifo_underrun_reporting(dev_priv, PIPE_A, true);
} }
msleep(intel_dp->panel_power_down_delay); msleep(intel_dp->pps.panel_power_down_delay);
intel_dp->DP = DP; intel_dp->DP = DP;
...@@ -4137,7 +4137,7 @@ intel_dp_link_down(struct intel_encoder *encoder, ...@@ -4137,7 +4137,7 @@ intel_dp_link_down(struct intel_encoder *encoder,
intel_wakeref_t wakeref; intel_wakeref_t wakeref;
with_intel_pps_lock(intel_dp, wakeref) with_intel_pps_lock(intel_dp, wakeref)
intel_dp->active_pipe = INVALID_PIPE; intel_dp->pps.active_pipe = INVALID_PIPE;
} }
} }
...@@ -6368,7 +6368,7 @@ void intel_dp_encoder_reset(struct drm_encoder *encoder) ...@@ -6368,7 +6368,7 @@ void intel_dp_encoder_reset(struct drm_encoder *encoder)
intel_wakeref_t wakeref; intel_wakeref_t wakeref;
with_intel_pps_lock(intel_dp, wakeref) with_intel_pps_lock(intel_dp, wakeref)
intel_dp->active_pipe = vlv_active_pipe(intel_dp); intel_dp->pps.active_pipe = vlv_active_pipe(intel_dp);
} }
intel_pps_encoder_reset(intel_dp); intel_pps_encoder_reset(intel_dp);
...@@ -7139,7 +7139,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp, ...@@ -7139,7 +7139,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
pipe = vlv_active_pipe(intel_dp); pipe = vlv_active_pipe(intel_dp);
if (pipe != PIPE_A && pipe != PIPE_B) if (pipe != PIPE_A && pipe != PIPE_B)
pipe = intel_dp->pps_pipe; pipe = intel_dp->pps.pps_pipe;
if (pipe != PIPE_A && pipe != PIPE_B) if (pipe != PIPE_A && pipe != PIPE_B)
pipe = PIPE_A; pipe = PIPE_A;
...@@ -7216,8 +7216,8 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, ...@@ -7216,8 +7216,8 @@ intel_dp_init_connector(struct intel_digital_port *dig_port,
intel_dp_set_source_rates(intel_dp); intel_dp_set_source_rates(intel_dp);
intel_dp->reset_link_params = true; intel_dp->reset_link_params = true;
intel_dp->pps_pipe = INVALID_PIPE; intel_dp->pps.pps_pipe = INVALID_PIPE;
intel_dp->active_pipe = INVALID_PIPE; intel_dp->pps.active_pipe = INVALID_PIPE;
/* Preserve the current hw state. */ /* Preserve the current hw state. */
intel_dp->DP = intel_de_read(dev_priv, intel_dp->output_reg); intel_dp->DP = intel_de_read(dev_priv, intel_dp->output_reg);
...@@ -7235,7 +7235,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port, ...@@ -7235,7 +7235,7 @@ intel_dp_init_connector(struct intel_digital_port *dig_port,
} }
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
intel_dp->active_pipe = vlv_active_pipe(intel_dp); intel_dp->pps.active_pipe = vlv_active_pipe(intel_dp);
/* /*
* For eDP we always set the encoder type to INTEL_OUTPUT_EDP, but * For eDP we always set the encoder type to INTEL_OUTPUT_EDP, but
......
This diff is collapsed.
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