removed usage of config manager, added more debug info for BeBits 1.5 release

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2999 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
beveloper
2003-03-23 15:39:01 +00:00
parent 4d6911ee07
commit 9d0fb244c1
@@ -1,7 +1,7 @@
/* /*
* BeOS Driver for Intel ICH AC'97 Link interface * BeOS Driver for Intel ICH AC'97 Link interface
* *
* Copyright (c) 2002, Marcus Overhagen <[email protected]> * Copyright (c) 2002, 2003 Marcus Overhagen <[email protected]>
* *
* All rights reserved. * All rights reserved.
* Redistribution and use in source and binary forms, with or without modification, * Redistribution and use in source and binary forms, with or without modification,
@@ -31,8 +31,6 @@
#include <OS.h> #include <OS.h>
#include <malloc.h> #include <malloc.h>
//#define DEBUG 2
#include "debug.h" #include "debug.h"
#include "config.h" #include "config.h"
#include "ich.h" #include "ich.h"
@@ -50,26 +48,18 @@ status_t find_pci_pin_irq(uint8 pin, uint8 *irq);
status_t probe_device(void) status_t probe_device(void)
{ {
pci_module_info *pcimodule; pci_module_info *pcimodule;
config_manager_for_driver_module_info *configmodule; struct pci_info info;
struct device_info info; struct pci_info *pciinfo = &info;
uint64 cookie; int index;
status_t result; status_t result;
struct device_info *dinfo;
struct pci_info *pciinfo;
uint32 value; uint32 value;
if (get_module(B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME,(module_info **)&configmodule) < 0) {
PRINT(("ERROR: couldn't load config manager module\n"));
return B_ERROR;
}
if (get_module(B_PCI_MODULE_NAME,(module_info **)&pcimodule) < 0) { if (get_module(B_PCI_MODULE_NAME,(module_info **)&pcimodule) < 0) {
PRINT(("ERROR: couldn't load pci module\n")); PRINT(("ERROR: couldn't load pci module\n"));
put_module(B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME);
return B_ERROR; return B_ERROR;
} }
config->name = 0; config->name = NULL;
config->nambar = 0; config->nambar = 0;
config->nabmbar = 0; config->nabmbar = 0;
config->mmbar = 0; config->mmbar = 0;
@@ -84,23 +74,10 @@ status_t probe_device(void)
config->area_mbbar = -1; config->area_mbbar = -1;
config->codecoffset = 0; config->codecoffset = 0;
result = B_ERROR; for (index = 0; B_OK == pcimodule->get_nth_pci_info(index, pciinfo); index++) {
cookie = 0; LOG(("Checking PCI device, vendor 0x%04x, id 0x%04x, bus 0x%02x, dev 0x%02x, func 0x%02x, rev 0x%02x, api 0x%02x, sub 0x%02x, base 0x%02x\n",
while (configmodule->get_next_device_info(B_PCI_BUS, &cookie, &info, sizeof(info)) == B_OK) { pciinfo->vendor_id, pciinfo->device_id, pciinfo->bus, pciinfo->device, pciinfo->function,
pciinfo->revision, pciinfo->class_api, pciinfo->class_sub, pciinfo->class_base));
if (info.config_status != B_OK)
continue;
dinfo = (struct device_info *) malloc(info.size);
if (dinfo == 0)
break;
if (configmodule->get_device_info_for(cookie, dinfo, info.size) != B_OK) {
free(dinfo);
break;
}
pciinfo = (struct pci_info *)((char *)dinfo + info.bus_dependent_info_offset);
if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x7195) { if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x7195) {
config->name = "Intel 82443MX"; config->name = "Intel 82443MX";
@@ -130,14 +107,21 @@ status_t probe_device(void)
} else if (pciinfo->vendor_id == 0x1022 && pciinfo->device_id == 0x7445) { } else if (pciinfo->vendor_id == 0x1022 && pciinfo->device_id == 0x7445) {
config->name = "AMD AMD768"; config->name = "AMD AMD768";
} else { } else {
free(dinfo);
continue; continue;
} }
break;
}
if (config->name == NULL) {
LOG(("probe_device() No compatible hardware found\n"));
put_module(B_PCI_MODULE_NAME);
return B_ERROR;
}
LOG(("found %s\n",config->name)); LOG(("found %s\n",config->name));
LOG(("revision = %d\n",pciinfo->revision)); LOG(("revision = %d\n",pciinfo->revision));
#if DEBUG #if DEBUG
LOG(("bus = %#x, device = %#x, function = %#x\n",pciinfo->bus, pciinfo->device, pciinfo->function)); LOG(("bus = %#x, device = %#x, function = %#x\n", pciinfo->bus, pciinfo->device, pciinfo->function));
value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x00, 2); value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x00, 2);
LOG(("VID = %#04x\n",value)); LOG(("VID = %#04x\n",value));
value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x02, 2); value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x02, 2);
@@ -204,19 +188,14 @@ status_t probe_device(void)
config->nabmbar = 0xfffffffe & pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x14, 4); config->nabmbar = 0xfffffffe & pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x14, 4);
} }
LOG(("irq = %d\n",config->irq)); LOG(("irq = %d\n", config->irq));
LOG(("nambar = %#08x\n",config->nambar)); LOG(("nambar = %#08x\n", config->nambar));
LOG(("nabmbar = %#08x\n",config->nabmbar)); LOG(("nabmbar = %#08x\n", config->nabmbar));
LOG(("mmbar = %#08x\n",config->mmbar)); LOG(("mmbar = %#08x\n", config->mmbar));
LOG(("mbbar = %#08x\n",config->mbbar)); LOG(("mbbar = %#08x\n", config->mbbar));
free(dinfo);
result = B_OK; result = B_OK;
}
if (result != B_OK)
LOG(("probe_device() hardware not found\n"));
//config->irq = 0;
if (config->irq == 0) { if (config->irq == 0) {
PRINT(("WARNING: no interrupt configured\n")); PRINT(("WARNING: no interrupt configured\n"));
/* /*
@@ -236,7 +215,6 @@ status_t probe_device(void)
} }
put_module(B_PCI_MODULE_NAME); put_module(B_PCI_MODULE_NAME);
put_module(B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME);
return result; return result;
} }