diff -Nru a/drivers/acpi/osl.c b/drivers/acpi/osl.c --- a/drivers/acpi/osl.c Fri Aug 30 22:33:32 2002 +++ b/drivers/acpi/osl.c Fri Aug 30 22:33:32 2002 @@ -71,6 +71,7 @@ static OSD_HANDLER acpi_irq_handler = NULL; static void *acpi_irq_context = NULL; +extern struct pci_ops *pci_root_ops; acpi_status acpi_os_initialize(void) @@ -80,7 +81,7 @@ * it while walking the namespace (bus 0 and root bridges w/ _BBNs). */ #ifdef CONFIG_ACPI_PCI - if (!pci_config_read || !pci_config_write) { + if (!pci_root_ops) { printk(KERN_ERR PREFIX "Access to PCI configuration space unavailable\n"); return AE_NULL_ENTRY; } @@ -438,27 +439,31 @@ u32 width) { int result = 0; + int size = 0; + struct pci_bus bus; + if (!value) return AE_BAD_PARAMETER; - switch (width) - { + switch (width) { case 8: - result = pci_config_read(pci_id->segment, pci_id->bus, - pci_id->device, pci_id->function, reg, 1, value); + size = 1; break; case 16: - result = pci_config_read(pci_id->segment, pci_id->bus, - pci_id->device, pci_id->function, reg, 2, value); + size = 2; break; case 32: - result = pci_config_read(pci_id->segment, pci_id->bus, - pci_id->device, pci_id->function, reg, 4, value); + size = 4; break; default: BUG(); } + bus.number = pci_id->bus; + result = pci_root_ops->read(&bus, PCI_DEVFN(pci_id->device, + pci_id->function), + reg, size, value); + return (result ? AE_ERROR : AE_OK); } @@ -470,25 +475,27 @@ u32 width) { int result = 0; + int size = 0; + struct pci_bus bus; - switch (width) - { + switch (width) { case 8: - result = pci_config_write(pci_id->segment, pci_id->bus, - pci_id->device, pci_id->function, reg, 1, value); + size = 1; break; case 16: - result = pci_config_write(pci_id->segment, pci_id->bus, - pci_id->device, pci_id->function, reg, 2, value); + size = 2; break; case 32: - result = pci_config_write(pci_id->segment, pci_id->bus, - pci_id->device, pci_id->function, reg, 4, value); + size = 4; break; default: BUG(); } + bus.number = pci_id->bus; + result = pci_root_ops->write(&bus, PCI_DEVFN(pci_id->device, + pci_id->function), + reg, size, value); return (result ? AE_ERROR : AE_OK); }