drm/i915: Unduplicate chv_data_lane_soft_reset()
The function chv_data_lane_soft_reset() was duplicated in DP and HDMI code. Move it to intel_dpio_phy.c. Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Reviewed-by: Jim Bride <jim.bride@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1461761065-21195-4-git-send-email-ander.conselvan.de.oliveira@intel.com
This commit is contained in:
parent
b7fa22d872
commit
844b2f9a5d
|
@ -3593,6 +3593,8 @@ void vlv_flisdsi_write(struct drm_i915_private *dev_priv, u32 reg, u32 val);
|
||||||
void chv_set_phy_signal_level(struct intel_encoder *encoder,
|
void chv_set_phy_signal_level(struct intel_encoder *encoder,
|
||||||
u32 deemph_reg_value, u32 margin_reg_value,
|
u32 deemph_reg_value, u32 margin_reg_value,
|
||||||
bool uniq_trans_scale);
|
bool uniq_trans_scale);
|
||||||
|
void chv_data_lane_soft_reset(struct intel_encoder *encoder,
|
||||||
|
bool reset);
|
||||||
|
|
||||||
int intel_gpu_freq(struct drm_i915_private *dev_priv, int val);
|
int intel_gpu_freq(struct drm_i915_private *dev_priv, int val);
|
||||||
int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
int intel_freq_opcode(struct drm_i915_private *dev_priv, int val);
|
||||||
|
|
|
@ -2460,50 +2460,6 @@ static void vlv_post_disable_dp(struct intel_encoder *encoder)
|
||||||
intel_dp_link_down(intel_dp);
|
intel_dp_link_down(intel_dp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void chv_data_lane_soft_reset(struct intel_encoder *encoder,
|
|
||||||
bool reset)
|
|
||||||
{
|
|
||||||
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
|
|
||||||
enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(&encoder->base));
|
|
||||||
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
|
|
||||||
enum pipe pipe = crtc->pipe;
|
|
||||||
uint32_t val;
|
|
||||||
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch));
|
|
||||||
if (reset)
|
|
||||||
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW0(ch), val);
|
|
||||||
|
|
||||||
if (crtc->config->lane_count > 2) {
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW0(ch));
|
|
||||||
if (reset)
|
|
||||||
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW0(ch), val);
|
|
||||||
}
|
|
||||||
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW1(ch));
|
|
||||||
val |= CHV_PCS_REQ_SOFTRESET_EN;
|
|
||||||
if (reset)
|
|
||||||
val &= ~DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW1(ch), val);
|
|
||||||
|
|
||||||
if (crtc->config->lane_count > 2) {
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW1(ch));
|
|
||||||
val |= CHV_PCS_REQ_SOFTRESET_EN;
|
|
||||||
if (reset)
|
|
||||||
val &= ~DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW1(ch), val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void chv_post_disable_dp(struct intel_encoder *encoder)
|
static void chv_post_disable_dp(struct intel_encoder *encoder)
|
||||||
{
|
{
|
||||||
struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
|
struct intel_dp *intel_dp = enc_to_intel_dp(&encoder->base);
|
||||||
|
|
|
@ -120,3 +120,46 @@ void chv_set_phy_signal_level(struct intel_encoder *encoder,
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void chv_data_lane_soft_reset(struct intel_encoder *encoder,
|
||||||
|
bool reset)
|
||||||
|
{
|
||||||
|
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
|
||||||
|
enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(&encoder->base));
|
||||||
|
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
|
||||||
|
enum pipe pipe = crtc->pipe;
|
||||||
|
uint32_t val;
|
||||||
|
|
||||||
|
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch));
|
||||||
|
if (reset)
|
||||||
|
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
|
||||||
|
else
|
||||||
|
val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET;
|
||||||
|
vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW0(ch), val);
|
||||||
|
|
||||||
|
if (crtc->config->lane_count > 2) {
|
||||||
|
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW0(ch));
|
||||||
|
if (reset)
|
||||||
|
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
|
||||||
|
else
|
||||||
|
val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET;
|
||||||
|
vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW0(ch), val);
|
||||||
|
}
|
||||||
|
|
||||||
|
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW1(ch));
|
||||||
|
val |= CHV_PCS_REQ_SOFTRESET_EN;
|
||||||
|
if (reset)
|
||||||
|
val &= ~DPIO_PCS_CLK_SOFT_RESET;
|
||||||
|
else
|
||||||
|
val |= DPIO_PCS_CLK_SOFT_RESET;
|
||||||
|
vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW1(ch), val);
|
||||||
|
|
||||||
|
if (crtc->config->lane_count > 2) {
|
||||||
|
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW1(ch));
|
||||||
|
val |= CHV_PCS_REQ_SOFTRESET_EN;
|
||||||
|
if (reset)
|
||||||
|
val &= ~DPIO_PCS_CLK_SOFT_RESET;
|
||||||
|
else
|
||||||
|
val |= DPIO_PCS_CLK_SOFT_RESET;
|
||||||
|
vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW1(ch), val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1666,50 +1666,6 @@ static void vlv_hdmi_pre_pll_enable(struct intel_encoder *encoder)
|
||||||
mutex_unlock(&dev_priv->sb_lock);
|
mutex_unlock(&dev_priv->sb_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void chv_data_lane_soft_reset(struct intel_encoder *encoder,
|
|
||||||
bool reset)
|
|
||||||
{
|
|
||||||
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
|
|
||||||
enum dpio_channel ch = vlv_dport_to_channel(enc_to_dig_port(&encoder->base));
|
|
||||||
struct intel_crtc *crtc = to_intel_crtc(encoder->base.crtc);
|
|
||||||
enum pipe pipe = crtc->pipe;
|
|
||||||
uint32_t val;
|
|
||||||
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW0(ch));
|
|
||||||
if (reset)
|
|
||||||
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW0(ch), val);
|
|
||||||
|
|
||||||
if (crtc->config->lane_count > 2) {
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW0(ch));
|
|
||||||
if (reset)
|
|
||||||
val &= ~(DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET);
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_TX_LANE2_RESET | DPIO_PCS_TX_LANE1_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW0(ch), val);
|
|
||||||
}
|
|
||||||
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS01_DW1(ch));
|
|
||||||
val |= CHV_PCS_REQ_SOFTRESET_EN;
|
|
||||||
if (reset)
|
|
||||||
val &= ~DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS01_DW1(ch), val);
|
|
||||||
|
|
||||||
if (crtc->config->lane_count > 2) {
|
|
||||||
val = vlv_dpio_read(dev_priv, pipe, VLV_PCS23_DW1(ch));
|
|
||||||
val |= CHV_PCS_REQ_SOFTRESET_EN;
|
|
||||||
if (reset)
|
|
||||||
val &= ~DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
else
|
|
||||||
val |= DPIO_PCS_CLK_SOFT_RESET;
|
|
||||||
vlv_dpio_write(dev_priv, pipe, VLV_PCS23_DW1(ch), val);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void chv_hdmi_pre_pll_enable(struct intel_encoder *encoder)
|
static void chv_hdmi_pre_pll_enable(struct intel_encoder *encoder)
|
||||||
{
|
{
|
||||||
struct intel_digital_port *dport = enc_to_dig_port(&encoder->base);
|
struct intel_digital_port *dport = enc_to_dig_port(&encoder->base);
|
||||||
|
|
Loading…
Reference in New Issue