[Nouveau] [PATCHv2 4/6] drm/nouveau: Fix some bandwidth problems on nv11 with TV and VGA enabled.

Francisco Jerez currojerez at riseup.net
Mon Aug 17 08:24:21 PDT 2009


The VGA output was showing some flashing pixels when TV was enabled
and the pixel clock was high enough.

Signed-off-by: Francisco Jerez <currojerez at riseup.net>
---
 drivers/gpu/drm/nouveau/nouveau_calc.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/nouveau/nouveau_calc.c b/drivers/gpu/drm/nouveau/nouveau_calc.c
index e2b78d2..3f80db8 100644
--- a/drivers/gpu/drm/nouveau/nouveau_calc.c
+++ b/drivers/gpu/drm/nouveau/nouveau_calc.c
@@ -174,7 +174,7 @@ nv10CalcArbitration(struct nv_fifo_info *fifo, struct nv_sim_state *arb)
 	int us_m, us_m_min, us_n, us_p, crtc_drain_rate;
 	int vus_m;
 	int vpm_us, us_video, cpm_us, us_crt, clwm;
-	int clwm_rnd_down;
+	int clwm_rnd_down, min_clwm;
 	int m2us, us_pipe_min, p1clk, p2;
 	int min_mclk_extra;
 	int us_min_mclk_extra;
@@ -323,8 +323,12 @@ nv10CalcArbitration(struct nv_fifo_info *fifo, struct nv_sim_state *arb)
 				min_mclk_extra--;
 		}
 
-		if (clwm < (1024 - cbs + 8))
-			clwm = 1024 - cbs + 8;
+		/* This correction works around a slight snow effect
+		 * when the TV and VGA outputs are enabled simultaneously. */
+		min_clwm = 1024 - cbs + 128 * pclk_freq / 100000;
+		if (clwm < min_clwm)
+			clwm = min_clwm;
+
 		/*  printf("CRT LWM: prog: 0x%x, bs: 256\n", clwm); */
 		fifo->graphics_lwm = clwm;
 		fifo->graphics_burst_size = cbs;
-- 
1.6.3.3



More information about the Nouveau mailing list