From 4a84416c458027462ee6112a5fa442415597f6c2 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 27 May 2005 23:42:11 +0000 Subject: Modify drm_driver::device_is_agp to return a tri-state value to indicate that a device absolutely is, absolutely is not, or may or may not be AGP. Modify the i915 DRM to use this to force all i9x5 devices to be "AGP" (even the PCI-e devices). Reported by: Lukas Hejtmanek --- bsd-core/drmP.h | 6 ++++-- bsd-core/drm_agpsupport.c | 9 ++++++--- bsd-core/i915_drv.c | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) (limited to 'bsd-core') diff --git a/bsd-core/drmP.h b/bsd-core/drmP.h index 9943a4f6..8d648f65 100644 --- a/bsd-core/drmP.h +++ b/bsd-core/drmP.h @@ -644,8 +644,10 @@ struct drm_device { * * \param dev DRM device handle * - * \returns true if the card really is attached to AGP, false - * otherwise. + * \returns + * One of three values is returned depending on whether or not the + * card is absolutely \b not AGP (return of 0), absolutely \b is AGP + * (return of 1), or may or may not be AGP (return of 2). */ int (*device_is_agp) (struct drm_device * dev); diff --git a/bsd-core/drm_agpsupport.c b/bsd-core/drm_agpsupport.c index 33fb3f0c..540cb402 100644 --- a/bsd-core/drm_agpsupport.c +++ b/bsd-core/drm_agpsupport.c @@ -47,9 +47,12 @@ drm_device_is_agp(drm_device_t *dev) u_int8_t ptr, next; - if ( (dev->driver->device_is_agp != NULL) - && ! (*dev->driver->device_is_agp)( dev ) ) { - return 0; + if ( dev->driver->device_is_agp != NULL ) { + int err = (*dev->driver->device_is_agp)( dev ); + + if (err != 2) { + return err; + } } /* diff --git a/bsd-core/i915_drv.c b/bsd-core/i915_drv.c index bb674fa6..e2c58c7f 100644 --- a/bsd-core/i915_drv.c +++ b/bsd-core/i915_drv.c @@ -48,6 +48,7 @@ static void i915_configure(drm_device_t *dev) dev->dev_priv_size = 1; /* No dev_priv */ dev->prerelease = i915_driver_prerelease; dev->pretakedown = i915_driver_pretakedown; + dev->device_is_agp = i915_driver_device_is_agp, dev->irq_preinstall = i915_driver_irq_preinstall; dev->irq_postinstall = i915_driver_irq_postinstall; dev->irq_uninstall = i915_driver_irq_uninstall; -- cgit v1.2.3