mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-20 06:30:11 +07:00
drm/i915: Init infoframe vfuncs for DP encoders as well
DP ports may want to use the video DIP for SDP transmission, so let's initialize the vfuncs for DP encoders as well. The only exception is port A eDP prior to HSW as that one doesn't have a video DIP instance. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Shashank Sharma <shashank.sharma@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170818134958.15502-6-ville.syrjala@linux.intel.com
This commit is contained in:
parent
f99be1b322
commit
385e4de0ea
@ -2736,6 +2736,8 @@ void intel_ddi_init(struct drm_i915_private *dev_priv, enum port port)
|
||||
intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2);
|
||||
intel_encoder->cloneable = 0;
|
||||
|
||||
intel_infoframe_init(intel_dig_port);
|
||||
|
||||
if (init_dp) {
|
||||
if (!intel_ddi_init_dp_connector(intel_dig_port))
|
||||
goto err;
|
||||
|
@ -6189,6 +6189,9 @@ bool intel_dp_init(struct drm_i915_private *dev_priv,
|
||||
intel_dig_port->hpd_pulse = intel_dp_hpd_pulse;
|
||||
dev_priv->hotplug.irq_port[port] = intel_dig_port;
|
||||
|
||||
if (port != PORT_A)
|
||||
intel_infoframe_init(intel_dig_port);
|
||||
|
||||
if (!intel_dp_init_connector(intel_dig_port, intel_connector))
|
||||
goto err_init_connector;
|
||||
|
||||
|
@ -1650,6 +1650,7 @@ void intel_hdmi_handle_sink_scrambling(struct intel_encoder *intel_encoder,
|
||||
bool high_tmds_clock_ratio,
|
||||
bool scrambling);
|
||||
void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable);
|
||||
void intel_infoframe_init(struct intel_digital_port *intel_dig_port);
|
||||
|
||||
|
||||
/* intel_lvds.c */
|
||||
|
@ -1961,6 +1961,34 @@ static u8 intel_hdmi_ddc_pin(struct drm_i915_private *dev_priv,
|
||||
return ddc_pin;
|
||||
}
|
||||
|
||||
void intel_infoframe_init(struct intel_digital_port *intel_dig_port)
|
||||
{
|
||||
struct drm_i915_private *dev_priv =
|
||||
to_i915(intel_dig_port->base.base.dev);
|
||||
|
||||
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = vlv_write_infoframe;
|
||||
intel_dig_port->set_infoframes = vlv_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = vlv_infoframe_enabled;
|
||||
} else if (IS_G4X(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = g4x_write_infoframe;
|
||||
intel_dig_port->set_infoframes = g4x_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = g4x_infoframe_enabled;
|
||||
} else if (HAS_DDI(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = hsw_write_infoframe;
|
||||
intel_dig_port->set_infoframes = hsw_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = hsw_infoframe_enabled;
|
||||
} else if (HAS_PCH_IBX(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = ibx_write_infoframe;
|
||||
intel_dig_port->set_infoframes = ibx_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = ibx_infoframe_enabled;
|
||||
} else {
|
||||
intel_dig_port->write_infoframe = cpt_write_infoframe;
|
||||
intel_dig_port->set_infoframes = cpt_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = cpt_infoframe_enabled;
|
||||
}
|
||||
}
|
||||
|
||||
void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|
||||
struct intel_connector *intel_connector)
|
||||
{
|
||||
@ -1996,28 +2024,6 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
|
||||
return;
|
||||
intel_encoder->hpd_pin = intel_hpd_pin(port);
|
||||
|
||||
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = vlv_write_infoframe;
|
||||
intel_dig_port->set_infoframes = vlv_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = vlv_infoframe_enabled;
|
||||
} else if (IS_G4X(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = g4x_write_infoframe;
|
||||
intel_dig_port->set_infoframes = g4x_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = g4x_infoframe_enabled;
|
||||
} else if (HAS_DDI(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = hsw_write_infoframe;
|
||||
intel_dig_port->set_infoframes = hsw_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = hsw_infoframe_enabled;
|
||||
} else if (HAS_PCH_IBX(dev_priv)) {
|
||||
intel_dig_port->write_infoframe = ibx_write_infoframe;
|
||||
intel_dig_port->set_infoframes = ibx_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = ibx_infoframe_enabled;
|
||||
} else {
|
||||
intel_dig_port->write_infoframe = cpt_write_infoframe;
|
||||
intel_dig_port->set_infoframes = cpt_set_infoframes;
|
||||
intel_dig_port->infoframe_enabled = cpt_infoframe_enabled;
|
||||
}
|
||||
|
||||
if (HAS_DDI(dev_priv))
|
||||
intel_connector->get_hw_state = intel_ddi_connector_get_hw_state;
|
||||
else
|
||||
@ -2116,5 +2122,7 @@ void intel_hdmi_init(struct drm_i915_private *dev_priv,
|
||||
intel_dig_port->dp.output_reg = INVALID_MMIO_REG;
|
||||
intel_dig_port->max_lanes = 4;
|
||||
|
||||
intel_infoframe_init(intel_dig_port);
|
||||
|
||||
intel_hdmi_init_connector(intel_dig_port, intel_connector);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user