drm/i915: don't intel_crt_init if DDI A has 4 lanes
DDI A and E have 4 lanes to share, so if DDI A is using 4 lanes, there's nothing left for DDI E, which means there's no CRT port on the machine. The bit we're checking here is programmed at system boot and it cannot be changed afterwards, so we cannot change the amount of lanes reserved for each DDI port. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Reviewed-by: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
17a303ec7c
commit
79935fca3f
|
@ -4515,6 +4515,7 @@
|
||||||
#define DDI_BUF_EMP_800MV_3_5DB_HSW (8<<24) /* Sel8 */
|
#define DDI_BUF_EMP_800MV_3_5DB_HSW (8<<24) /* Sel8 */
|
||||||
#define DDI_BUF_EMP_MASK (0xf<<24)
|
#define DDI_BUF_EMP_MASK (0xf<<24)
|
||||||
#define DDI_BUF_IS_IDLE (1<<7)
|
#define DDI_BUF_IS_IDLE (1<<7)
|
||||||
|
#define DDI_A_4_LANES (1<<4)
|
||||||
#define DDI_PORT_WIDTH_X1 (0<<1)
|
#define DDI_PORT_WIDTH_X1 (0<<1)
|
||||||
#define DDI_PORT_WIDTH_X2 (1<<1)
|
#define DDI_PORT_WIDTH_X2 (1<<1)
|
||||||
#define DDI_PORT_WIDTH_X4 (3<<1)
|
#define DDI_PORT_WIDTH_X4 (3<<1)
|
||||||
|
|
|
@ -8267,7 +8267,9 @@ static void intel_setup_outputs(struct drm_device *dev)
|
||||||
I915_WRITE(PFIT_CONTROL, 0);
|
I915_WRITE(PFIT_CONTROL, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
intel_crt_init(dev);
|
if (!(IS_HASWELL(dev) &&
|
||||||
|
(I915_READ(DDI_BUF_CTL(PORT_A)) & DDI_A_4_LANES)))
|
||||||
|
intel_crt_init(dev);
|
||||||
|
|
||||||
if (IS_HASWELL(dev)) {
|
if (IS_HASWELL(dev)) {
|
||||||
int found;
|
int found;
|
||||||
|
|
Loading…
Reference in New Issue