drivers/gpu/drm/openchrome/openchrome_crtc.c    |  341 +++++++++++-------------
 drivers/gpu/drm/openchrome/openchrome_display.h |  213 --------------
 drivers/gpu/drm/openchrome/openchrome_drv.h     |  185 ++++++++++++-
 3 files changed, 348 insertions(+), 391 deletions(-)

New commits:
commit a2dc9d30e7a1e0c60f3e5814b18d17a769a76ed3
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Fri Oct 18 09:15:34 2019 -0700

    drm/openchrome: Move cursor memory allocation code inside openchrome_crtc.c
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c 
b/drivers/gpu/drm/openchrome/openchrome_crtc.c
index 726b391917fb..21604c3b99ed 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -2303,6 +2303,22 @@ int via_crtc_init(struct drm_device *dev, uint32_t index)
                goto cleanup_cursor;
        }
 
+       if (dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266 ||
+               dev->pdev->device == PCI_DEVICE_ID_VIA_KM400)
+               cursor_size = 32 * 32 * 4;
+
+       ret = openchrome_bo_create(dev,
+                                       &dev_private->bdev,
+                                       cursor_size,
+                                       ttm_bo_type_kernel,
+                                       TTM_PL_FLAG_VRAM,
+                                       true,
+                                       &iga->cursor_bo);
+       if (ret) {
+               DRM_ERROR("Failed to create cursor.\n");
+               goto cleanup_cursor;
+       }
+
        if (iga->index) {
                iga->timings.htotal.count = ARRAY_SIZE(iga2_hor_total);
                iga->timings.htotal.regs = iga2_hor_total;
@@ -2462,22 +2478,6 @@ int via_crtc_init(struct drm_device *dev, uint32_t index)
                gamma[i + 512] = i << 8 | i;
        }
 
-       if (dev->pdev->device == PCI_DEVICE_ID_VIA_CLE266
-                       || dev->pdev->device == PCI_DEVICE_ID_VIA_KM400)
-               cursor_size = 32 * 32 * 4;
-
-       ret = openchrome_bo_create(dev,
-                                       &dev_private->bdev,
-                                       cursor_size,
-                                       ttm_bo_type_kernel,
-                                       TTM_PL_FLAG_VRAM,
-                                       true,
-                                       &iga->cursor_bo);
-       if (ret) {
-               DRM_ERROR("Failed to create cursor.\n");
-               goto cleanup_cursor;
-       }
-
        goto exit;
 cleanup_cursor:
        drm_plane_cleanup(cursor);
commit 44e52b0e3a128fc726641f862b62b081ad30848e
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Fri Oct 18 09:14:55 2019 -0700

    drm/openchrome: Consolidate drm_crtc_funcs struct
    
    This simplifies the code.
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c 
b/drivers/gpu/drm/openchrome/openchrome_crtc.c
index dbadb67ffb16..726b391917fb 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -321,13 +321,7 @@ static void openchrome_crtc_destroy(struct drm_crtc *crtc)
        drm_crtc_cleanup(crtc);
 }
 
-static const struct drm_crtc_funcs openchrome_iga1_drm_crtc_funcs = {
-       .gamma_set = openchrome_gamma_set,
-       .set_config = drm_crtc_helper_set_config,
-       .destroy = openchrome_crtc_destroy,
-};
-
-static const struct drm_crtc_funcs openchrome_iga2_drm_crtc_funcs = {
+static const struct drm_crtc_funcs openchrome_drm_crtc_funcs = {
        .gamma_set = openchrome_gamma_set,
        .set_config = drm_crtc_helper_set_config,
        .destroy = openchrome_crtc_destroy,
@@ -2296,19 +2290,14 @@ int via_crtc_init(struct drm_device *dev, uint32_t 
index)
        if (iga->index) {
                drm_crtc_helper_add(crtc,
                        &openchrome_iga2_drm_crtc_helper_funcs);
-               ret = drm_crtc_init_with_planes(dev, crtc,
-                               primary, cursor,
-                               &openchrome_iga2_drm_crtc_funcs,
-                               NULL);
        } else {
                drm_crtc_helper_add(crtc,
                        &openchrome_iga1_drm_crtc_helper_funcs);
-               ret = drm_crtc_init_with_planes(dev, crtc,
-                               primary, cursor,
-                               &openchrome_iga1_drm_crtc_funcs,
-                               NULL);
        }
 
+       ret = drm_crtc_init_with_planes(dev, crtc, primary, cursor,
+                                       &openchrome_drm_crtc_funcs,
+                                       NULL);
        if (ret) {
                DRM_ERROR("Failed to initialize CRTC!\n");
                goto cleanup_cursor;
commit 252206688aec851a7a066256e63bc7ce75993e7a
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Fri Oct 18 09:14:39 2019 -0700

    drm/openchrome: Rename via_crtc_destroy() to openchrome_crtc_destroy()
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c 
b/drivers/gpu/drm/openchrome/openchrome_crtc.c
index 80f13fb95cb0..dbadb67ffb16 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -309,7 +309,7 @@ static void via_iga2_set_color_depth(
        DRM_DEBUG_KMS("Exiting %s.\n", __func__);
 }
 
-static void via_crtc_destroy(struct drm_crtc *crtc)
+static void openchrome_crtc_destroy(struct drm_crtc *crtc)
 {
        struct via_crtc *iga = container_of(crtc, struct via_crtc, base);
 
@@ -324,13 +324,13 @@ static void via_crtc_destroy(struct drm_crtc *crtc)
 static const struct drm_crtc_funcs openchrome_iga1_drm_crtc_funcs = {
        .gamma_set = openchrome_gamma_set,
        .set_config = drm_crtc_helper_set_config,
-       .destroy = via_crtc_destroy,
+       .destroy = openchrome_crtc_destroy,
 };
 
 static const struct drm_crtc_funcs openchrome_iga2_drm_crtc_funcs = {
        .gamma_set = openchrome_gamma_set,
        .set_config = drm_crtc_helper_set_config,
-       .destroy = via_crtc_destroy,
+       .destroy = openchrome_crtc_destroy,
 };
 
 static void via_load_vpit_regs(
commit f223e7a982c8157a49164ddc326ec7d3cc6bf684
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Fri Oct 18 09:14:09 2019 -0700

    drm/openchrome: Merge gamma settings code into openchrome_gamma_set()
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_crtc.c 
b/drivers/gpu/drm/openchrome/openchrome_crtc.c
index 4249cc9910e5..80f13fb95cb0 100644
--- a/drivers/gpu/drm/openchrome/openchrome_crtc.c
+++ b/drivers/gpu/drm/openchrome/openchrome_crtc.c
@@ -62,6 +62,147 @@ static struct vga_regset vpit_table[] = {
        {VGA_GFX_I, 0x08, 0xFF, 0xFF }
 };
 
+static int openchrome_gamma_set(struct drm_crtc *crtc,
+                               u16 *r, u16 *g, u16 *b,
+                               uint32_t size,
+                               struct drm_modeset_acquire_ctx *ctx)
+{
+       struct via_crtc *iga = container_of(crtc,
+                                               struct via_crtc, base);
+       struct openchrome_drm_private *dev_private =
+                                               crtc->dev->dev_private;
+       int end = (size > 256) ? 256 : size, i;
+       u8 val = 0, sr1a = vga_rseq(VGABASE, 0x1A);
+
+       if (!crtc->enabled || !crtc->primary->fb)
+               return -EINVAL;
+
+       if (iga->index) {
+               if (crtc->primary->fb->format->cpp[0] * 8 == 8) {
+                       /* Prepare for initialize IGA1's LUT: */
+                       vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
+                       /* Change to Primary Display's LUT */
+                       val = vga_rseq(VGABASE, 0x1B);
+                       vga_wseq(VGABASE, 0x1B, val);
+                       val = vga_rcrt(VGABASE, 0x67);
+                       vga_wcrt(VGABASE, 0x67, val);
+
+                       /* Fill in IGA1's LUT */
+                       for (i = 0; i < end; i++) {
+                               /* Bit mask of palette */
+                               vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
+                               vga_w(VGABASE, VGA_PEL_IW, i);
+                               vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
+                       }
+                       /* enable LUT */
+                       svga_wseq_mask(VGABASE, 0x1B, 0x00, BIT(0));
+                       /*
+                        * Disable gamma in case it was enabled
+                        * previously
+                        */
+                       svga_wcrt_mask(VGABASE, 0x33, 0x00, BIT(7));
+                       /* access Primary Display's LUT */
+                       vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
+               } else {
+                       /* Enable Gamma */
+                       svga_wcrt_mask(VGABASE, 0x33, BIT(7), BIT(7));
+                       svga_wseq_mask(VGABASE, 0x1A, 0x00, BIT(0));
+
+                       /* Fill in IGA1's gamma */
+                       for (i = 0; i < end; i++) {
+                               /* bit mask of palette */
+                               vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
+                               vga_w(VGABASE, VGA_PEL_IW, i);
+                               vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
+                       }
+                       vga_wseq(VGABASE, 0x1A, sr1a);
+               }
+       } else {
+               if (crtc->primary->fb->format->cpp[0] * 8 == 8) {
+                       /* Change Shadow to Secondary Display's LUT */
+                       svga_wseq_mask(VGABASE, 0x1A, BIT(0), BIT(0));
+                       /* Enable Secondary Display Engine */
+                       svga_wseq_mask(VGABASE, 0x1B, BIT(7), BIT(7));
+                       /* Second Display Color Depth, 8bpp */
+                       svga_wcrt_mask(VGABASE, 0x67, 0x3F, 0x3F);
+
+                       /*
+                        * Enable second display channel just in case.
+                        */
+                       if (!(vga_rcrt(VGABASE, 0x6A) & BIT(7)))
+                               enable_second_display_channel(VGABASE);
+
+                       /* Fill in IGA2's LUT */
+                       for (i = 0; i < end; i++) {
+                               /* Bit mask of palette */
+                               vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
+                               vga_w(VGABASE, VGA_PEL_IW, i);
+                               vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
+                       }
+                       /*
+                        * Disable gamma in case it was enabled
+                        * previously
+                        */
+                       svga_wcrt_mask(VGABASE, 0x6A, 0x00, BIT(1));
+
+                       /* access Primary Display's LUT */
+                       vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
+               } else {
+                       u8 reg_bits = BIT(1);
+
+                       svga_wseq_mask(VGABASE, 0x1A, BIT(0), BIT(0));
+                       /* Bit 1 enables gamma */
+                       svga_wcrt_mask(VGABASE, 0x6A, BIT(1), BIT(1));
+
+                       /* Old platforms LUT are 6 bits in size.
+                        * Newer it is 8 bits. */
+                       switch (crtc->dev->pdev->device) {
+                       case PCI_DEVICE_ID_VIA_CLE266:
+                       case PCI_DEVICE_ID_VIA_KM400:
+                       case PCI_DEVICE_ID_VIA_K8M800:
+                       case PCI_DEVICE_ID_VIA_PM800:
+                               break;
+
+                       default:
+                               reg_bits |= BIT(5);
+                               break;
+                       }
+                       svga_wcrt_mask(VGABASE, 0x6A, reg_bits,
+                                       reg_bits);
+
+                       /*
+                        * Before we fill the second LUT, we have to
+                        * enable second display channel. If it's
+                        * enabled before, we don't need to do that,
+                        * or else the secondary display will be dark
+                        * for about 1 sec and then be turned on
+                        * again.
+                        */
+                       if (!(vga_rcrt(VGABASE, 0x6A) & BIT(7)))
+                               enable_second_display_channel(VGABASE);
+
+                       /* Fill in IGA2's gamma */
+                       for (i = 0; i < end; i++) {
+                               /* bit mask of palette */
+                               vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
+                               vga_w(VGABASE, VGA_PEL_IW, i);
+                               vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
+                               vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
+                       }
+                       /* access Primary Display's LUT */
+                       vga_wseq(VGABASE, 0x1A, sr1a);
+               }
+       }
+       return 0;
+}
+
 static void via_iga_common_init(void __iomem *regs)
 {
        DRM_DEBUG_KMS("Entered %s.\n", __func__);
@@ -168,149 +309,6 @@ static void via_iga2_set_color_depth(
        DRM_DEBUG_KMS("Exiting %s.\n", __func__);
 }
 
-static int via_iga1_gamma_set(struct drm_crtc *crtc,
-                               u16 *r, u16 *g, u16 *b,
-                               uint32_t size,
-                               struct drm_modeset_acquire_ctx *ctx)
-{
-       struct openchrome_drm_private *dev_private =
-                                               crtc->dev->dev_private;
-       int end = (size > 256) ? 256 : size, i;
-       u8 val, sr1a = vga_rseq(VGABASE, 0x1A);
-
-       if (!crtc->enabled || !crtc->primary->fb)
-               return -EINVAL;
-
-       if (crtc->primary->fb->format->cpp[0] * 8 == 8) {
-               /* Prepare for initialize IGA1's LUT: */
-               vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
-               /* Change to Primary Display's LUT */
-               val = vga_rseq(VGABASE, 0x1B);
-               vga_wseq(VGABASE, 0x1B, val);
-               val = vga_rcrt(VGABASE, 0x67);
-               vga_wcrt(VGABASE, 0x67, val);
-
-               /* Fill in IGA1's LUT */
-               for (i = 0; i < end; i++) {
-                       /* Bit mask of palette */
-                       vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
-                       vga_w(VGABASE, VGA_PEL_IW, i);
-                       vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
-               }
-               /* enable LUT */
-               svga_wseq_mask(VGABASE, 0x1B, 0x00, BIT(0));
-               /* Disable gamma in case it was enabled previously */
-               svga_wcrt_mask(VGABASE, 0x33, 0x00, BIT(7));
-               /* access Primary Display's LUT */
-               vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
-       } else {
-               /* Enable Gamma */
-               svga_wcrt_mask(VGABASE, 0x33, BIT(7), BIT(7));
-               svga_wseq_mask(VGABASE, 0x1A, 0x00, BIT(0));
-
-               /* Fill in IGA1's gamma */
-               for (i = 0; i < end; i++) {
-                       /* bit mask of palette */
-                       vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
-                       vga_w(VGABASE, VGA_PEL_IW, i);
-                       vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
-               }
-               vga_wseq(VGABASE, 0x1A, sr1a);
-       }
-
-       return 0;
-}
-
-static int via_iga2_gamma_set(struct drm_crtc *crtc,
-                               u16 *r, u16 *g, u16 *b,
-                               uint32_t size,
-                               struct drm_modeset_acquire_ctx *ctx)
-{
-       struct openchrome_drm_private *dev_private =
-                                               crtc->dev->dev_private;
-       int end = (size > 256) ? 256 : size, i;
-       u8 sr1a = vga_rseq(VGABASE, 0x1A);
-
-       if (!crtc->enabled || !crtc->primary->fb)
-               return -EINVAL;
-
-       if (crtc->primary->fb->format->cpp[0] * 8 == 8) {
-               /* Change Shadow to Secondary Display's LUT */
-               svga_wseq_mask(VGABASE, 0x1A, BIT(0), BIT(0));
-               /* Enable Secondary Display Engine */
-               svga_wseq_mask(VGABASE, 0x1B, BIT(7), BIT(7));
-               /* Second Display Color Depth, 8bpp */
-               svga_wcrt_mask(VGABASE, 0x67, 0x3F, 0x3F);
-
-               /* Enable second display channel just in case. */
-               if (!(vga_rcrt(VGABASE, 0x6A) & BIT(7)))
-                       enable_second_display_channel(VGABASE);
-
-               /* Fill in IGA2's LUT */
-               for (i = 0; i < end; i++) {
-                       /* Bit mask of palette */
-                       vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
-                       vga_w(VGABASE, VGA_PEL_IW, i);
-                       vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
-               }
-               /* Disable gamma in case it was enabled previously */
-               svga_wcrt_mask(VGABASE, 0x6A, 0x00, BIT(1));
-
-               /* access Primary Display's LUT */
-               vga_wseq(VGABASE, 0x1A, sr1a & 0xFE);
-       } else {
-               u8 reg_bits = BIT(1);
-
-               svga_wseq_mask(VGABASE, 0x1A, BIT(0), BIT(0));
-               /* Bit 1 enables gamma */
-               svga_wcrt_mask(VGABASE, 0x6A, BIT(1), BIT(1));
-
-               /* Old platforms LUT are 6 bits in size.
-                * Newer it is 8 bits. */
-               switch (crtc->dev->pdev->device) {
-               case PCI_DEVICE_ID_VIA_CLE266:
-               case PCI_DEVICE_ID_VIA_KM400:
-               case PCI_DEVICE_ID_VIA_K8M800:
-               case PCI_DEVICE_ID_VIA_PM800:
-                       break;
-
-               default:
-                       reg_bits |= BIT(5);
-                       break;
-               }
-               svga_wcrt_mask(VGABASE, 0x6A, reg_bits, reg_bits);
-
-               /* Before we fill the second LUT, we have to enable
-                * second display channel. If it's enabled before,
-                * we don't need to do that, or else the secondary
-                * display will be dark for about 1 sec and then be
-                * turned on again.
-                */
-               if (!(vga_rcrt(VGABASE, 0x6A) & BIT(7)))
-                       enable_second_display_channel(VGABASE);
-
-               /* Fill in IGA2's gamma */
-               for (i = 0; i < end; i++) {
-                       /* bit mask of palette */
-                       vga_w(VGABASE, VGA_PEL_MSK, 0xFF);
-                       vga_w(VGABASE, VGA_PEL_IW, i);
-                       vga_w(VGABASE, VGA_PEL_D, r[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, g[i] >> 8);
-                       vga_w(VGABASE, VGA_PEL_D, b[i] >> 8);
-               }
-               /* access Primary Display's LUT */
-               vga_wseq(VGABASE, 0x1A, sr1a);
-       }
-
-       return 0;
-}
-
 static void via_crtc_destroy(struct drm_crtc *crtc)
 {
        struct via_crtc *iga = container_of(crtc, struct via_crtc, base);
@@ -324,13 +322,13 @@ static void via_crtc_destroy(struct drm_crtc *crtc)
 }
 
 static const struct drm_crtc_funcs openchrome_iga1_drm_crtc_funcs = {
-       .gamma_set = via_iga1_gamma_set,
+       .gamma_set = openchrome_gamma_set,
        .set_config = drm_crtc_helper_set_config,
        .destroy = via_crtc_destroy,
 };
 
 static const struct drm_crtc_funcs openchrome_iga2_drm_crtc_funcs = {
-       .gamma_set = via_iga2_gamma_set,
+       .gamma_set = openchrome_gamma_set,
        .set_config = drm_crtc_helper_set_config,
        .destroy = via_crtc_destroy,
 };
commit ed30a7402741939cb07dc640cbc736aeb4be8599
Author: Kevin Brace <kevinbr...@gmx.com>
Date:   Fri Oct 18 09:13:36 2019 -0700

    drm/openchrome: Discontinue openchrome_display.h
    
    The code was moved into openchrome_drv.h.
    
    Signed-off-by: Kevin Brace <kevinbr...@gmx.com>

diff --git a/drivers/gpu/drm/openchrome/openchrome_display.h 
b/drivers/gpu/drm/openchrome/openchrome_display.h
deleted file mode 100644
index faff26f2b30d..000000000000
--- a/drivers/gpu/drm/openchrome/openchrome_display.h
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright 2012 James Simmons <jsimm...@infradead.org> All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sub license,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHOR(S) OR COPYRIGHT HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-#ifndef _VIA_DISPLAY_H_
-#define _VIA_DISPLAY_H_
-
-#include <linux/pci.h>
-#include <linux/pci_ids.h>
-
-#include <video/vga.h>
-
-#include <drm/drm_crtc.h>
-#include <drm/drm_crtc_helper.h>
-#include <drm/drm_edid.h>
-#include <drm/drm_fb_helper.h>
-#include <drm/drm_plane_helper.h>
-
-#include "openchrome_crtc_hw.h"
-
-
-/* IGA Scaling disable */
-#define VIA_NO_SCALING 0
-
-/* IGA Scaling down */
-#define VIA_HOR_SHRINK BIT(0)
-#define VIA_VER_SHRINK BIT(1)
-#define VIA_SHRINK     (BIT(0) | BIT(1))
-
-/* IGA Scaling up */
-#define VIA_HOR_EXPAND BIT(2)
-#define VIA_VER_EXPAND BIT(3)
-#define VIA_EXPAND     (BIT(2) | BIT(3))
-
-/* Define IGA Scaling up/down status :  Horizontal or Vertical  */
-/* Is IGA Hor scaling up/down status */
-#define        HOR_SCALE       BIT(0)
-/* Is IGA Ver scaling up/down status */
-#define        VER_SCALE       BIT(1)
-/* Is IGA Hor and Ver scaling up/down status */
-#define        HOR_VER_SCALE   (BIT(0) | BIT(1))
-
-#define        VIA_I2C_NONE    0x0
-#define        VIA_I2C_BUS1    BIT(0)
-#define        VIA_I2C_BUS2    BIT(1)
-#define        VIA_I2C_BUS3    BIT(2)
-#define        VIA_I2C_BUS4    BIT(3)
-#define        VIA_I2C_BUS5    BIT(4)
-
-#define VIA_DI_PORT_NONE       0x0
-#define VIA_DI_PORT_DIP0       BIT(0)
-#define VIA_DI_PORT_DIP1       BIT(1)
-#define VIA_DI_PORT_DVP0       BIT(2)
-#define VIA_DI_PORT_DVP1       BIT(3)
-#define VIA_DI_PORT_DFPL       BIT(4)
-#define VIA_DI_PORT_FPDPLOW    BIT(4)
-#define VIA_DI_PORT_DFPH       BIT(5)
-#define VIA_DI_PORT_FPDPHIGH   BIT(5)
-#define VIA_DI_PORT_DFP                BIT(6)
-#define VIA_DI_PORT_LVDS1      BIT(7)
-#define VIA_DI_PORT_TMDS       BIT(7)
-#define VIA_DI_PORT_LVDS2      BIT(8)
-
-/* External TMDS (DVI) Transmitter Type */
-#define        VIA_TMDS_NONE   0x0
-#define        VIA_TMDS_VT1632 BIT(0)
-#define        VIA_TMDS_SII164 BIT(1)
-
-
-typedef struct _via_fp_info {
-       u32 x;
-       u32 y;
-} via_fp_info;
-
-struct via_crtc {
-       struct drm_crtc base;
-       struct openchrome_bo *cursor_bo;
-       struct crtc_timings pixel_timings;
-       struct crtc_timings timings;
-       struct vga_registers display_queue;
-       struct vga_registers high_threshold;
-       struct vga_registers threshold;
-       struct vga_registers fifo_depth;
-       struct vga_registers offset;
-       struct vga_registers fetch;
-       int scaling_mode;
-       uint8_t index;
-};
-
-struct via_connector {
-       struct drm_connector base;
-       u32 i2c_bus;
-       struct list_head props;
-       uint32_t flags;
-};
-
-struct via_encoder {
-       struct drm_encoder base;
-       u32 i2c_bus;
-       u32 di_port;
-       struct via_connector cons[];
-};
-
-static inline void
-via_lock_crtc(void __iomem *regs)
-{
-       svga_wcrt_mask(regs, 0x11, BIT(7), BIT(7));
-}
-
-static inline void
-via_unlock_crtc(void __iomem *regs, int pci_id)
-{
-       u8 mask = BIT(0);
-
-       svga_wcrt_mask(regs, 0x11, 0, BIT(7));
-       if ((pci_id == PCI_DEVICE_ID_VIA_VX875) ||
-           (pci_id == PCI_DEVICE_ID_VIA_VX900_VGA))
-               mask = BIT(4);
-       svga_wcrt_mask(regs, 0x47, 0, mask);
-}
-
-static inline void
-enable_second_display_channel(void __iomem *regs)
-{
-       svga_wcrt_mask(regs, 0x6A, BIT(7), BIT(7));
-}
-
-static inline void
-disable_second_display_channel(void __iomem *regs)
-{
-       svga_wcrt_mask(regs, 0x6A, 0x00, BIT(7));
-}
-
-/* display */
-extern int via_modeset_init(struct drm_device *dev);
-extern void via_modeset_fini(struct drm_device *dev);
-
-/* i2c */
-extern struct i2c_adapter *via_find_ddc_bus(int port);
-extern void via_i2c_readbytes(struct i2c_adapter *adapter,
-                               u8 slave_addr, char offset,
-                               u8 *buffer, unsigned int size);
-extern void via_i2c_writebytes(struct i2c_adapter *adapter,
-                               u8 slave_addr, char offset,
-                               u8 *data, unsigned int size);
-extern int via_i2c_init(struct drm_device *dev);
-extern void via_i2c_exit(void);
-
-/* clock */
-extern u32 via_get_clk_value(struct drm_device *dev, u32 clk);
-extern void via_set_vclock(struct drm_crtc *crtc, u32 clk);
-
-/* framebuffers */
-extern int via_fbdev_init(struct drm_device *dev);
-extern void via_fbdev_fini(struct drm_device *dev);
-
-/* crtc */
-extern void via_load_crtc_pixel_timing(struct drm_crtc *crtc,
-                                       struct drm_display_mode *mode);
-extern int via_crtc_init(struct drm_device *dev, uint32_t index);
-
-/* encoders */
-extern void via_set_sync_polarity(struct drm_encoder *encoder,
-                               struct drm_display_mode *mode,
-                               struct drm_display_mode *adjusted_mode);
-extern struct drm_encoder *via_best_encoder(struct drm_connector *connector);
-extern void via_encoder_cleanup(struct drm_encoder *encoder);
-extern void via_encoder_prepare(struct drm_encoder *encoder);
-extern void via_encoder_disable(struct drm_encoder *encoder);
-extern void via_encoder_commit(struct drm_encoder *encoder);
-
-/* connectors */
-extern int via_connector_set_property(struct drm_connector *connector,
-                                       struct drm_property *property,
-                                       uint64_t value);
-extern int via_connector_mode_valid(struct drm_connector *connector,
-                                       struct drm_display_mode *mode);
-extern void via_connector_destroy(struct drm_connector *connector);
-
-extern void via_analog_probe(struct drm_device *dev);
-extern bool openchrome_vt1632_probe(struct i2c_adapter *i2c_bus);
-extern bool openchrome_sii164_probe(struct i2c_adapter *i2c_bus);
-extern void openchrome_ext_dvi_probe(struct drm_device *dev);
-extern void via_tmds_probe(struct drm_device *dev);
-extern void via_fp_probe(struct drm_device *dev);
-
-extern void via_hdmi_init(struct drm_device *dev, u32 di_port);
-extern void via_analog_init(struct drm_device *dev);
-extern void openchrome_vt1632_init(struct drm_device *dev);
-extern void openchrome_sii164_init(struct drm_device *dev);
-extern void openchrome_ext_dvi_init(struct drm_device *dev);
-extern void via_tmds_init(struct drm_device *dev);
-extern void via_fp_init(struct drm_device *dev);
-
-#endif
diff --git a/drivers/gpu/drm/openchrome/openchrome_drv.h 
b/drivers/gpu/drm/openchrome/openchrome_drv.h
index c34d78f5a2b9..448e2570c3f2 100644
--- a/drivers/gpu/drm/openchrome/openchrome_drv.h
+++ b/drivers/gpu/drm/openchrome/openchrome_drv.h
@@ -1,5 +1,6 @@
 /*
  * Copyright © 2019 Kevin Brace
+ * Copyright 2012 James Simmons <jsimm...@infradead.org>. All Rights Reserved.
  *
  * Permission is hereby granted, free of charge, to any person
  * obtaining a copy of this software and associated documentation
@@ -26,6 +27,7 @@
  * Author(s):
  *
  * Kevin Brace <kevinbr...@gmx.com>
+ * James Simmons <jsimm...@infradead.org>
  */
 
 #ifndef _OPENCHROME_DRV_H
@@ -33,9 +35,16 @@
 
 
 #include <linux/module.h>
+#include <linux/pci.h>
+#include <linux/pci_ids.h>
 
 #include <video/vga.h>
 
+#include <drm/drm_crtc.h>
+#include <drm/drm_crtc_helper.h>
+#include <drm/drm_encoder.h>
+#include <drm/drm_fb_helper.h>
+#include <drm/drm_framebuffer.h>
 #include <drm/drm_gem.h>
 #include <drm/drm_ioctl.h>
 #include <drm/drm_plane.h>
@@ -46,7 +55,7 @@
 
 #include <drm/via_drm.h>
 
-#include "openchrome_display.h"
+#include "openchrome_crtc_hw.h"
 #include "openchrome_regs.h"
 
 
@@ -93,6 +102,87 @@
 #define VIA_MEM_DDR3_1333      0x11
 #define VIA_MEM_DDR3_1600      0x12
 
+/* IGA Scaling disable */
+#define VIA_NO_SCALING 0
+
+/* IGA Scaling down */
+#define VIA_HOR_SHRINK BIT(0)
+#define VIA_VER_SHRINK BIT(1)
+#define VIA_SHRINK     (BIT(0) | BIT(1))
+
+/* IGA Scaling up */
+#define VIA_HOR_EXPAND BIT(2)
+#define VIA_VER_EXPAND BIT(3)
+#define VIA_EXPAND     (BIT(2) | BIT(3))
+
+/* Define IGA Scaling up/down status :  Horizontal or Vertical  */
+/* Is IGA Hor scaling up/down status */
+#define        HOR_SCALE       BIT(0)
+/* Is IGA Ver scaling up/down status */
+#define        VER_SCALE       BIT(1)
+/* Is IGA Hor and Ver scaling up/down status */
+#define        HOR_VER_SCALE   (BIT(0) | BIT(1))
+
+#define        VIA_I2C_NONE    0x0
+#define        VIA_I2C_BUS1    BIT(0)
+#define        VIA_I2C_BUS2    BIT(1)
+#define        VIA_I2C_BUS3    BIT(2)
+#define        VIA_I2C_BUS4    BIT(3)
+#define        VIA_I2C_BUS5    BIT(4)
+
+#define VIA_DI_PORT_NONE       0x0
+#define VIA_DI_PORT_DIP0       BIT(0)
+#define VIA_DI_PORT_DIP1       BIT(1)
+#define VIA_DI_PORT_DVP0       BIT(2)
+#define VIA_DI_PORT_DVP1       BIT(3)
+#define VIA_DI_PORT_DFPL       BIT(4)
+#define VIA_DI_PORT_FPDPLOW    BIT(4)
+#define VIA_DI_PORT_DFPH       BIT(5)
+#define VIA_DI_PORT_FPDPHIGH   BIT(5)
+#define VIA_DI_PORT_DFP                BIT(6)
+#define VIA_DI_PORT_LVDS1      BIT(7)
+#define VIA_DI_PORT_TMDS       BIT(7)
+#define VIA_DI_PORT_LVDS2      BIT(8)
+
+/* External TMDS (DVI) Transmitter Type */
+#define        VIA_TMDS_NONE   0x0
+#define        VIA_TMDS_VT1632 BIT(0)
+#define        VIA_TMDS_SII164 BIT(1)
+
+
+typedef struct _via_fp_info {
+       u32 x;
+       u32 y;
+} via_fp_info;
+
+struct via_crtc {
+       struct drm_crtc base;
+       struct openchrome_bo *cursor_bo;
+       struct crtc_timings pixel_timings;
+       struct crtc_timings timings;
+       struct vga_registers display_queue;
+       struct vga_registers high_threshold;
+       struct vga_registers threshold;
+       struct vga_registers fifo_depth;
+       struct vga_registers offset;
+       struct vga_registers fetch;
+       int scaling_mode;
+       uint8_t index;
+};
+
+struct via_connector {
+       struct drm_connector base;
+       u32 i2c_bus;
+       struct list_head props;
+       uint32_t flags;
+};
+
+struct via_encoder {
+       struct drm_encoder base;
+       u32 i2c_bus;
+       u32 di_port;
+       struct via_connector cons[];
+};
 
 struct via_state {
        struct vga_regset crt_regs[256];
@@ -255,6 +345,38 @@ struct openchrome_drm_private {
 
 #define VGABASE (VIA_BASE+VIA_MMIO_VGABASE)
 
+
+static inline void
+via_lock_crtc(void __iomem *regs)
+{
+       svga_wcrt_mask(regs, 0x11, BIT(7), BIT(7));
+}
+
+static inline void
+via_unlock_crtc(void __iomem *regs, int pci_id)
+{
+       u8 mask = BIT(0);
+
+       svga_wcrt_mask(regs, 0x11, 0, BIT(7));
+       if ((pci_id == PCI_DEVICE_ID_VIA_VX875) ||
+           (pci_id == PCI_DEVICE_ID_VIA_VX900_VGA))
+               mask = BIT(4);
+       svga_wcrt_mask(regs, 0x47, 0, mask);
+}
+
+static inline void
+enable_second_display_channel(void __iomem *regs)
+{
+       svga_wcrt_mask(regs, 0x6A, BIT(7), BIT(7));
+}
+
+static inline void
+disable_second_display_channel(void __iomem *regs)
+{
+       svga_wcrt_mask(regs, 0x6A, 0x00, BIT(7));
+}
+
+
 extern const struct drm_ioctl_desc via_ioctls[];
 extern int via_max_ioctl;
 
@@ -318,4 +440,65 @@ extern const unsigned int openchrome_cursor_formats_size;
 
 extern struct drm_fb_helper_funcs via_drm_fb_helper_funcs;
 
+/* display */
+extern int via_modeset_init(struct drm_device *dev);
+extern void via_modeset_fini(struct drm_device *dev);
+
+/* i2c */
+extern struct i2c_adapter *via_find_ddc_bus(int port);
+extern void via_i2c_readbytes(struct i2c_adapter *adapter,
+                               u8 slave_addr, char offset,
+                               u8 *buffer, unsigned int size);
+extern void via_i2c_writebytes(struct i2c_adapter *adapter,
+                               u8 slave_addr, char offset,
+                               u8 *data, unsigned int size);
+extern int via_i2c_init(struct drm_device *dev);
+extern void via_i2c_exit(void);
+
+/* clock */
+extern u32 via_get_clk_value(struct drm_device *dev, u32 clk);
+extern void via_set_vclock(struct drm_crtc *crtc, u32 clk);
+
+/* framebuffers */
+extern int via_fbdev_init(struct drm_device *dev);
+extern void via_fbdev_fini(struct drm_device *dev);
+
+/* crtc */
+extern void via_load_crtc_pixel_timing(struct drm_crtc *crtc,
+                                       struct drm_display_mode *mode);
+extern int via_crtc_init(struct drm_device *dev, uint32_t index);
+
+/* encoders */
+extern void via_set_sync_polarity(struct drm_encoder *encoder,
+                               struct drm_display_mode *mode,
+                               struct drm_display_mode *adjusted_mode);
+extern struct drm_encoder *via_best_encoder(struct drm_connector *connector);
+extern void via_encoder_cleanup(struct drm_encoder *encoder);
+extern void via_encoder_prepare(struct drm_encoder *encoder);
+extern void via_encoder_disable(struct drm_encoder *encoder);
+extern void via_encoder_commit(struct drm_encoder *encoder);
+
+/* connectors */
+extern int via_connector_set_property(struct drm_connector *connector,
+                                       struct drm_property *property,
+                                       uint64_t value);
+extern int via_connector_mode_valid(struct drm_connector *connector,
+                                       struct drm_display_mode *mode);
+extern void via_connector_destroy(struct drm_connector *connector);
+
+extern void via_analog_probe(struct drm_device *dev);
+extern bool openchrome_vt1632_probe(struct i2c_adapter *i2c_bus);
+extern bool openchrome_sii164_probe(struct i2c_adapter *i2c_bus);
+extern void openchrome_ext_dvi_probe(struct drm_device *dev);
+extern void via_tmds_probe(struct drm_device *dev);
+extern void via_fp_probe(struct drm_device *dev);
+
+extern void via_hdmi_init(struct drm_device *dev, u32 di_port);
+extern void via_analog_init(struct drm_device *dev);
+extern void openchrome_vt1632_init(struct drm_device *dev);
+extern void openchrome_sii164_init(struct drm_device *dev);
+extern void openchrome_ext_dvi_init(struct drm_device *dev);
+extern void via_tmds_init(struct drm_device *dev);
+extern void via_fp_init(struct drm_device *dev);
+
 #endif /* _OPENCHROME_DRV_H */
_______________________________________________
openchrome-devel mailing list
openchrome-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/openchrome-devel

Reply via email to