summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2006-02-01 15:45:29 +0000
committerjhb <jhb@FreeBSD.org>2006-02-01 15:45:29 +0000
commit16c9ed73d6b803cc7c25cdeec1d82956eb5bc231 (patch)
tree7f7e63d69e06c87fd4f488209e042af6d504d377 /sys/dev
parent41ffd5b92bd381c4a81a8758108bd2811397537e (diff)
downloadFreeBSD-src-16c9ed73d6b803cc7c25cdeec1d82956eb5bc231.zip
FreeBSD-src-16c9ed73d6b803cc7c25cdeec1d82956eb5bc231.tar.gz
Don't add an agp child in vgapci's attach routine if the PCIY_AGP
capability is present as not all devices supported by the agp_i810 driver (such as i915) have the AGP capability. Instead, add an identify routine to the agp_i810 driver that uses the PCI ID to determine if it should create an agp child device.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/agp/agp_i810.c10
-rw-r--r--sys/dev/pci/vga_pci.c7
2 files changed, 10 insertions, 7 deletions
diff --git a/sys/dev/agp/agp_i810.c b/sys/dev/agp/agp_i810.c
index 1aa187b..7b21a41 100644
--- a/sys/dev/agp/agp_i810.c
+++ b/sys/dev/agp/agp_i810.c
@@ -194,6 +194,15 @@ agp_i810_find_bridge(device_t dev)
return 0;
}
+static void
+agp_i810_identify(driver_t *driver, device_t parent)
+{
+
+ if (device_find_child(parent, "agp", -1) == NULL &&
+ agp_i810_match(parent))
+ device_add_child(parent, "agp", -1);
+}
+
static int
agp_i810_probe(device_t dev)
{
@@ -799,6 +808,7 @@ agp_i810_unbind_memory(device_t dev, struct agp_memory *mem)
static device_method_t agp_i810_methods[] = {
/* Device interface */
+ DEVMETHOD(device_identify, agp_i810_identify),
DEVMETHOD(device_probe, agp_i810_probe),
DEVMETHOD(device_attach, agp_i810_attach),
DEVMETHOD(device_detach, agp_i810_detach),
diff --git a/sys/dev/pci/vga_pci.c b/sys/dev/pci/vga_pci.c
index ea7ce33..54424a2 100644
--- a/sys/dev/pci/vga_pci.c
+++ b/sys/dev/pci/vga_pci.c
@@ -70,13 +70,6 @@ vga_pci_attach(device_t dev)
bus_generic_probe(dev);
- /*
- * If AGP capabilities are present on this device, then create
- * an AGP child.
- */
- if (pci_find_extcap(dev, PCIY_AGP, NULL) == 0)
- device_add_child(dev, "agp", -1);
-
/* Always create a drm child for now to make it easier on drm. */
device_add_child(dev, "drm", -1);
bus_generic_attach(dev);
OpenPOWER on IntegriCloud