diff --git a/src/i830.h b/src/i830.h index a69f47c..d085490 100644 --- a/src/i830.h +++ b/src/i830.h @@ -201,7 +201,8 @@ typedef struct { #define I830_OUTPUT_SDVO 5 #define I830_OUTPUT_LVDS 6 #define I830_OUTPUT_TVOUT 7 -#define I830_OUTPUT_HDMI 8 +#define I830_OUTPUT_HDMIB 8 +#define I830_OUTPUT_HDMIC 9 struct _I830DVODriver { int type; diff --git a/src/i830_display.c b/src/i830_display.c index a7eafb9..b9346c5 100644 --- a/src/i830_display.c +++ b/src/i830_display.c @@ -418,7 +418,8 @@ static const intel_limit_t *intel_limit_g4x (xf86CrtcPtr crtc) limit = &intel_limits[INTEL_LIMIT_G4X_DUAL_LVDS]; } else /* LVDS with single channel */ limit = &intel_limits[INTEL_LIMIT_G4X_SINGLE_LVDS]; - } else if (i830PipeHasType (crtc, I830_OUTPUT_HDMI) || + } else if (i830PipeHasType (crtc, I830_OUTPUT_HDMIB) || + i830PipeHasType (crtc, I830_OUTPUT_HDMIC) || i830PipeHasType (crtc, I830_OUTPUT_ANALOG)) { limit = &intel_limits[INTEL_LIMIT_G4X_HDMI_DAC]; } else if (i830PipeHasType (crtc, I830_OUTPUT_SDVO)) { @@ -1535,7 +1536,8 @@ i830_crtc_mode_set(xf86CrtcPtr crtc, DisplayModePtr mode, lvds_bits = intel_output->lvds_bits; break; case I830_OUTPUT_SDVO: - case I830_OUTPUT_HDMI: + case I830_OUTPUT_HDMIB: + case I830_OUTPUT_HDMIC: is_sdvo = TRUE; if (intel_output->needs_tv_clock) is_tv = TRUE; diff --git a/src/i830_driver.c b/src/i830_driver.c index 9d38fba..069bf29 100644 --- a/src/i830_driver.c +++ b/src/i830_driver.c @@ -743,6 +743,8 @@ I830SetupOutputs(ScrnInfoPtr pScrn) } output->possible_crtcs = crtc_mask; output->possible_clones = i830_output_clones (pScrn, intel_output->clone_mask); + xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "possible clones of output %s is %x ", + output->name,output->possible_clones); } } diff --git a/src/i830_hdmi.c b/src/i830_hdmi.c index 0abb151..b546f25 100644 --- a/src/i830_hdmi.c +++ b/src/i830_hdmi.c @@ -344,16 +344,18 @@ i830_hdmi_init(ScrnInfoPtr pScrn, int output_reg) dev_priv->has_hdmi_sink = FALSE; intel_output->dev_priv = dev_priv; - intel_output->type = I830_OUTPUT_HDMI; intel_output->pipe_mask = ((1 << 0) | (1 << 1)); - intel_output->clone_mask = (1 << I830_OUTPUT_HDMI); /* Set up the DDC bus. */ - if (output_reg == SDVOB) + if (output_reg == SDVOB) { + intel_output->type = I830_OUTPUT_HDMIB; + intel_output->clone_mask = (1 << I830_OUTPUT_HDMIB); I830I2CInit(pScrn, &intel_output->pDDCBus, GPIOE, "HDMIDDC_B"); - else + } else { + intel_output->type = I830_OUTPUT_HDMIC; + intel_output->clone_mask = (1 << I830_OUTPUT_HDMIC); I830I2CInit(pScrn, &intel_output->pDDCBus, GPIOD, "HDMIDDC_C"); - + } xf86DrvMsg(pScrn->scrnIndex, X_INFO, "HDMI output %d detected\n", (output_reg == SDVOB) ? 1 : 2);