/* does this oprom support the given pci device, or any of the devices * that the driver supports?
*/ staticbool match_id(struct pci_dev *pdev, unsignedshort vendor, unsignedshort device)
{ struct pci_driver *drv = to_pci_driver(pdev->dev.driver); conststruct pci_device_id *id;
if (pdev->vendor == vendor && pdev->device == device) returntrue;
for (id = drv ? drv->id_table : NULL; id && id->vendor; id++) if (id->vendor == vendor && id->device == device) break;
/* video rom */
upper = adapter_rom_resources[0].start; for (start = video_rom_resource.start; start < upper; start += 2048) {
rom = isa_bus_to_virt(start); if (!romsignature(rom)) continue;
video_rom_resource.start = start;
if (get_kernel_nofault(c, rom + 2) != 0) continue;
/* system rom */
request_resource(&iomem_resource, &system_rom_resource);
upper = system_rom_resource.start;
/* check for extension rom (ignore length byte!) */
rom = isa_bus_to_virt(extension_rom_resource.start); if (romsignature(rom)) {
length = resource_size(&extension_rom_resource); if (romchecksum(rom, length)) {
request_resource(&iomem_resource, &extension_rom_resource);
upper = extension_rom_resource.start;
}
}
/* check for adapter roms on 2k boundaries */ for (i = 0; i < ARRAY_SIZE(adapter_rom_resources) && start < upper; start += 2048) {
rom = isa_bus_to_virt(start); if (!romsignature(rom)) continue;
if (get_kernel_nofault(c, rom + 2) != 0) continue;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.