diff --git a/drivers/gpu/drm/nouveau/nv04_dac.c b/drivers/gpu/drm/nouveau/nv04_dac.c index 1cb19e3..3ffbd84 100644 --- a/drivers/gpu/drm/nouveau/nv04_dac.c +++ b/drivers/gpu/drm/nouveau/nv04_dac.c @@ -239,6 +239,10 @@ uint32_t nv17_dac_sample_load(struct drm_encoder *encoder) testval = dev_priv->vbios.dactestval; } + nv_wr32(dev, 0x00680614, 0x1f232323); + nv_wr32(dev, 0x00001084, 0x00205749); + nv_wr32(dev, 0x00001588, 0x00800000); + saved_rtest_ctrl = NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset); NVWriteRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset, saved_rtest_ctrl & ~NV_PRAMDAC_TEST_CONTROL_PWRDWN_DAC_OFF); @@ -260,7 +264,7 @@ uint32_t nv17_dac_sample_load(struct drm_encoder *encoder) msleep(4); saved_routput = NVReadRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + regoffset); - head = (saved_routput & 0x100) >> 8; + head = 1; #if 0 /* if there's a spare crtc, using it will minimise flicker for the case * where the in-use crtc is in use by an off-chip tmds encoder */ @@ -270,13 +274,16 @@ uint32_t nv17_dac_sample_load(struct drm_encoder *encoder) /* nv driver and nv31 use 0xfffffeee, nv34 and 6600 use 0xfffffece */ routput = (saved_routput & 0xfffffece) | head << 8; - if (dev_priv->card_type >= NV_40) { + if (dev_priv->card_type >= NV_40 && 0) { if (dcb->type == OUTPUT_TV) routput |= 0x1a << 16; else routput &= ~(0x1a << 16); } + nv_wr32(dev, 0x00682614, 0x1fbfbfbf); + nv_wr32(dev, 0x00682628, 0x00004013); + NVWriteRAMDAC(dev, 0, NV_PRAMDAC_DACCLK + regoffset, routput); msleep(1); @@ -288,7 +295,7 @@ uint32_t nv17_dac_sample_load(struct drm_encoder *encoder) temp = NVReadRAMDAC(dev, head, NV_PRAMDAC_TEST_CONTROL); NVWriteRAMDAC(dev, head, NV_PRAMDAC_TEST_CONTROL, temp | NV_PRAMDAC_TEST_CONTROL_TP_INS_EN_ASSERTED); - msleep(5); + msleep(12); sample = NVReadRAMDAC(dev, 0, NV_PRAMDAC_TEST_CONTROL + regoffset);