rem: TRACE(("DID = %#04x\n",value));
add: LOG(("DID = %#04x\n",value));
context: status_t probe_device(void){	pci_module_info *pcimodule;	config_manager_for_driver_module_info *configmodule;	struct device_info info; 	uint64 cookie; 	status_t result;	struct device_info *dinfo; 	struct pci_info *pciinfo; 	uint32 value;	if (get_module(B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME,(module_info **)&configmodule) < 0) {		dprintf(DRIVER_NAME " ERROR: couldn't load config manager module\n");		return B_ERROR; 	}	if (get_module(B_PCI_MODULE_NAME,(module_info **)&pcimodule) < 0) {		dprintf(DRIVER_NAME " ERROR: couldn't load pci module\n");		put_module(B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME);		return B_ERROR; 	}	config->name = 0;	config->nambar = 0;	config->nabmbar = 0;	config->mmbar = 0;	config->mbbar = 0;	config->irq = 0;	config->sample_size = 2;	config->swap_reg = false;	config->type = 0;	config->log_mmbar = 0;	config->log_mbbar = 0;	config->area_mmbar = -1;	config->area_mbbar = -1;	result = B_ERROR;	cookie = 0;	while (configmodule->get_next_device_info(B_PCI_BUS, &cookie, &info, sizeof(info)) == B_OK) { 		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) {			config->name = "Intel 82443MX"; 		} else if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x2415) { /* verified */			config->name = "Intel 82801AA (ICH)";		} else if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x2425) { /* verified */			config->name = "Intel 82801AB (ICH0)";		} else if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x2445) { /* verified */			config->name = "Intel 82801BA (ICH2), Intel 82801BAM (ICH2-M)";		} else if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x2485) { /* verified */			config->name = "Intel 82801CA (ICH3-S), Intel 82801CAM (ICH3-M)";		} else if (pciinfo->vendor_id == 0x8086 && pciinfo->device_id == 0x24C5) { /* verified */			config->name = "Intel 82801DB (ICH4)";			config->type = TYPE_ICH4;		} else if (pciinfo->vendor_id == 0x1039 && pciinfo->device_id == 0x7012) { /* verified */			config->name = "SiS SI7012";			config->swap_reg = true;			config->sample_size = 1;		} else if (pciinfo->vendor_id == 0x10DE && pciinfo->device_id == 0x01B1) {			config->name = "Nvidia nForce AC97";		} else if (pciinfo->vendor_id == 0x1022 && pciinfo->device_id == 0x764d) {			config->name = "AMD AMD8111";		} else if (pciinfo->vendor_id == 0x1022 && pciinfo->device_id == 0x7445) {			config->name = "AMD AMD768";		} else {			free(dinfo);			continue;		}		TRACE(("found %s\n",config->name));		TRACE(("revision = %d\n",pciinfo->revision));		#if DEBUG			TRACE(("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);			TRACE(("VID = %#04x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x02, 2);			TRACE(("DID = %#04x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x08, 1);			TRACE(("RID = %#02x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x04, 2);			TRACE(("PCICMD = %#04x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x06, 2);			TRACE(("PCISTS = %#04x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x10, 4);			TRACE(("NAMBAR = %#08x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x14, 4);			TRACE(("NABMBAR = %#08x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x3c, 1);			TRACE(("INTR_LN = %#02x\n",value));			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x3d, 1);			TRACE(("INTR_PN = %#02x\n",value));		#endif		/*		 * for ICH4 enable memory mapped IO and busmaster access,		 * for old ICHs enable programmed IO and busmaster access		 */		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_PCICMD, 2);		if (config->type & TYPE_ICH4)			value |= PCI_PCICMD_MSE | PCI_PCICMD_BME;		else			value |= PCI_PCICMD_IOS | PCI_PCICMD_BME;		pcimodule->write_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x04, 2, value);				#if DEBUG			value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_PCICMD, 2);			TRACE(("PCICMD = %#04x\n",value));		#endif				config->irq = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x3C, 1);		if (config->irq == 0 || config->irq == 0xff) {			// workaround: even if no irq is configured, we may be able to find the correct one			uint8 pin;			uint8 irq;			pin = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x3d, 1);			TRACE(("IRQ not assigned to pin %d\n",pin));			TRACE(("Searching for IRQ...\n"));			if (B_OK == find_pci_pin_irq(pin, &irq)) {				TRACE(("Assigning IRQ %d to pin %d\n",irq,pin));				config->irq = irq;			} else {				config->irq = 0; // always 0, not 0xff if no irq assigned			}		}				if (config->type & TYPE_ICH4) {			// memory mapped access			config->mmbar = 0xfffffffe & pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x18, 4);			config->mbbar = 0xfffffffe & pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x1C, 4);		} else {			// pio access			config->nambar = 0xfffffffe & pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x10, 4);			config->nabmbar = 0xfffffffe & pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x14, 4);		}		TRACE(("irq     = %d\n",config->irq));		TRACE(("nambar  = %#08x\n",config->nambar));		TRACE(("nabmbar = %#08x\n",config->nabmbar));		TRACE(("mmbar   = %#08x\n",config->mmbar));		TRACE(("mbbar   = %#08x\n",config->mbbar));		free(dinfo);		result = B_OK;	}	if (result != B_OK)		TRACE(("probe_device() hardware not found\n"));//config->irq = 0;	if (config->irq == 0) {		dprintf(DRIVER_NAME ": WARNING: no interrupt configured\n");		/*		 * we can continue without an interrupt, as another 		 * workaround to handle this is also implemented		 */	}	/* the ICH4 uses memory mapped IO */	if ((config->type & TYPE_ICH4) != 0 && ((config->mmbar == 0) || (config->mbbar == 0))) {		dprintf(DRIVER_NAME " ERROR: memory mapped IO not configured\n");		result = B_ERROR;	}	/* all other ICHs use programmed IO */	if ((config->type & TYPE_ICH4) == 0 && ((config->nambar == 0) || (config->nabmbar == 0))) {		dprintf(DRIVER_NAME " ERROR: IO space not configured\n");		result = B_ERROR;	}	put_module(B_PCI_MODULE_NAME);	put_module(B_CONFIG_MANAGER_FOR_DRIVER_MODULE_NAME);	return result;}