rem: value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_subsystem_id, 2);
add: value = pci->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_subsystem_id, 2);
context: probe_device(void){	struct pci_info info; 	struct pci_info *pciinfo = &info;	int index;	int i;	status_t result;	uint32 value;	// initialize whole config to 0	memset(config, 0, sizeof(*config));	result = B_OK;	for (index = 0; B_OK == pci->get_nth_pci_info(index, pciinfo); index++) { 		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",			pciinfo->vendor_id, pciinfo->device_id, pciinfo->bus, pciinfo->device, pciinfo->function,			pciinfo->revision, pciinfo->class_api, pciinfo->class_sub, pciinfo->class_base));		for (i = 0; device_list[i].vendor_id; i++) {			if (device_list[i].vendor_id == pciinfo->vendor_id && device_list[i].device_id == pciinfo->device_id) {				config->name = device_list[i].name;				config->type = device_list[i].type;				goto probe_ok;			}		}	}	LOG(("No compatible hardware found\n"));	result = B_ERROR;	goto probe_done;probe_ok:	LOG(("found %s\n",config->name));	LOG(("revision = %d\n",pciinfo->revision));	#if DEBUG		LOG(("bus = %d, device = %d, function = %d\n", pciinfo->bus, pciinfo->device, pciinfo->function));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_vendor_id, 2);		LOG(("vendor id = 0x%04x\n",value));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_device_id, 2);		LOG(("device id = 0x%04x\n",value));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_revision, 1);		LOG(("revision = 0x%02x\n",value));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_subsystem_vendor_id, 2);		LOG(("subsystem vendor = 0x%04x\n",value));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_subsystem_id, 2);		LOG(("subsystem device = 0x%04x\n",value));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x04, 2);		LOG(("PCICMD = %#04x\n",value));		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x06, 2);		LOG(("PCISTS = %#04x\n",value));	#endif	/* for ICH4 enable memory mapped IO and busmaster access,	 * for old ICHs enable programmed IO and busmaster access	 */	value = pci->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;	pci->write_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_PCICMD, 2, value);			#if DEBUG		value = pcimodule->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, PCI_PCICMD, 2);		LOG(("PCICMD = %#04x\n",value));	#endif	/* read memory-io and port-io bars	 */	config->nambar	= pci->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x10, 4);	config->nabmbar	= pci->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x14, 4);	config->mmbar	= pci->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x18, 4);	config->mbbar	= pci->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x1C, 4);	config->irq		= pci->read_pci_config(pciinfo->bus, pciinfo->device, pciinfo->function, 0x3C, 1);	config->nambar  &= PCI_address_io_mask;	config->nabmbar &= PCI_address_io_mask;	config->mmbar   &= PCI_address_memory_32_mask;	config->mbbar   &= PCI_address_memory_32_mask;       	if (config->irq == 0 || config->irq == 0xff) {		PRINT(("WARNING: no interrupt configured\n"));		/* we can continue without an interrupt, as another 		 * workaround to handle this is also implemented		 * force irq to be 0, not 0xff if no irq assigned		 */		config->irq = 0;	}	/* the ICH4 uses memory mapped IO */	if ((config->type & TYPE_ICH4) && ((config->mmbar == 0) || (config->mbbar == 0))) {		PRINT(("ERROR: memory mapped IO not configured\n"));		result = B_ERROR;	}	/* all other ICHs use programmed IO */	if (!(config->type & TYPE_ICH4) && ((config->nambar == 0) || (config->nabmbar == 0))) {		PRINT(("ERROR: IO space not configured\n"));		result = B_ERROR;	}	LOG(("nambar  = 0x%08x\n", config->nambar));	LOG(("nabmbar = 0x%08x\n", config->nabmbar));	LOG(("mmbar   = 0x%08x\n", config->mmbar));	LOG(("mbbar   = 0x%08x\n", config->mbbar));	LOG(("irq     = %d\n",    config->irq));probe_done:	return result;}