open-src/driver/xf86-video-mga/sparc.patch
author Niveditha Rau <Niveditha.Rau@Oracle.COM>
Fri, 06 Apr 2012 21:57:14 -0700
changeset 1265 0b5cc5c013e4
parent 1244 94b8d1e21e14
child 1322 c0ba569ea901
permissions -rw-r--r--
7083537 Xorg 1.12 & associated module updates
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
     1
diff --git a/src/mga.h b/src/mga.h
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
     2
index 77406f1..25dcf53 100644
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
     3
--- a/src/mga.h
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
     4
+++ b/src/mga.h
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
     5
@@ -46,6 +46,10 @@
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
     6
 #include "mga_dri.h"
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
     7
 #endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
     8
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
     9
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    10
+#include <sys/visual_io.h>
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    11
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    12
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    13
 typedef enum {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    14
     OPTION_SW_CURSOR,
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    15
     OPTION_HW_CURSOR,
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    16
@@ -200,6 +204,28 @@ void MGAdbg_outreg32(ScrnInfoPtr, int,int, char*);
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    17
 #define MGA_MODULE_DATA mgaModuleData
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    18
 #define MGA_DRIVER_NAME "mga"
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    19
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    20
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    21
+#ifndef VIS_GETPCICONFIG
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    22
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    23
+/*
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    24
+ * These definitions will be removed when they are included in the
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    25
+ * visual_io.h
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    26
+ */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    27
+#define VIS_GETVIDEOMODENAME		(VIOC | 12)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    28
+#define VIS_STOREVIDEOMODENAME		(VIOC | 13)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    29
+#define VIS_MAX_VMODE_LEN		48
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    30
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    31
+typedef struct	vis_video_mode {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    32
+	char		mode_name[VIS_MAX_VMODE_LEN];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    33
+	uint32_t	vRefresh;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    34
+	char		pad[96];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    35
+} vis_video_mode_t;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    36
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    37
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    38
+#define VIS_GETPCICONFIG		(VIOC | 14)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    39
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    40
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    41
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    42
 typedef struct {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    43
     unsigned char	ExtVga[6];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    44
     unsigned char 	DacClk[6];
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    45
@@ -667,6 +693,9 @@ typedef struct {
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    46
                                        if in merged mode */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    47
 /* End of Merged Framebuffer Data */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    48
   int			HALGranularityOffX, HALGranularityOffY;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    49
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    50
+    int			fd;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    51
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    52
 } MGARec, *MGAPtr;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    53
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    54
 extern CARD32 MGAAtype[16];
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    55
diff --git a/src/mga_dacG.c b/src/mga_dacG.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    56
index b489dea..e549f6c 100644
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    57
--- a/src/mga_dacG.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    58
+++ b/src/mga_dacG.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    59
@@ -1711,11 +1711,35 @@ MGAGLoadCursorImage(ScrnInfoPtr pScrn, unsigned char *src)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    60
     MGAPtr pMga = MGAPTR(pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    61
     CARD32 *dst = (CARD32*)(pMga->FbBase + pMga->FbCursorOffset);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    62
     int i = 128;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    63
-    
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    64
-    /* swap bytes in each line */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    65
+#ifdef X_BYTE_ORDER != X_LITTLE_ENDIAN
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    66
+    MGAFBLayout *pLayout = &pMga->CurrentLayout;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    67
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    68
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    69
+    /* 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    70
+     * HW cursor expects image that is both bytes and words swapped
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    71
+     * see DAC Registers section of the manual 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    72
+     */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    73
     while( i-- ) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    74
+#if X_BYTE_ORDER == X_LITTLE_ENDIAN
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    75
+    	/* swap bytes in each line, byte swap happens during explict byte shift */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    76
         *dst++ = (src[4] << 24) | (src[5] << 16) | (src[6] << 8) | src[7];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    77
         *dst++ = (src[0] << 24) | (src[1] << 16) | (src[2] << 8) | src[3];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    78
+#else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    79
+	if (pLayout->depth == 8) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    80
+	    /* byte swap happens during assembly of word, no explict byte shift */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    81
+            *dst++ = (src[7] << 24) | (src[6] << 16) | (src[5] << 8) | src[4];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    82
+            *dst++ = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    83
+	} else if (pLayout->depth == 16) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    84
+	    /* byte swap happens during assembly of word, partial byte shift to
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    85
+	       offset effects from HW cursor's double bytes reading */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    86
+	    *dst++ = (src[6] << 24) | (src[7] << 16) | (src[4] << 8) | src[5];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    87
+	    *dst++ = (src[2] << 24) | (src[3] << 16) | (src[0] << 8) | src[1];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    88
+	} else {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    89
+	    /* depth = 32. no byte swap needed, HW cursor's word reading does swap */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    90
+	    *dst++ = ((CARD32 *)src)[1];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    91
+	    *dst++ = ((CARD32 *)src)[0];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    92
+	}
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    93
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    94
         src += 8;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    95
     }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
    96
 }
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    97
diff --git a/src/mga_driver.c b/src/mga_driver.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    98
index af005f1..ae4a005 100644
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
    99
--- a/src/mga_driver.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   100
+++ b/src/mga_driver.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   101
@@ -107,6 +107,11 @@
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   102
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   103
 #include <unistd.h>
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   104
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   105
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   106
+#include <stdio.h>
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   107
+#include <fcntl.h>
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   108
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   109
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   110
 /*
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   111
  * Forward definitions for the functions that make up the driver.
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   112
  */
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   113
@@ -156,6 +161,10 @@ static Bool	MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   114
 static void 	MGABlockHandler(int, pointer, pointer, pointer);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   115
 static void	MGAG100BlackMagic(ScrnInfoPtr pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   116
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   117
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   118
+static void MGANotifyModeChanged(ScrnInfoPtr pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   119
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   120
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   121
 static int MGAEntityIndex = -1;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   122
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   123
 #include "mga_merge.h"
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   124
@@ -455,6 +464,15 @@ static const struct pci_id_match mga_device_match[] = {
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   125
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   126
     { 0, 0, 0 },
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   127
 };
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   128
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   129
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   130
+/* mimic pci_device_private struct so that define of DEV_PATH becomes valid */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   131
+static struct mga_device_private {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   132
+    struct pci_device  base;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   133
+    const char * device_string;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   134
+};
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   135
+#define DEV_PATH(dev)    (((struct mga_device_private *) (dev))->device_string)
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   136
+#endif
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   137
 #endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   138
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   139
 /* Supported chipsets */
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   140
@@ -1296,9 +1314,11 @@ MGAdoDDC(ScrnInfoPtr pScrn)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   141
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   142
     /* Map the VGA memory when the primary video */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   143
     if (pMga->Primary) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   144
+#if !defined(__sparc__)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   145
 	hwp->MapSize = 0x10000;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   146
 	if (!vgaHWMapMem(pScrn))
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   147
 	    return NULL;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   148
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   149
     } else {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   150
 	/* XXX Need to write an MGA mode ddc1SetSpeed */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   151
 	if (pMga->DDC1SetSpeed == vgaHWddc1SetSpeedWeak()) {
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   152
@@ -1341,6 +1361,7 @@ MGAdoDDC(ScrnInfoPtr pScrn)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   153
 					  pMga->ddc1Read ) ;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   154
 		from = "DDC1";
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   155
 	    }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   156
+#if !defined(__sparc__)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   157
 	if (!MonInfo){
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   158
 	    vbeInfoPtr pVbe;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   159
 	    if (xf86LoadSubModule(pScrn, "vbe")) {
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   160
@@ -1350,6 +1371,7 @@ MGAdoDDC(ScrnInfoPtr pScrn)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   161
 		from = "VBE";
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   162
 	    }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   163
 	}
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   164
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   165
     }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   166
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   167
     if (MonInfo) {
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   168
@@ -1571,6 +1593,20 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   169
     pMga->PciInfo = xf86GetPciInfoForEntity(pMga->pEnt->index);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   170
     pMga->PciTag = pciTag(pMga->PciInfo->bus, pMga->PciInfo->device,
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   171
 			  pMga->PciInfo->func);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   172
+#else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   173
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   174
+    {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   175
+	char        dev[128];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   176
+	if (DEV_PATH(pMga->PciInfo))
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   177
+	    snprintf(dev, sizeof (dev), "%s%s", "/devices",
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   178
+		DEV_PATH(pMga->PciInfo));
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   179
+	else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   180
+	    strcpy (dev, "/dev/fb0");
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   181
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   182
+	if ((pMga->fd = open(dev, O_RDWR)) < 0)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   183
+	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Cannot open device %s\n", dev);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   184
+    }
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   185
+#endif
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   186
 #endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   187
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   188
     pMga->Primary = xf86IsPrimaryPci(pMga->PciInfo);
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   189
@@ -1922,7 +1958,7 @@ MGAPreInit(ScrnInfoPtr pScrn, int flags)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   190
         xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Enabling KVM\n");
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   191
     }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   192
     
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   193
-#if !defined(__powerpc__)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   194
+#if (!defined(__powerpc__) && !defined(__sparc__))
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   195
     pMga->softbooted = FALSE;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   196
     Default = (pMga->chip_attribs->dual_head_possible
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   197
 	       && !pMga->Primary && !pMga->SecondCrtc);
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   198
@@ -2838,7 +2874,11 @@ MGASave(ScrnInfoPtr pScrn)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   199
     /* Could call it dac2Saved */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   200
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   201
     /* Only save text mode fonts/text for the primary card */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   202
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   203
+    (*pMga->Save)(pScrn, vgaReg, mgaReg, FALSE);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   204
+#else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   205
     (*pMga->Save)(pScrn, vgaReg, mgaReg, pMga->Primary);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   206
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   207
 }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   208
 
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   209
 /*
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   210
@@ -2996,6 +3036,10 @@ MGAModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   211
 #ifdef DEBUG
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   212
    MGAG450PrintPLL(pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   213
 #endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   214
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   215
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   216
+    MGANotifyModeChanged(pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   217
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   218
     return TRUE;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   219
 }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   220
 
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   221
@@ -3085,7 +3129,11 @@ MGARestore(ScrnInfoPtr pScrn)
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   222
 	vgaHWProtect(pScrn, TRUE);
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   223
     }
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   224
     if (pMga->Primary) {
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   225
+#ifdef __sparc__
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   226
+        (*pMga->Restore)(pScrn, vgaReg, mgaReg, FALSE);
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   227
+#else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   228
         (*pMga->Restore)(pScrn, vgaReg, mgaReg, TRUE);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   229
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   230
     } else {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   231
         vgaHWRestore(pScrn, vgaReg, VGA_SR_MODE);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   232
     }
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   233
@@ -3215,9 +3263,11 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   234
     /* Map the VGA memory when the primary video */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   235
     if (!pMga->FBDev) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   236
 	if (pMga->Primary) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   237
+#if !defined(__sparc__)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   238
 	    hwp->MapSize = 0x10000;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   239
 	    if (!vgaHWMapMem(pScrn))
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   240
 		return FALSE;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   241
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   242
 	}
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   243
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   244
 	/* Save the current state */
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   245
@@ -3473,6 +3523,10 @@ MGAScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   246
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   247
     MGAInitVideo(pScreen);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   248
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   249
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   250
+    MGANotifyModeChanged(pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   251
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   252
+
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   253
 #ifdef MGADRI
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   254
     if (pMga->directRenderingEnabled) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   255
        /* Now that mi, drm and others have done their thing,
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   256
@@ -3792,6 +3846,13 @@ MGACloseScreen(int scrnIndex, ScreenPtr pScreen)
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   257
     free(pMga->portPrivate);
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   258
     free(pMga->ScratchBuffer);
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   259
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   260
+#ifdef __sparc__
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   261
+    MGANotifyModeChanged(pScrn);
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   262
+
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   263
+    if (pMga->fd)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   264
+	close(pMga->fd);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   265
+#endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   266
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   267
     pScrn->vtSema = FALSE;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   268
 
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   269
     xf86ClearPrimInitDone(pScrn->entityList[0]);
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   270
@@ -4194,3 +4253,21 @@ MGAG100BlackMagic(ScrnInfoPtr pScrn)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   271
     usleep(10);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   272
 }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   273
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   274
+#ifdef __sparc__
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   275
+static void
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   276
+MGANotifyModeChanged(ScrnInfoPtr pScrn)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   277
+{
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   278
+    struct vis_video_mode mode;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   279
+    MGAPtr pMga = MGAPTR(pScrn);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   280
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   281
+    if (pScrn->currentMode->name != NULL) {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   282
+	strlcpy(mode.mode_name, pScrn->currentMode->name, VIS_MAX_VMODE_LEN);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   283
+    } else {
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   284
+	strlcpy(mode.mode_name, " ", VIS_MAX_VMODE_LEN);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   285
+    }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   286
+    mode.vRefresh = pScrn->currentMode->VRefresh;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   287
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   288
+    ioctl(pMga->fd, VIS_STOREVIDEOMODENAME, &mode);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   289
+
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   290
+}
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   291
+#endif
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   292
diff --git a/src/mga_storm.c b/src/mga_storm.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   293
index 96bb6b9..57fdba5 100644
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   294
--- a/src/mga_storm.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   295
+++ b/src/mga_storm.c
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   296
@@ -989,7 +989,12 @@ static void mgaRestoreAccelState(ScrnInfoPtr pScrn)
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   297
 #if X_BYTE_ORDER == X_LITTLE_ENDIAN
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   298
    OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT );
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   299
 #else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   300
-   OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT | 0x10000);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   301
+   if (pLayout->depth == 8)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   302
+	OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   303
+   else if (pLayout->depth == 16)
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   304
+	OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT | 0x10000);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   305
+   else
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   306
+	OUTREG(MGAREG_OPMODE, MGAOPM_DMA_BLIT | 0x20000);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   307
 #endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   308
    OUTREG(MGAREG_CXBNDRY, 0xFFFF0000); /* (maxX << 16) | minX */
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   309
    OUTREG(MGAREG_YTOP, 0x00000000);    /* minPixelPointer */
1265
0b5cc5c013e4 7083537 Xorg 1.12 & associated module updates
Niveditha Rau <Niveditha.Rau@Oracle.COM>
parents: 1244
diff changeset
   310
@@ -1077,9 +1082,9 @@ void MGAStormEngineInit( ScrnInfoPtr pScrn )
1244
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   311
         maccess |= (1 << 31);
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   312
     }
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   313
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   314
-    opmode |= opmode_table[ pLayout->bitsPerPixel / 8 ];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   315
-#if X_BYTE_ORDER == X_LITTLE_ENDIAN
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   316
     opmode &= ~0x30000;
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   317
+#if X_BYTE_ORDER == X_BIG_ENDIAN
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   318
+    opmode |= opmode_table[ pLayout->bitsPerPixel / 8 ];
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   319
 #endif
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   320
 
94b8d1e21e14 7045469 Need matrox sparc ddx
henryzh <henry.zhao@oracle.com>
parents:
diff changeset
   321
     pMga->SetupForSolidFill = mgaSetupForSolidFill;