drivers/gpu/drm/via/via_crtc.c | 56 ++++++++++++++--------------------------- drivers/gpu/drm/via/via_drv.h | 4 +- drivers/gpu/drm/via/via_fp.c | 8 +++++ 3 files changed, 30 insertions(+), 38 deletions(-)
New commits: commit 96830308ef5acbc2a74d799e4090ee8e444f778c Author: Kevin Brace <kevinbr...@gmx.com> Date: Thu Dec 29 10:55:07 2016 -0800 Version bumped to 3.0.8 This version contains a temporary fix to FP (Flat Panel) not turning off. Since it is a temporary fix, it may not work on all models. Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_drv.h b/drivers/gpu/drm/via/via_drv.h index dda8572..bc2ec5b 100644 --- a/drivers/gpu/drm/via/via_drv.h +++ b/drivers/gpu/drm/via/via_drv.h @@ -27,11 +27,11 @@ #define DRIVER_AUTHOR "The OpenChrome Project" #define DRIVER_NAME "via" #define DRIVER_DESC "OpenChrome DRM for VIA Technologies Chrome IGP" -#define DRIVER_DATE "20161227" +#define DRIVER_DATE "20161229" #define DRIVER_MAJOR 3 #define DRIVER_MINOR 0 -#define DRIVER_PATCHLEVEL 7 +#define DRIVER_PATCHLEVEL 8 #include <linux/module.h> commit eef95ac9abc2c715913a9acf421f615eaea29fb2 Author: Kevin Brace <kevinbr...@gmx.com> Date: Thu Dec 29 10:50:44 2016 -0800 Temporary fix to FP not turning off While this fix is not 100% satisfactory, this commit will fix the issue of FP (Flat Panel) not turning off. While there will have to be a more permanent fix to this issue, for now, it solves the issue for certain models. Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_fp.c b/drivers/gpu/drm/via/via_fp.c index c85c708..39158d6 100644 --- a/drivers/gpu/drm/via/via_fp.c +++ b/drivers/gpu/drm/via/via_fp.c @@ -125,6 +125,10 @@ via_enable_internal_lvds(struct drm_encoder *encoder) /* Back-Light ON */ svga_wcrt_mask(VGABASE, 0xD3, BIT(1), BIT(1)); } else { + /* Turn on panel path. */ + svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(5)); + /* Turn on back light. */ + svga_wcrt_mask(VGABASE, 0x91, 0x00, BIT(6)); /* Use hardware control power sequence. */ svga_wcrt_mask(VGABASE, 0xD3, 0x00, BIT(0)); /* Turn on back light and panel path. */ @@ -203,6 +207,10 @@ via_disable_internal_lvds(struct drm_encoder *encoder) svga_wcrt_mask(VGABASE, 0xD4, 0x00, BIT(1)); /* Turn off back light and panel path. */ svga_wcrt_mask(VGABASE, 0xD3, 0xC0, BIT(7) | BIT(6)); + /* Turn off back light. */ + svga_wcrt_mask(VGABASE, 0x91, BIT(6), BIT(6)); + /* Turn off panel path. */ + svga_wcrt_mask(VGABASE, 0x91, BIT(5), BIT(5)); } } commit 42f4cea6d6539b589696958dbedc8110553a444e Author: Kevin Brace <kevinbr...@gmx.com> Date: Thu Dec 29 10:46:48 2016 -0800 Removal of dead code from via_iga*_crtc_dpms Removed IGA1 code from via_iga2_crtc_dpms callback function and IGA2 code from via_iga1_crtc_dpms callback function. Signed-off-by: Kevin Brace <kevinbr...@gmx.com> diff --git a/drivers/gpu/drm/via/via_crtc.c b/drivers/gpu/drm/via/via_crtc.c index a4e16a6..344f30a 100644 --- a/drivers/gpu/drm/via/via_crtc.c +++ b/drivers/gpu/drm/via/via_crtc.c @@ -1055,29 +1055,21 @@ via_iga1_crtc_dpms(struct drm_crtc *crtc, int mode) case DRM_MODE_DPMS_OFF: if (crtc->dev->num_crtcs) drm_vblank_pre_modeset(crtc->dev, iga->index); - if (iga->index) { - /* turn off CRT screen (IGA2) */ - svga_wcrt_mask(VGABASE, 0x6B, BIT(2), BIT(2)); - /* clear for TV clock */ - svga_wcrt_mask(VGABASE, 0x6C, 0x00, 0x0F); - } else { - /* turn off CRT screen (IGA1) */ - svga_wseq_mask(VGABASE, 0x01, BIT(5), BIT(5)); - /* clear for TV clock */ - svga_wcrt_mask(VGABASE, 0x6C, 0x00, 0xF0); - } + + /* turn off CRT screen (IGA1) */ + svga_wseq_mask(VGABASE, 0x01, BIT(5), BIT(5)); + + /* clear for TV clock */ + svga_wcrt_mask(VGABASE, 0x6C, 0x00, 0xF0); break; case DRM_MODE_DPMS_ON: if (crtc->dev->num_crtcs) drm_vblank_post_modeset(crtc->dev, iga->index); - if (iga->index) { - /* turn on CRT screen (IGA2) */ - svga_wcrt_mask(VGABASE, 0x6B, 0x00, BIT(2)); - } else { - /* turn on CRT screen (IGA1) */ - svga_wseq_mask(VGABASE, 0x01, 0x00, BIT(5)); - } + + /* turn on CRT screen (IGA1) */ + svga_wseq_mask(VGABASE, 0x01, 0x00, BIT(5)); + /* disable simultaneous */ svga_wcrt_mask(VGABASE, 0x6B, 0x00, BIT(3)); drm_mode_crtc_load_lut(crtc); @@ -1347,29 +1339,21 @@ via_iga2_crtc_dpms(struct drm_crtc *crtc, int mode) case DRM_MODE_DPMS_OFF: if (crtc->dev->num_crtcs) drm_vblank_pre_modeset(crtc->dev, iga->index); - if (iga->index) { - /* turn off CRT screen (IGA2) */ - svga_wcrt_mask(VGABASE, 0x6B, BIT(2), BIT(2)); - /* clear for TV clock */ - svga_wcrt_mask(VGABASE, 0x6C, 0x00, 0x0F); - } else { - /* turn off CRT screen (IGA1) */ - svga_wseq_mask(VGABASE, 0x01, BIT(5), BIT(5)); - /* clear for TV clock */ - svga_wcrt_mask(VGABASE, 0x6C, 0x00, 0xF0); - } + + /* turn off CRT screen (IGA2) */ + svga_wcrt_mask(VGABASE, 0x6B, BIT(2), BIT(2)); + + /* clear for TV clock */ + svga_wcrt_mask(VGABASE, 0x6C, 0x00, 0x0F); break; case DRM_MODE_DPMS_ON: if (crtc->dev->num_crtcs) drm_vblank_post_modeset(crtc->dev, iga->index); - if (iga->index) { - /* turn on CRT screen (IGA2) */ - svga_wcrt_mask(VGABASE, 0x6B, 0x00, BIT(2)); - } else { - /* turn on CRT screen (IGA1) */ - svga_wseq_mask(VGABASE, 0x01, 0x00, BIT(5)); - } + + /* turn on CRT screen (IGA2) */ + svga_wcrt_mask(VGABASE, 0x6B, 0x00, BIT(2)); + /* disable simultaneous */ svga_wcrt_mask(VGABASE, 0x6B, 0x00, BIT(3)); drm_mode_crtc_load_lut(crtc); _______________________________________________ Openchrome-devel mailing list Openchrome-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/openchrome-devel