drivers/gpu/drm/via/via_crtc.c |   71 ++++++++++++++++++++++++++++++-----------
 drivers/gpu/drm/via/via_drv.h  |    4 +-
 2 files changed, 55 insertions(+), 20 deletions(-)

New commits:
commit eaa5af7662d4a776ad616e6f6544a0735f5130df
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Mon Nov 28 18:44:18 2016 -0800

    Version bumped to 3.0.2
    
    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 49deb8c..8c77b39 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         "VIA Technologies UniChrome / Chrome9"
-#define DRIVER_DATE         "20160927"
+#define DRIVER_DATE         "20161128"
 
 #define DRIVER_MAJOR           3
 #define DRIVER_MINOR           0
-#define DRIVER_PATCHLEVEL      1
+#define DRIVER_PATCHLEVEL      2
 
 #include <linux/module.h>
 
commit 4642b14bc80e03d88bbb36f46f360d5bc073ea81
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Mon Nov 28 18:41:32 2016 -0800

    Added viaIGA2SetColorDepth
    
    viaIGA2SetColorDepth function sets the color depth for IGA2.
    
    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 5d959e0..4594f8b 100644
--- a/drivers/gpu/drm/via/via_crtc.c
+++ b/drivers/gpu/drm/via/via_crtc.c
@@ -93,6 +93,49 @@ viaIGA1SetColorDepth(struct drm_via_private *dev_priv,
 }
 
 static void
+viaIGA2SetColorDepth(struct drm_via_private *dev_priv,
+                       u8 depth)
+{
+       u8 value;
+
+       DRM_DEBUG("Entered viaIGA2SetColorDepth.\n");
+
+       value = 0x00;
+
+       /* Set the color depth for IGA2. */
+       switch (depth) {
+       case 8:
+               break;
+       case 16:
+               value = BIT(6);
+               break;
+       case 24:
+       case 32:
+               value = BIT(7) | BIT(6);
+               break;
+       default:
+               break;
+       }
+
+       if ((depth == 8)
+               || (depth == 16)
+               || (depth == 24)
+               || (depth == 32)) {
+               /* 3X5.67[7:6] - Display Color Depth Select
+               *               00: 8bpp
+               *               01: 16bpp
+               *               10: 30bpp
+               *               11: 32bpp */
+               svga_wcrt_mask(VGABASE, 0x67, value, 0xC0);
+               DRM_INFO("IGA2 Color Depth: %d bit\n", depth);
+       } else {
+               DRM_ERROR("Unsupported IGA2 Color Depth: %d bit\n", depth);
+       }
+
+       DRM_DEBUG("Exiting viaIGA2SetColorDepth.\n");
+}
+
+static void
 via_hide_cursor(struct drm_crtc *crtc)
 {
        struct via_crtc *iga = container_of(crtc, struct via_crtc, base);
@@ -1292,7 +1335,16 @@ via_iga2_mode_set_base_atomic(struct drm_crtc *crtc, 
struct drm_framebuffer *fb,
        struct drm_via_private *dev_priv = crtc->dev->dev_private;
        struct drm_gem_object *obj = fb->helper_private;
        struct ttm_buffer_object *bo = ttm_gem_mapping(obj);
-       u8 value;
+
+       if ((fb->depth != 8)
+               && (fb->depth != 16)
+               && (fb->depth != 24)
+               && (fb->depth != 32)) {
+               DRM_ERROR("Unsupported IGA2 Color Depth: %d bit\n", fb->depth);
+               return -EINVAL;
+       }
+
+       viaIGA2SetColorDepth(dev_priv, fb->depth);
 
        /* Set the framebuffer offset */
        addr = round_up(bo->offset + pitch, 16);
@@ -1312,23 +1364,6 @@ via_iga2_mode_set_base_atomic(struct drm_crtc *crtc, 
struct drm_framebuffer *fb,
        pitch = ALIGN(fb->pitches[0], 16);
        load_value_to_registers(VGABASE, &iga->offset, pitch >> 3);
 
-       /* Load color depth registers */
-       switch (fb->depth) {
-       case 8:
-               value = 0x00;
-               break;
-       case 16:
-               value = BIT(6);
-               break;
-       case 24:
-       case 32:
-               value = BIT(7) | BIT(6);
-               break;
-       default:
-               DRM_ERROR("Unsupported depth: %d\n", fb->depth);
-               return -EINVAL;
-       }
-       svga_wcrt_mask(VGABASE, 0x67, value, BIT(7) | BIT(6));
        return 0;
 }
 
_______________________________________________
Openchrome-devel mailing list
Openchrome-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/openchrome-devel

Reply via email to