Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic Map coprocessor registers before igsfb_hw_setup()...



details:   https://anonhg.NetBSD.org/src/rev/da502007eae4
branches:  trunk
changeset: 350886:da502007eae4
user:      jakllsch <jakllsch%NetBSD.org@localhost>
date:      Wed Jan 25 16:11:54 2017 +0000

description:
Map coprocessor registers before igsfb_hw_setup(), they are needed for
setting up the video mode.

diffstat:

 sys/dev/ic/igsfb.c |  35 +++++++++++++++++++++++------------
 1 files changed, 23 insertions(+), 12 deletions(-)

diffs (79 lines):

diff -r 7d4ffba2d50b -r da502007eae4 sys/dev/ic/igsfb.c
--- a/sys/dev/ic/igsfb.c        Wed Jan 25 15:51:07 2017 +0000
+++ b/sys/dev/ic/igsfb.c        Wed Jan 25 16:11:54 2017 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: igsfb.c,v 1.54 2017/01/25 15:51:07 jakllsch Exp $ */
+/*     $NetBSD: igsfb.c,v 1.55 2017/01/25 16:11:54 jakllsch Exp $ */
 
 /*
  * Copyright (c) 2002, 2003 Valeriy E. Ushakov
@@ -31,7 +31,7 @@
  * Integraphics Systems IGA 168x and CyberPro series.
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: igsfb.c,v 1.54 2017/01/25 15:51:07 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: igsfb.c,v 1.55 2017/01/25 16:11:54 jakllsch Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -279,6 +279,20 @@
                }
        }
 
+       /*
+        * Map graphic coprocessor for mode setting and accelerated rasops.
+        */
+       if (dc->dc_id >= 0x2000) { /* XXX */
+               if (bus_space_map(dc->dc_iot,
+                                 dc->dc_iobase + IGS_COP_BASE_B, IGS_COP_SIZE,
+                                 dc->dc_ioflags,
+                                 &dc->dc_coph) != 0)
+               {
+                       printf("unable to map COP registers\n");
+                       return 1;
+               }
+       }
+
        igsfb_hw_setup(dc);
 
        /*
@@ -289,6 +303,9 @@
                          dc->dc_memflags | BUS_SPACE_MAP_LINEAR,
                          &dc->dc_fbh) != 0)
        {
+               if (dc->dc_id >= 0x2000) { /* XXX */
+                       bus_space_unmap(dc->dc_iot, dc->dc_coph, IGS_COP_SIZE);
+               }
                bus_space_unmap(dc->dc_iot, dc->dc_ioh, IGS_REG_SIZE);
                printf("unable to map framebuffer\n");
                return 1;
@@ -305,6 +322,9 @@
                          dc->dc_memflags | BUS_SPACE_MAP_LINEAR,
                          &dc->dc_crh) != 0)
        {
+               if (dc->dc_id >= 0x2000) { /* XXX */
+                       bus_space_unmap(dc->dc_iot, dc->dc_coph, IGS_COP_SIZE);
+               }
                bus_space_unmap(dc->dc_iot, dc->dc_ioh, IGS_REG_SIZE);
                bus_space_unmap(dc->dc_memt, dc->dc_fbh, dc->dc_fbsz);
                printf("unable to map cursor sprite region\n");
@@ -336,18 +356,9 @@
        dc->dc_curenb = 0;
 
        /*
-        * Map and init graphic coprocessor for accelerated rasops.
+        * Init graphic coprocessor for accelerated rasops.
         */
        if (dc->dc_id >= 0x2000) { /* XXX */
-               if (bus_space_map(dc->dc_iot,
-                                 dc->dc_iobase + IGS_COP_BASE_B, IGS_COP_SIZE,
-                                 dc->dc_ioflags,
-                                 &dc->dc_coph) != 0)
-               {
-                       printf("unable to map COP registers\n");
-                       return 1;
-               }
-
                /* XXX: hardcoded 8bpp */
                bus_space_write_2(dc->dc_iot, dc->dc_coph,
                                  IGS_COP_SRC_MAP_WIDTH_REG,



Home | Main Index | Thread Index | Old Index