| From d3922b69617b62bb2509936b68301f837229d9f0 Mon Sep 17 00:00:00 2001 |
| From: Mathieu Larouche <mathieu.larouche@matrox.com> |
| Date: Fri, 27 May 2016 15:12:50 -0400 |
| Subject: drm/mgag200: Black screen fix for G200e rev 4 |
| |
| From: Mathieu Larouche <mathieu.larouche@matrox.com> |
| |
| commit d3922b69617b62bb2509936b68301f837229d9f0 upstream. |
| |
| - Fixed black screen for some resolutions of G200e rev4 |
| - Fixed testm & testn which had predetermined value. |
| |
| Reported-by: Jan Beulich <jbeulich@suse.com> |
| |
| Signed-off-by: Mathieu Larouche <mathieu.larouche@matrox.com> |
| Signed-off-by: Dave Airlie <airlied@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/mgag200/mgag200_mode.c | 10 +++++++++- |
| 1 file changed, 9 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/mgag200/mgag200_mode.c |
| +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c |
| @@ -194,7 +194,7 @@ static int mga_g200se_set_plls(struct mg |
| } |
| } |
| |
| - fvv = pllreffreq * testn / testm; |
| + fvv = pllreffreq * (n + 1) / (m + 1); |
| fvv = (fvv - 800000) / 50000; |
| |
| if (fvv > 15) |
| @@ -214,6 +214,14 @@ static int mga_g200se_set_plls(struct mg |
| WREG_DAC(MGA1064_PIX_PLLC_M, m); |
| WREG_DAC(MGA1064_PIX_PLLC_N, n); |
| WREG_DAC(MGA1064_PIX_PLLC_P, p); |
| + |
| + if (mdev->unique_rev_id >= 0x04) { |
| + WREG_DAC(0x1a, 0x09); |
| + msleep(20); |
| + WREG_DAC(0x1a, 0x01); |
| + |
| + } |
| + |
| return 0; |
| } |
| |