Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
* 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: (72 commits) Revert "x86/PCI: ACPI based PCI gap calculation" PCI: remove unnecessary volatile in PCIe hotplug struct controller x86/PCI: ACPI based PCI gap calculation PCI: include linux/pm_wakeup.h for device_set_wakeup_capable PCI PM: Fix pci_prepare_to_sleep x86/PCI: Fix PCI config space for domains > 0 Fix acpi_pm_device_sleep_wake() by providing a stub for CONFIG_PM_SLEEP=n PCI: Simplify PCI device PM code PCI PM: Introduce pci_prepare_to_sleep and pci_back_from_sleep PCI ACPI: Rework PCI handling of wake-up ACPI: Introduce new device wakeup flag 'prepared' ACPI: Introduce acpi_device_sleep_wake function PCI: rework pci_set_power_state function to call platform first PCI: Introduce platform_pci_power_manageable function ACPI: Introduce acpi_bus_power_manageable function PCI: make pci_name use dev_name PCI: handle pci_name() being const PCI: add stub for pci_set_consistent_dma_mask() PCI: remove unused arch pcibios_update_resource() functions PCI: fix pci_setup_device()'s sprinting into a const buffer ... Fixed up conflicts in various files (arch/x86/kernel/setup_64.c, arch/x86/pci/irq.c, arch/x86/pci/pci.h, drivers/acpi/sleep/main.c, drivers/pci/pci.c, drivers/pci/pci.h, include/acpi/acpi_bus.h) from x86 and ACPI updates manually.
This commit is contained in:
@@ -120,7 +120,18 @@ static struct chipset early_qrk[] __initdata = {
|
||||
{}
|
||||
};
|
||||
|
||||
static void __init check_dev_quirk(int num, int slot, int func)
|
||||
/**
|
||||
* check_dev_quirk - apply early quirks to a given PCI device
|
||||
* @num: bus number
|
||||
* @slot: slot number
|
||||
* @func: PCI function
|
||||
*
|
||||
* Check the vendor & device ID against the early quirks table.
|
||||
*
|
||||
* If the device is single function, let early_quirks() know so we don't
|
||||
* poke at this device again.
|
||||
*/
|
||||
static int __init check_dev_quirk(int num, int slot, int func)
|
||||
{
|
||||
u16 class;
|
||||
u16 vendor;
|
||||
@@ -131,7 +142,7 @@ static void __init check_dev_quirk(int num, int slot, int func)
|
||||
class = read_pci_config_16(num, slot, func, PCI_CLASS_DEVICE);
|
||||
|
||||
if (class == 0xffff)
|
||||
return;
|
||||
return -1; /* no class, treat as single function */
|
||||
|
||||
vendor = read_pci_config_16(num, slot, func, PCI_VENDOR_ID);
|
||||
|
||||
@@ -154,7 +165,9 @@ static void __init check_dev_quirk(int num, int slot, int func)
|
||||
type = read_pci_config_byte(num, slot, func,
|
||||
PCI_HEADER_TYPE);
|
||||
if (!(type & 0x80))
|
||||
return;
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void __init early_quirks(void)
|
||||
@@ -167,6 +180,9 @@ void __init early_quirks(void)
|
||||
/* Poor man's PCI discovery */
|
||||
for (num = 0; num < 32; num++)
|
||||
for (slot = 0; slot < 32; slot++)
|
||||
for (func = 0; func < 8; func++)
|
||||
check_dev_quirk(num, slot, func);
|
||||
for (func = 0; func < 8; func++) {
|
||||
/* Only probe function 0 on single fn devices */
|
||||
if (check_dev_quirk(num, slot, func))
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user