|
@@ -41,6 +41,7 @@ struct intel_hdmi {
|
|
|
struct intel_encoder base;
|
|
|
u32 sdvox_reg;
|
|
|
int ddc_bus;
|
|
|
+ int ddi_port;
|
|
|
uint32_t color_range;
|
|
|
bool has_hdmi_sink;
|
|
|
bool has_audio;
|
|
@@ -661,6 +662,24 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
|
|
|
intel_encoder->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT);
|
|
|
intel_hdmi->ddc_bus = GMBUS_PORT_DPD;
|
|
|
dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS;
|
|
|
+ } else if (sdvox_reg == DDI_BUF_CTL(PORT_B)) {
|
|
|
+ DRM_DEBUG_DRIVER("LPT: detected output on DDI B\n");
|
|
|
+ intel_encoder->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT);
|
|
|
+ intel_hdmi->ddc_bus = GMBUS_PORT_DPB;
|
|
|
+ intel_hdmi->ddi_port = PORT_B;
|
|
|
+ dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS;
|
|
|
+ } else if (sdvox_reg == DDI_BUF_CTL(PORT_C)) {
|
|
|
+ DRM_DEBUG_DRIVER("LPT: detected output on DDI C\n");
|
|
|
+ intel_encoder->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT);
|
|
|
+ intel_hdmi->ddc_bus = GMBUS_PORT_DPC;
|
|
|
+ intel_hdmi->ddi_port = PORT_C;
|
|
|
+ dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS;
|
|
|
+ } else if (sdvox_reg == DDI_BUF_CTL(PORT_D)) {
|
|
|
+ DRM_DEBUG_DRIVER("LPT: detected output on DDI D\n");
|
|
|
+ intel_encoder->clone_mask = (1 << INTEL_HDMID_CLONE_BIT);
|
|
|
+ intel_hdmi->ddc_bus = GMBUS_PORT_DPD;
|
|
|
+ intel_hdmi->ddi_port = PORT_D;
|
|
|
+ dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS;
|
|
|
} else {
|
|
|
/* If we got an unknown sdvox_reg, things are pretty much broken
|
|
|
* in a way that we should let the kernel know about it */
|