Date: Tue, 2 Feb 2010 00:10:04 GMT From: Mark Linimon <linimon@lonesome.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/143427: [agp] Patch for D510 pinetail AGP problem Message-ID: <201002020010.o120A4og057399@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/143427; it has been noted by GNATS. From: Mark Linimon <linimon@lonesome.com> To: bug-followup@FreeBSD.org Cc: Subject: Re: kern/143427: [agp] Patch for D510 pinetail AGP problem Date: Mon, 1 Feb 2010 18:09:19 -0600 ----- Forwarded message from Mamoru Sumida <msumida@mvc.biglobe.ne.jp> ----- From: Mamoru Sumida <msumida@mvc.biglobe.ne.jp> To: linimon@FreeBSD.org Cc: msumida@mvc.biglobe.ne.jp, freebsd-bugs@FreeBSD.org Subject: Re: kern/143427: [agp] Patch for D510 pinetail AGP problem Oops!! Have I forgot to attach the patch? Here is For src/dev/apg/apg_i810.c src/dev/drm/drm_pciids.h src/dev/drm/i930_drv.h src/dev/drm/i930_reg.h Thanks --- i915_drv.h.orig 2010-02-01 11:42:16.000000000 +0000 +++ i915_drv.h 2010-01-30 15:55:43.000000000 +0000 @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.h,v 1.4.2.9 2009/10/30 16:38:53 rnoland Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/i915_drv.h,v 1.13.2.2 2009/10/30 16:37:58 rnoland Exp $"); #ifndef _I915_DRV_H_ #define _I915_DRV_H_ @@ -657,16 +657,23 @@ (dev)->pci_device == 0x2E32 || \ IS_GM45(dev)) +#define IS_IGDG(dev) ((dev)->pci_device == 0xa001) +#define IS_IGDGM(dev) ((dev)->pci_device == 0xa011) +#define IS_IGD(dev) (IS_IGDG(dev) || IS_IGDGM(dev)) + #define IS_G33(dev) ((dev)->pci_device == 0x29C2 || \ (dev)->pci_device == 0x29B2 || \ - (dev)->pci_device == 0x29D2) + (dev)->pci_device == 0x29D2 || \ + (IS_IGD(dev))) + #define IS_I9XX(dev) (IS_I915G(dev) || IS_I915GM(dev) || IS_I945G(dev) || \ IS_I945GM(dev) || IS_I965G(dev) || IS_G33(dev)) #define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \ - IS_I945GM(dev) || IS_I965GM(dev) || IS_GM45(dev)) - + IS_I945GM(dev) || IS_I965GM(dev) || IS_GM45(dev) || \ + IS_IGD(dev)) + #define I915_NEED_GFX_HWS(dev) (IS_G33(dev) || IS_GM45(dev) || IS_G4X(dev)) #define PRIMARY_RINGBUFFER_SIZE (128*1024) --- i915_reg.h.orig 2010-02-01 11:41:26.000000000 +0000 +++ i915_reg.h 2010-01-30 15:59:15.000000000 +0000 @@ -23,7 +23,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/drm/i915_reg.h,v 1.3.2.1.2.1 2009/10/25 01:10:29 kensmith Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/drm/i915_reg.h,v 1.3.2.1 2009/08/03 08:13:06 kensmith Exp $"); #ifndef _I915_REG_H_ #define _I915_REG_H_ @@ -362,6 +362,7 @@ #define DPLLB_LVDS_P2_CLOCK_DIV_7 (1 << 24) /* i915 */ #define DPLL_P2_CLOCK_DIV_MASK 0x03000000 /* i915 */ #define DPLL_FPA01_P1_POST_DIV_MASK 0x00ff0000 /* i915 */ +#define DPLL_FPA01_P1_POST_DIV_MASK_IGD 0x00ff8000 /* IGD */ #define I915_FIFO_UNDERRUN_STATUS (1UL<<31) #define I915_CRC_ERROR_ENABLE (1UL<<29) @@ -438,6 +439,7 @@ */ #define DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS 0x003f0000 #define DPLL_FPA01_P1_POST_DIV_SHIFT 16 +#define DPLL_FPA01_P1_POST_DIV_SHIFT_IGD 15 /* i830, required in DVO non-gang */ #define PLL_P2_DIVIDE_BY_4 (1 << 23) #define PLL_P1_DIVIDE_BY_TWO (1 << 21) /* i830 */ @@ -504,10 +506,12 @@ #define FPB0 0x06048 #define FPB1 0x0604c #define FP_N_DIV_MASK 0x003f0000 +#define FP_N_IGD_DIV_MASK 0x00ff0000 #define FP_N_DIV_SHIFT 16 #define FP_M1_DIV_MASK 0x00003f00 #define FP_M1_DIV_SHIFT 8 #define FP_M2_DIV_MASK 0x0000003f +#define FP_M2_IGD_DIV_MASK 0x000000ff #define FP_M2_DIV_SHIFT 0 #define DPLL_TEST 0x606c #define DPLLB_TEST_SDVO_DIV_1 (0 << 22) --- drm_pciids.h.orig 2010-02-01 11:37:35.000000000 +0000 +++ drm_pciids.h 2010-01-30 16:00:40.000000000 +0000 @@ -553,6 +553,8 @@ {0x8086, 0x2E12, CHIP_I9XX|CHIP_I965, "Intel Q45/Q43"}, \ {0x8086, 0x2E22, CHIP_I9XX|CHIP_I965, "Intel G45/G43"}, \ {0x8086, 0x2E32, CHIP_I9XX|CHIP_I965, "Intel G41"}, \ + {0x8086, 0xA001, CHIP_I9XX|CHIP_I965, "Intel IGD"}, \ + {0x8086, 0xA011, CHIP_I9XX|CHIP_I965, "Intel IGD"}, \ {0, 0, 0, NULL} #define imagine_PCI_IDS \ --- agp_i810.c.orig 2010-02-01 11:36:11.000000000 +0000 +++ agp_i810.c 2010-01-30 16:28:27.000000000 +0000 @@ -70,6 +70,7 @@ CHIP_I915, /* 915G/915GM */ CHIP_I965, /* G965 */ CHIP_G33, /* G33/Q33/Q35 */ + CHIP_IGD, /* G33 like IGD */ CHIP_G4X, /* G45/Q45 */ }; @@ -165,6 +166,10 @@ "Intel Q33 SVGA controller"}, {0x2A028086, CHIP_I965, 0x00020000, "Intel GM965 SVGA controller"}, + {0xA0018086, CHIP_IGD, 0x00010000, + "Intel IGD SVGA controller"}, + {0xA0118086, CHIP_IGD, 0x00010000, + "Intel IGD SVGA controller"}, {0x2A128086, CHIP_I965, 0x00020000, "Intel GME965 SVGA controller"}, {0x2A428086, CHIP_G4X, 0x00020000, @@ -286,6 +291,7 @@ case CHIP_I915: case CHIP_I965: case CHIP_G33: + case CHIP_IGD: case CHIP_G4X: deven = pci_read_config(bdev, AGP_I915_DEVEN, 4); if ((deven & AGP_I915_DEVEN_D2F0) == @@ -351,6 +357,7 @@ case CHIP_I915: case CHIP_I965: case CHIP_G33: + case CHIP_IGD: case CHIP_G4X: device_printf(dev, "AGP_I855_GCC1: 0x%02x\n", pci_read_config(sc->bdev, AGP_I855_GCC1, 1)); @@ -386,6 +393,7 @@ break; case CHIP_I915: case CHIP_G33: + case CHIP_IGD: sc->sc_res_spec = agp_i915_res_spec; agp_set_aperture_resource(dev, AGP_I915_GMADR); break; @@ -401,7 +409,8 @@ return error; if (sc->chiptype != CHIP_I965 && sc->chiptype != CHIP_G33 && - sc->chiptype != CHIP_G4X && ptoa((vm_paddr_t)Maxmem) > 0xfffffffful) + sc->chiptype != CHIP_IGD && sc->chiptype != CHIP_G4X && + ptoa((vm_paddr_t)Maxmem) > 0xfffffffful) { device_printf(dev, "agp_i810.c does not support physical " "memory above 4GB.\n"); @@ -491,7 +500,7 @@ gatt->ag_physical = pgtblctl & ~1; } else if (sc->chiptype == CHIP_I855 || sc->chiptype == CHIP_I915 || sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 || - sc->chiptype == CHIP_G4X) { + sc->chiptype == CHIP_IGD || sc->chiptype == CHIP_G4X) { unsigned int gcc1, pgtblctl, stolen, gtt_size; /* Stolen memory is set up at the beginning of the aperture by @@ -553,6 +562,7 @@ return EINVAL; } break; + case CHIP_IGD: case CHIP_G4X: gtt_size = 0; break; @@ -587,6 +597,7 @@ if (sc->chiptype == CHIP_I915 || sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 || + sc->chiptype == CHIP_IGD || sc->chiptype == CHIP_G4X) { stolen = 48 * 1024; } else { @@ -597,6 +608,7 @@ if (sc->chiptype == CHIP_I915 || sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 || + sc->chiptype == CHIP_IGD || sc->chiptype == CHIP_G4X) { stolen = 64 * 1024; } else { @@ -606,6 +618,7 @@ case AGP_G33_GCC1_GMS_STOLEN_128M: if (sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 || + sc->chiptype == CHIP_IGD || sc->chiptype == CHIP_G4X) { stolen = 128 * 1024; } else { @@ -615,6 +628,7 @@ case AGP_G33_GCC1_GMS_STOLEN_256M: if (sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 || + sc->chiptype == CHIP_IGD || sc->chiptype == CHIP_G4X) { stolen = 256 * 1024; } else { @@ -783,6 +797,7 @@ case CHIP_I915: case CHIP_I965: case CHIP_G33: + case CHIP_IGD: case CHIP_G4X: return agp_generic_set_aperture(dev, aperture); } @@ -803,7 +818,7 @@ pte = (u_int32_t)physical | 1; if (sc->chiptype == CHIP_I965 || sc->chiptype == CHIP_G33 || - sc->chiptype == CHIP_G4X) { + sc->chiptype == CHIP_IGD || sc->chiptype == CHIP_G4X) { pte |= (physical & 0x0000000f00000000ull) >> 28; } else { /* If we do actually have memory above 4GB on an older system, @@ -822,6 +837,7 @@ AGP_I810_GTT + (offset >> AGP_PAGE_SHIFT) * 4, pte); break; case CHIP_I915: + case CHIP_IGD: case CHIP_G33: bus_write_4(sc->sc_res[1], (offset >> AGP_PAGE_SHIFT) * 4, pte); ----- End forwarded message -----
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201002020010.o120A4og057399>