The VGA output was showing some flashing pixels when TV was enabled and the pixel clock was high enough.
Signed-off-by: Francisco Jerez <[email protected]> --- 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 _______________________________________________ Nouveau mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/nouveau
