Loading drivers/gpu/drm/i915/intel_display.c +16 −1 Original line number Diff line number Diff line Loading @@ -2432,7 +2432,22 @@ static void intel_setup_outputs(struct drm_device *dev) intel_lvds_init(dev); if (IS_IGDNG(dev)) { /* ignore for other outputs */ int found; if (I915_READ(HDMIB) & PORT_DETECTED) { /* check SDVOB */ /* found = intel_sdvo_init(dev, HDMIB); */ found = 0; if (!found) intel_hdmi_init(dev, HDMIB); } if (I915_READ(HDMIC) & PORT_DETECTED) intel_hdmi_init(dev, HDMIC); if (I915_READ(HDMID) & PORT_DETECTED) intel_hdmi_init(dev, HDMID); } else if (IS_I9XX(dev)) { int found; u32 reg; Loading drivers/gpu/drm/i915/intel_hdmi.c +31 −2 Original line number Diff line number Diff line Loading @@ -56,7 +56,8 @@ static void intel_hdmi_mode_set(struct drm_encoder *encoder, sdvox = SDVO_ENCODING_HDMI | SDVO_BORDER_ENABLE | SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; SDVO_HSYNC_ACTIVE_HIGH | SDVO_NULL_PACKETS_DURING_VSYNC; if (hdmi_priv->has_hdmi_sink) sdvox |= SDVO_AUDIO_ENABLE; Loading Loading @@ -144,6 +145,22 @@ intel_hdmi_sink_detect(struct drm_connector *connector) } } static enum drm_connector_status igdng_hdmi_detect(struct drm_connector *connector) { struct intel_output *intel_output = to_intel_output(connector); struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; /* FIXME hotplug detect */ hdmi_priv->has_hdmi_sink = false; intel_hdmi_sink_detect(connector); if (hdmi_priv->has_hdmi_sink) return connector_status_connected; else return connector_status_disconnected; } static enum drm_connector_status intel_hdmi_detect(struct drm_connector *connector) { Loading @@ -153,6 +170,9 @@ intel_hdmi_detect(struct drm_connector *connector) struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; u32 temp, bit; if (IS_IGDNG(dev)) return igdng_hdmi_detect(connector); temp = I915_READ(PORT_HOTPLUG_EN); switch (hdmi_priv->sdvox_reg) { Loading Loading @@ -268,8 +288,17 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) /* Set up the DDC bus. */ if (sdvox_reg == SDVOB) intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB"); else else if (sdvox_reg == SDVOC) intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC"); else if (sdvox_reg == HDMIB) intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOE, "HDMIB"); else if (sdvox_reg == HDMIC) intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOD, "HDMIC"); else if (sdvox_reg == HDMID) intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOF, "HDMID"); if (!intel_output->ddc_bus) goto err_connector; Loading Loading
drivers/gpu/drm/i915/intel_display.c +16 −1 Original line number Diff line number Diff line Loading @@ -2432,7 +2432,22 @@ static void intel_setup_outputs(struct drm_device *dev) intel_lvds_init(dev); if (IS_IGDNG(dev)) { /* ignore for other outputs */ int found; if (I915_READ(HDMIB) & PORT_DETECTED) { /* check SDVOB */ /* found = intel_sdvo_init(dev, HDMIB); */ found = 0; if (!found) intel_hdmi_init(dev, HDMIB); } if (I915_READ(HDMIC) & PORT_DETECTED) intel_hdmi_init(dev, HDMIC); if (I915_READ(HDMID) & PORT_DETECTED) intel_hdmi_init(dev, HDMID); } else if (IS_I9XX(dev)) { int found; u32 reg; Loading
drivers/gpu/drm/i915/intel_hdmi.c +31 −2 Original line number Diff line number Diff line Loading @@ -56,7 +56,8 @@ static void intel_hdmi_mode_set(struct drm_encoder *encoder, sdvox = SDVO_ENCODING_HDMI | SDVO_BORDER_ENABLE | SDVO_VSYNC_ACTIVE_HIGH | SDVO_HSYNC_ACTIVE_HIGH; SDVO_HSYNC_ACTIVE_HIGH | SDVO_NULL_PACKETS_DURING_VSYNC; if (hdmi_priv->has_hdmi_sink) sdvox |= SDVO_AUDIO_ENABLE; Loading Loading @@ -144,6 +145,22 @@ intel_hdmi_sink_detect(struct drm_connector *connector) } } static enum drm_connector_status igdng_hdmi_detect(struct drm_connector *connector) { struct intel_output *intel_output = to_intel_output(connector); struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; /* FIXME hotplug detect */ hdmi_priv->has_hdmi_sink = false; intel_hdmi_sink_detect(connector); if (hdmi_priv->has_hdmi_sink) return connector_status_connected; else return connector_status_disconnected; } static enum drm_connector_status intel_hdmi_detect(struct drm_connector *connector) { Loading @@ -153,6 +170,9 @@ intel_hdmi_detect(struct drm_connector *connector) struct intel_hdmi_priv *hdmi_priv = intel_output->dev_priv; u32 temp, bit; if (IS_IGDNG(dev)) return igdng_hdmi_detect(connector); temp = I915_READ(PORT_HOTPLUG_EN); switch (hdmi_priv->sdvox_reg) { Loading Loading @@ -268,8 +288,17 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg) /* Set up the DDC bus. */ if (sdvox_reg == SDVOB) intel_output->ddc_bus = intel_i2c_create(dev, GPIOE, "HDMIB"); else else if (sdvox_reg == SDVOC) intel_output->ddc_bus = intel_i2c_create(dev, GPIOD, "HDMIC"); else if (sdvox_reg == HDMIB) intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOE, "HDMIB"); else if (sdvox_reg == HDMIC) intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOD, "HDMIC"); else if (sdvox_reg == HDMID) intel_output->ddc_bus = intel_i2c_create(dev, PCH_GPIOF, "HDMID"); if (!intel_output->ddc_bus) goto err_connector; Loading