[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