|
@@ -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);
|
|
|
}
|