From 24223277db8ec2f6ffe6b707f0d76459d61ceb5f Mon Sep 17 00:00:00 2001 From: Rudolf Cornelissen Date: Wed, 14 Jul 2004 18:36:54 +0000 Subject: [PATCH] card match detection for AGP updated git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8397 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/graphics/nvidia/DriverInterface.h | 3 +++ src/add-ons/accelerants/nvidia/engine/nv_agp.c | 6 +++++- src/add-ons/kernel/drivers/graphics/nvidia/driver.c | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/headers/private/graphics/nvidia/DriverInterface.h b/headers/private/graphics/nvidia/DriverInterface.h index 4cd196e196..0661c3e0b3 100644 --- a/headers/private/graphics/nvidia/DriverInterface.h +++ b/headers/private/graphics/nvidia/DriverInterface.h @@ -101,6 +101,9 @@ typedef struct { uint16 vendor_id; /* PCI vendor ID, from pci_info */ uint16 device_id; /* PCI device ID, from pci_info */ uint8 revision; /* PCI device revsion, from pci_info */ + uint8 bus; /* PCI bus number, from pci_info */ + uint8 device; /* PCI device number on bus, from pci_info */ + uint8 function; /* PCI function number in device, from pci_info */ /* bug workaround for 4.5.0 */ uint32 use_clone_bugfix; /*for 4.5.0, cloning of physical memory does not work*/ diff --git a/src/add-ons/accelerants/nvidia/engine/nv_agp.c b/src/add-ons/accelerants/nvidia/engine/nv_agp.c index f72a7d7550..1e00f059b1 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_agp.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_agp.c @@ -70,7 +70,11 @@ status_t nv_agp_setup(void) LOG(4,("AGP: AGP capable device #%d:\n", (index + 1))); /* see if we are this one */ - if (((((uint32)(nai.agpi.device_id)) << 16) | nai.agpi.vendor_id) == CFGR(DEVID)) + if ((nai.agpi.device_id == si->device_id) && + (nai.agpi.vendor_id == si->vendor_id) && + (nai.agpi.bus == si->bus) && + (nai.agpi.device == si->device) && + (nai.agpi.function == si->function)) { LOG(4,("AGP: (this is the device this accelerant controls)\n")); agp = true; diff --git a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c index 473cc91bc8..2e32dcbc51 100644 --- a/src/add-ons/kernel/drivers/graphics/nvidia/driver.c +++ b/src/add-ons/kernel/drivers/graphics/nvidia/driver.c @@ -779,6 +779,9 @@ static status_t open_hook (const char* name, uint32 flags, void** cookie) { si->vendor_id = di->pcii.vendor_id; si->device_id = di->pcii.device_id; si->revision = di->pcii.revision; + si->bus = di->pcii.bus; + si->device = di->pcii.device; + si->function = di->pcii.function; /* map the device */ result = map_device(di);