View | Details | Raw Unified | Return to bug 100673
Collapse All | Expand All

(-)files/patch-945GM.patch (+335 lines)
Added Link Here
1
#
2
# Add support to Intel 945GM
3
#
4
--- programs/Xserver/hw/xfree86/drivers/i810/common.h.orig	Mon Jul 17 11:41:34 2006
5
+++ programs/Xserver/hw/xfree86/drivers/i810/common.h	Mon Jul 17 11:43:00 2006
6
@@ -322,6 +322,11 @@
7
 #define PCI_CHIP_I945_G_BRIDGE 0x2770
8
 #endif
9
 
10
+#ifndef PCI_CHIP_I945_GM
11
+#define PCI_CHIP_I945_GM        0x27A2
12
+#define PCI_CHIP_I945_GM_BRIDGE 0x27A0
13
+#endif
14
+
15
 #define IS_I810(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I810 ||	\
16
 			pI810->PciInfo->chipType == PCI_CHIP_I810_DC100 || \
17
 			pI810->PciInfo->chipType == PCI_CHIP_I810_E)
18
@@ -335,6 +340,7 @@
19
 #define IS_I915G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_G || pI810->PciInfo->chipType == PCI_CHIP_E7221_G)
20
 #define IS_I915GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I915_GM)
21
 #define IS_I945G(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_G)
22
+#define IS_I945GM(pI810) (pI810->PciInfo->chipType == PCI_CHIP_I945_GM)
23
 
24
 #define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810))
25
 
26
--- programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c.orig	Mon Jul 17 11:41:34 2006
27
+++ programs/Xserver/hw/xfree86/drivers/i810/i810_driver.c	Mon Jul 17 11:44:09 2006
28
@@ -136,6 +136,7 @@
29
    {PCI_CHIP_E7221_G,		"E7221 (i915)"},
30
    {PCI_CHIP_I915_GM,		"915GM"},
31
    {PCI_CHIP_I945_G,		"945G"},
32
+   {PCI_CHIP_I945_GM,		"945GM"},
33
    {-1,				NULL}
34
 };
35
 
36
@@ -154,6 +155,7 @@
37
    {PCI_CHIP_E7221_G,		PCI_CHIP_E7221_G,	RES_SHARED_VGA},
38
    {PCI_CHIP_I915_GM,		PCI_CHIP_I915_GM,	RES_SHARED_VGA},
39
    {PCI_CHIP_I945_G,		PCI_CHIP_I945_G,	RES_SHARED_VGA},
40
+   {PCI_CHIP_I945_GM,		PCI_CHIP_I945_GM,	RES_SHARED_VGA},
41
    {-1,				-1, RES_UNDEFINED }
42
 };
43
 
44
@@ -569,6 +571,7 @@
45
 	    case PCI_CHIP_E7221_G:
46
 	    case PCI_CHIP_I915_GM:
47
 	    case PCI_CHIP_I945_G:
48
+	    case PCI_CHIP_I945_GM:
49
     	       xf86SetEntitySharable(usedChips[i]);
50
 
51
     	       /* Allocate an entity private if necessary */		
52
--- programs/Xserver/hw/xfree86/drivers/i810/i830_cursor.c.orig	Mon Jul 17 11:41:34 2006
53
+++ programs/Xserver/hw/xfree86/drivers/i810/i830_cursor.c	Mon Jul 17 11:46:20 2006
54
@@ -86,7 +86,7 @@
55
 
56
    DPRINTF(PFX, "I830InitHWCursor\n");
57
    /* Initialise the HW cursor registers, leaving the cursor hidden. */
58
-   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
59
+   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
60
       temp = INREG(CURSOR_A_CONTROL);
61
       temp &= ~(CURSOR_MODE | MCURSOR_GAMMA_ENABLE | MCURSOR_MEM_TYPE_LOCAL |
62
 		MCURSOR_PIPE_SELECT);
63
@@ -308,7 +308,7 @@
64
    }
65
 
66
    /* have to upload the base for the new position */
67
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
68
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
69
       if (pI830->CursorIsARGB)
70
          OUTREG(CURSOR_A_BASE, pI830->CursorMemARGB->Physical);
71
       else
72
@@ -339,7 +339,7 @@
73
 	   pI830->CursorMemARGB->Physical, pI830->CursorMemARGB->Start);
74
 
75
    pI830->cursorOn = TRUE;
76
-   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
77
+   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
78
       temp = INREG(CURSOR_A_CONTROL);
79
       temp &= ~(CURSOR_MODE | MCURSOR_PIPE_SELECT);
80
       if (pI830->CursorIsARGB)
81
@@ -387,7 +387,7 @@
82
    DPRINTF(PFX, "I830HideCursor\n");
83
 
84
    pI830->cursorOn = FALSE;
85
-   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830)) {
86
+   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
87
       temp = INREG(CURSOR_A_CONTROL);
88
       temp &= ~CURSOR_MODE;
89
       temp |= CURSOR_MODE_DISABLE;
90
--- programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c.orig	Mon Jul 17 11:41:34 2006
91
+++ programs/Xserver/hw/xfree86/drivers/i810/i830_driver.c	Mon Jul 17 11:49:23 2006
92
@@ -196,6 +196,7 @@
93
    {PCI_CHIP_E7221_G,		"E7221 (i915)"},
94
    {PCI_CHIP_I915_GM,		"915GM"},
95
    {PCI_CHIP_I945_G,		"945G"},
96
+   {PCI_CHIP_I945_GM,		"945GM"},
97
    {-1,				NULL}
98
 };
99
 
100
@@ -208,6 +209,7 @@
101
    {PCI_CHIP_E7221_G,		PCI_CHIP_E7221_G,	RES_SHARED_VGA},
102
    {PCI_CHIP_I915_GM,		PCI_CHIP_I915_GM,	RES_SHARED_VGA},
103
    {PCI_CHIP_I945_G,		PCI_CHIP_I945_G,	RES_SHARED_VGA},
104
+   {PCI_CHIP_I945_GM,		PCI_CHIP_I945_GM,	RES_SHARED_VGA},
105
    {-1,				-1,			RES_UNDEFINED}
106
 };
107
 
108
@@ -1323,7 +1325,7 @@
109
     * The GTT varying according the the FbMapSize and the popup is 4KB */
110
    range = (pI830->FbMapSize / (1024*1024)) + 4;
111
 
112
-   if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
113
+   if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
114
       switch (gmch_ctrl & I830_GMCH_GMS_MASK) {
115
       case I855_GMCH_GMS_STOLEN_1M:
116
 	 memsize = MB(1) - KB(range);
117
@@ -1341,11 +1343,11 @@
118
 	 memsize = MB(32) - KB(range);
119
 	 break;
120
       case I915G_GMCH_GMS_STOLEN_48M:
121
-	 if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
122
+	 if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
123
 	    memsize = MB(48) - KB(range);
124
 	 break;
125
       case I915G_GMCH_GMS_STOLEN_64M:
126
-	 if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
127
+	 if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
128
 	    memsize = MB(64) - KB(range);
129
 	 break;
130
       }
131
@@ -2090,6 +2092,9 @@
132
    case PCI_CHIP_I945_G:
133
       chipname = "945G";
134
       break;
135
+   case PCI_CHIP_I945_GM:
136
+      chipname = "945GM";
137
+      break;
138
    default:
139
       chipname = "unknown chipset";
140
       break;
141
@@ -2127,7 +2132,7 @@
142
       pI830->LinearAddr = pI830->pEnt->device->MemBase;
143
       from = X_CONFIG;
144
    } else {
145
-      if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
146
+      if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
147
 	 pI830->LinearAddr = pI830->PciInfo->memBase[2] & 0xF0000000;
148
 	 from = X_PROBED;
149
       } else if (pI830->PciInfo->memBase[1] != 0) {
150
@@ -2149,7 +2154,7 @@
151
       pI830->MMIOAddr = pI830->pEnt->device->IOBase;
152
       from = X_CONFIG;
153
    } else {
154
-      if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
155
+      if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
156
 	 pI830->MMIOAddr = pI830->PciInfo->memBase[0] & 0xFFF80000;
157
 	 from = X_PROBED;
158
       } else if (pI830->PciInfo->memBase[1]) {
159
@@ -2194,7 +2199,7 @@
160
 	 pI830->FbMapSize = 0x4000000; /* 64MB - has this been tested ?? */
161
       }
162
    } else {
163
-      if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
164
+      if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
165
 	 if (pI830->PciInfo->memBase[2] & 0x08000000)
166
 	    pI830->FbMapSize = 0x8000000;	/* 128MB aperture */
167
 	 else
168
@@ -2227,7 +2232,7 @@
169
    if (pI830->PciInfo->chipType == PCI_CHIP_E7221_G)
170
       pI830->availablePipes = 1;
171
    else
172
-   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830))
173
+   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
174
       pI830->availablePipes = 2;
175
    else
176
       pI830->availablePipes = 1;
177
@@ -2872,7 +2877,7 @@
178
    }
179
 
180
    /* Check if the HW cursor needs physical address. */
181
-   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830))
182
+   if (IS_MOBILE(pI830) || IS_I915G(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
183
       pI830->CursorNeedsPhysical = TRUE;
184
    else
185
       pI830->CursorNeedsPhysical = FALSE;
186
--- programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c.orig	Mon Jul 17 11:41:34 2006
187
+++ programs/Xserver/hw/xfree86/drivers/i810/i830_memory.c	Mon Jul 17 11:51:02 2006
188
@@ -1239,7 +1239,7 @@
189
 
190
    i830Reg->Fence[nr] = 0;
191
 
192
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
193
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
194
    	fence_mask = ~I915G_FENCE_START_MASK;
195
    else
196
    	fence_mask = ~I830_FENCE_START_MASK;
197
@@ -1247,7 +1247,7 @@
198
    if (start & fence_mask) {
199
       xf86DrvMsg(X_WARNING, pScrn->scrnIndex,
200
 		 "SetFence: %d: start (0x%08x) is not %s aligned\n",
201
-		 nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) ? "1MB" : "512k");
202
+		 nr, start, (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) ? "1MB" : "512k");
203
       return;
204
    }
205
 
206
@@ -1267,7 +1267,7 @@
207
 
208
    val = (start | FENCE_X_MAJOR | FENCE_VALID);
209
 
210
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
211
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
212
    	switch (size) {
213
 	   case MB(1):
214
       		val |= I915G_FENCE_SIZE_1M;
215
@@ -1328,7 +1328,7 @@
216
    	}
217
    }
218
 
219
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
220
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
221
 	fence_pitch = pitch / 512;
222
    else
223
 	fence_pitch = pitch / 128;
224
--- programs/Xserver/hw/xfree86/drivers/i810/i830_video.c.orig	Mon Jul 17 11:41:34 2006
225
+++ programs/Xserver/hw/xfree86/drivers/i810/i830_video.c	Mon Jul 17 11:52:36 2006
226
@@ -617,7 +617,7 @@
227
    adapt->nAttributes = NUM_ATTRIBUTES;
228
    if (pI830->Clone)
229
       adapt->nAttributes += CLONE_ATTRIBUTES;
230
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))
231
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))
232
       adapt->nAttributes += GAMMA_ATTRIBUTES; /* has gamma */
233
    adapt->pAttributes = xnfalloc(sizeof(XF86AttributeRec) * adapt->nAttributes);
234
    /* Now copy the attributes */
235
@@ -628,7 +628,7 @@
236
       memcpy((char*)att, (char*)CloneAttributes, sizeof(XF86AttributeRec) * CLONE_ATTRIBUTES);
237
       att+=CLONE_ATTRIBUTES;
238
    }
239
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
240
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
241
       memcpy((char*)att, (char*)GammaAttributes, sizeof(XF86AttributeRec) * GAMMA_ATTRIBUTES);
242
       att+=GAMMA_ATTRIBUTES;
243
    }
244
@@ -688,7 +688,7 @@
245
    if (pI830->Clone)
246
      xvPipe = MAKE_ATOM("XV_PIPE");
247
 
248
-   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830)) {
249
+   if (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830)) {
250
      xvGamma0 = MAKE_ATOM("XV_GAMMA0");
251
      xvGamma1 = MAKE_ATOM("XV_GAMMA1");
252
      xvGamma2 = MAKE_ATOM("XV_GAMMA2");
253
@@ -806,7 +806,7 @@
254
          overlay->OCONFIG |= OVERLAY_PIPE_B;
255
       if (pPriv->overlayOK)
256
          OVERLAY_UPDATE;
257
-   } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
258
+   } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
259
       /* Avoid video anomalies, so set gamma registers when overlay is off */
260
       /* We also clamp the values if they are outside the ranges */
261
       if (!*pI830->overlayOn) {
262
@@ -815,35 +815,35 @@
263
 	   pPriv->gamma1 = pPriv->gamma0 + 0x7d;
264
       } else
265
          return BadRequest;
266
-   } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
267
+   } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
268
       if (!*pI830->overlayOn) {
269
          pPriv->gamma1 = value;
270
          if (pPriv->gamma1 - pPriv->gamma0 > 0x7d)
271
            pPriv->gamma0 = pPriv->gamma1 - 0x7d;
272
       } else
273
          return BadRequest;
274
-   } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
275
+   } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
276
       if (!*pI830->overlayOn) {
277
          pPriv->gamma2 = value;
278
          if (pPriv->gamma3 - pPriv->gamma2 > 0x7d)
279
             pPriv->gamma3 = pPriv->gamma2 + 0x7d;
280
       } else
281
          return BadRequest;
282
-   } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
283
+   } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
284
       if (!*pI830->overlayOn) {
285
          pPriv->gamma3 = value;
286
          if (pPriv->gamma3 - pPriv->gamma2 > 0x7d)
287
             pPriv->gamma2 = pPriv->gamma3 - 0x7d;
288
       } else
289
          return BadRequest;
290
-   } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
291
+   } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
292
       if (!*pI830->overlayOn) {
293
          pPriv->gamma4 = value;
294
          if (pPriv->gamma5 - pPriv->gamma4 > 0x7d)
295
             pPriv->gamma5 = pPriv->gamma4 + 0x7d;
296
       } else
297
          return BadRequest;
298
-   } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
299
+   } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
300
       if (!*pI830->overlayOn) {
301
          pPriv->gamma5 = value;
302
          if (pPriv->gamma5 - pPriv->gamma4 > 0x7d)
303
@@ -875,7 +875,7 @@
304
         attribute == xvGamma2 ||
305
         attribute == xvGamma3 ||
306
         attribute == xvGamma4 ||
307
-        attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
308
+        attribute == xvGamma5) && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
309
 	I830UpdateGamma(pScrn);
310
    }
311
 
312
@@ -895,17 +895,17 @@
313
       *value = pPriv->contrast;
314
    } else if (pI830->Clone && attribute == xvPipe) {
315
       *value = pPriv->pipe;
316
-   } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
317
+   } else if (attribute == xvGamma0 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
318
       *value = pPriv->gamma0;
319
-   } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
320
+   } else if (attribute == xvGamma1 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
321
       *value = pPriv->gamma1;
322
-   } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
323
+   } else if (attribute == xvGamma2 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
324
       *value = pPriv->gamma2;
325
-   } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
326
+   } else if (attribute == xvGamma3 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
327
       *value = pPriv->gamma3;
328
-   } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
329
+   } else if (attribute == xvGamma4 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
330
       *value = pPriv->gamma4;
331
-   } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830))) {
332
+   } else if (attribute == xvGamma5 && (IS_I915G(pI830) || IS_I915GM(pI830) || IS_I945G(pI830) || IS_I945GM(pI830))) {
333
       *value = pPriv->gamma5;
334
    } else if (attribute == xvColorKey) {
335
       *value = pPriv->colorKey;

Return to bug 100673