View | Details | Raw Unified | Return to bug 80396 | Differences between
and this patch

Collapse All | Expand All

(-)agp_i810.c.new (-15 / +33 lines)
Lines 70-76 Link Here
70
#define CHIP_I810 0	/* i810/i815 */
70
#define CHIP_I810 0	/* i810/i815 */
71
#define CHIP_I830 1	/* 830M/845G */
71
#define CHIP_I830 1	/* 830M/845G */
72
#define CHIP_I855 2	/* 852GM/855GM/865G */
72
#define CHIP_I855 2	/* 852GM/855GM/865G */
73
#define CHIP_I915 3	/* 915G */
73
#define CHIP_I915 3	/* 915G/915GM */
74
74
75
struct agp_i810_softc {
75
struct agp_i810_softc {
76
	struct agp_softc agp;
76
	struct agp_softc agp;
Lines 139-144 Link Here
139
139
140
	case 0x25828086:
140
	case 0x25828086:
141
		return ("Intel 82915G (915G GMCH) SVGA controller");
141
		return ("Intel 82915G (915G GMCH) SVGA controller");
142
143
	case 0x25928086:
144
		return ("Intel 82915GM (915GM GMCH) SVGA controller");
142
	};
145
	};
143
146
144
	return NULL;
147
	return NULL;
Lines 171-176 Link Here
171
	case 0x35828086:
174
	case 0x35828086:
172
	case 0x25728086:
175
	case 0x25728086:
173
	case 0x25828086:
176
	case 0x25828086:
177
	case 0x25928086:
174
		devid -= 0x20000;
178
		devid -= 0x20000;
175
		break;
179
		break;
176
	};
180
	};
Lines 233-239 Link Here
233
		case 0x35828086:
237
		case 0x35828086:
234
		case 0x25628086:
238
		case 0x25628086:
235
		case 0x25728086:
239
		case 0x25728086:
236
		case 0x25828086:	/* XXX: Is this the right way? */
237
			gcc1 = pci_read_config(bdev, AGP_I830_GCC1, 1);
240
			gcc1 = pci_read_config(bdev, AGP_I830_GCC1, 1);
238
			if ((gcc1 & AGP_I830_GCC1_DEV2) == AGP_I830_GCC1_DEV2_DISABLED) {
241
			if ((gcc1 & AGP_I830_GCC1_DEV2) == AGP_I830_GCC1_DEV2_DISABLED) {
239
				if (bootverbose)
242
				if (bootverbose)
Lines 242-247 Link Here
242
			}
245
			}
243
			break;
246
			break;
244
247
248
			/* i915G */
249
		case 0x25828086:
250
		case 0x25928086:
251
			gcc1 = pci_read_config(bdev, AGP_I915_DEVEN, 4);
252
			if ((gcc1 & AGP_I915_DEVEN_D2F0) == AGP_I915_DEVEN_D2F0_DISABLED) {
253
				if (bootverbose)
254
					printf("I915: disabled, not probing\n");
255
				return ENXIO;
256
			}
257
			break;
258
245
		default:
259
		default:
246
			return ENXIO;
260
			return ENXIO;
247
		}
261
		}
Lines 285-290 Link Here
285
		sc->chiptype = CHIP_I855;
299
		sc->chiptype = CHIP_I855;
286
		break;
300
		break;
287
	case 0x25828086:
301
	case 0x25828086:
302
	case 0x25928086:
288
		sc->chiptype = CHIP_I915;
303
		sc->chiptype = CHIP_I915;
289
		break;
304
		break;
290
	};
305
	};
Lines 386-414 Link Here
386
	} else if (sc->chiptype == CHIP_I855 || sc->chiptype == CHIP_I915) {	/* CHIP_I855 */
401
	} else if (sc->chiptype == CHIP_I855 || sc->chiptype == CHIP_I915) {	/* CHIP_I855 */
387
		/* The i855 automatically initializes the 128k gatt on boot. */
402
		/* The i855 automatically initializes the 128k gatt on boot. */
388
		unsigned int gcc1, pgtblctl;
403
		unsigned int gcc1, pgtblctl;
404
		int steal;
405
		steal = (sc->chiptype == CHIP_I855 ? 132 : 260);
389
		
406
		
390
		gcc1 = pci_read_config(sc->bdev, AGP_I855_GCC1, 1);
407
		gcc1 = pci_read_config(sc->bdev, AGP_I855_GCC1, 1);
391
		switch (gcc1 & AGP_I855_GCC1_GMS) {
408
		switch (gcc1 & AGP_I855_GCC1_GMS) {
392
			case AGP_I855_GCC1_GMS_STOLEN_1M:
409
			case AGP_I855_GCC1_GMS_STOLEN_1M:
393
				sc->stolen = (1024 - 132) * 1024 / 4096;
410
				sc->stolen = (1024 - steal) * 1024 / 4096;
394
				break;
411
				break;
395
			case AGP_I855_GCC1_GMS_STOLEN_4M: 
412
			case AGP_I855_GCC1_GMS_STOLEN_4M: 
396
				sc->stolen = (4096 - 132) * 1024 / 4096;
413
				sc->stolen = (4096 - steal) * 1024 / 4096;
397
				break;
414
				break;
398
			case AGP_I855_GCC1_GMS_STOLEN_8M: 
415
			case AGP_I855_GCC1_GMS_STOLEN_8M: 
399
				sc->stolen = (8192 - 132) * 1024 / 4096;
416
				sc->stolen = (8192 - steal) * 1024 / 4096;
400
				break;
417
				break;
401
			case AGP_I855_GCC1_GMS_STOLEN_16M: 
418
			case AGP_I855_GCC1_GMS_STOLEN_16M: 
402
				sc->stolen = (16384 - 132) * 1024 / 4096;
419
				sc->stolen = (16384 - steal) * 1024 / 4096;
403
				break;
420
				break;
404
			case AGP_I855_GCC1_GMS_STOLEN_32M: 
421
			case AGP_I855_GCC1_GMS_STOLEN_32M: 
405
				sc->stolen = (32768 - 132) * 1024 / 4096;
422
				sc->stolen = (32768 - steal) * 1024 / 4096;
406
				break;
423
				break;
407
			case AGP_I915_GCC1_GMS_STOLEN_48M: 
424
			case AGP_I915_GCC1_GMS_STOLEN_48M: 
408
				sc->stolen = (49152 - 132) * 1024 / 4096;
425
				sc->stolen = (49152 - steal) * 1024 / 4096;
409
				break;
426
				break;
410
			case AGP_I915_GCC1_GMS_STOLEN_64M: 
427
			case AGP_I915_GCC1_GMS_STOLEN_64M: 
411
				sc->stolen = (65536 - 132) * 1024 / 4096;
428
				sc->stolen = (65536 - steal) * 1024 / 4096;
412
				break;
429
				break;
413
			default:
430
			default:
414
				sc->stolen = 0;
431
				sc->stolen = 0;
Lines 504-511 Link Here
504
	case CHIP_I855:
521
	case CHIP_I855:
505
		return 128 * 1024 * 1024;
522
		return 128 * 1024 * 1024;
506
	case CHIP_I915:
523
	case CHIP_I915:
507
		temp = pci_read_config(sc->bdev, AGP_I915_GMADR, 4);
524
		temp = pci_read_config(dev, AGP_I915_MSAC, 1);
508
		if (temp & (1 << 27)) {
525
		if ((temp & AGP_I915_MSAC_GMASIZE) == AGP_I915_MSAC_GMASIZE_128) {
509
			return 128 * 1024 * 1024;
526
			return 128 * 1024 * 1024;
510
		} else {
527
		} else {
511
			return 256 * 1024 * 1024;
528
			return 256 * 1024 * 1024;
Lines 563-583 Link Here
563
		}
580
		}
564
		break;
581
		break;
565
	case CHIP_I915:
582
	case CHIP_I915:
566
		temp = pci_read_config(sc->bdev, AGP_I915_GMADR, 4);
583
		temp = pci_read_config(dev, AGP_I915_MSAC, 1);
584
		temp &= ~AGP_I915_MSAC_GMASIZE;
567
585
568
		switch (aperture) {
586
		switch (aperture) {
569
		case 128 * 1024 * 1024:
587
		case 128 * 1024 * 1024:
570
			temp |= (1 << 27);
588
			temp |= AGP_I915_MSAC_GMASIZE_128;
571
			break;
589
			break;
572
		case 256 * 1024 * 1024:
590
		case 256 * 1024 * 1024:
573
			temp &= ~(1 << 27);
591
			temp |= AGP_I915_MSAC_GMASIZE_256;
574
			break;
592
			break;
575
		default:
593
		default:
576
			device_printf(dev, "bad aperture size %d\n", aperture);
594
			device_printf(dev, "bad aperture size %d\n", aperture);
577
			return EINVAL;
595
			return EINVAL;
578
		}
596
		}
579
597
580
		pci_write_config(sc->bdev, AGP_I915_GMADR, temp, 4);
598
		pci_write_config(dev, AGP_I915_MSAC, temp, 1);
581
		break;
599
		break;
582
	}
600
	}
583
601
(-)agpreg.h.new (+8 lines)
Lines 240-245 Link Here
240
#define AGP_I915_GTTADR			0x1C
240
#define AGP_I915_GTTADR			0x1C
241
#define AGP_I915_GCC1_GMS_STOLEN_48M	0x60
241
#define AGP_I915_GCC1_GMS_STOLEN_48M	0x60
242
#define AGP_I915_GCC1_GMS_STOLEN_64M	0x70
242
#define AGP_I915_GCC1_GMS_STOLEN_64M	0x70
243
#define AGP_I915_DEVEN			0x54
244
#define AGP_I915_DEVEN_D2F0		0x08
245
#define AGP_I915_DEVEN_D2F0_ENABLED	0x08
246
#define AGP_I915_DEVEN_D2F0_DISABLED	0x00
247
#define AGP_I915_MSAC			0x62
248
#define AGP_I915_MSAC_GMASIZE		0x02
249
#define AGP_I915_MSAC_GMASIZE_128	0x02
250
#define AGP_I915_MSAC_GMASIZE_256	0x00
243
251
244
/*
252
/*
245
 * NVIDIA nForce/nForce2 registers
253
 * NVIDIA nForce/nForce2 registers

Return to bug 80396