diff options
| -rw-r--r-- | Documentation/power/pci.txt | 17 | ||||
| -rw-r--r-- | arch/i386/pci/common.c | 8 | ||||
| -rw-r--r-- | drivers/pci/pcie/portdrv_pci.c | 2 | ||||
| -rw-r--r-- | drivers/pci/quirks.c | 18 |
4 files changed, 23 insertions, 22 deletions
diff --git a/Documentation/power/pci.txt b/Documentation/power/pci.txt index c750f9f2e76e..b6a3cbf7e846 100644 --- a/Documentation/power/pci.txt +++ b/Documentation/power/pci.txt | |||
| @@ -102,31 +102,28 @@ pci_save_state | |||
| 102 | -------------- | 102 | -------------- |
| 103 | 103 | ||
| 104 | Usage: | 104 | Usage: |
| 105 | pci_save_state(dev, buffer); | 105 | pci_save_state(struct pci_dev *dev); |
| 106 | 106 | ||
| 107 | Description: | 107 | Description: |
| 108 | Save first 64 bytes of PCI config space. Buffer must be allocated by | 108 | Save first 64 bytes of PCI config space, along with any additional |
| 109 | caller. | 109 | PCI-Express or PCI-X information. |
| 110 | 110 | ||
| 111 | 111 | ||
| 112 | pci_restore_state | 112 | pci_restore_state |
| 113 | ----------------- | 113 | ----------------- |
| 114 | 114 | ||
| 115 | Usage: | 115 | Usage: |
| 116 | pci_restore_state(dev, buffer); | 116 | pci_restore_state(struct pci_dev *dev); |
| 117 | 117 | ||
| 118 | Description: | 118 | Description: |
| 119 | Restore previously saved config space. (First 64 bytes only); | 119 | Restore previously saved config space. |
| 120 | |||
| 121 | If buffer is NULL, then restore what information we know about the | ||
| 122 | device from bootup: BARs and interrupt line. | ||
| 123 | 120 | ||
| 124 | 121 | ||
| 125 | pci_set_power_state | 122 | pci_set_power_state |
| 126 | ------------------- | 123 | ------------------- |
| 127 | 124 | ||
| 128 | Usage: | 125 | Usage: |
| 129 | pci_set_power_state(dev, state); | 126 | pci_set_power_state(struct pci_dev *dev, pci_power_t state); |
| 130 | 127 | ||
| 131 | Description: | 128 | Description: |
| 132 | Transition device to low power state using PCI PM Capabilities | 129 | Transition device to low power state using PCI PM Capabilities |
| @@ -142,7 +139,7 @@ pci_enable_wake | |||
| 142 | --------------- | 139 | --------------- |
| 143 | 140 | ||
| 144 | Usage: | 141 | Usage: |
| 145 | pci_enable_wake(dev, state, enable); | 142 | pci_enable_wake(struct pci_dev *dev, pci_power_t state, int enable); |
| 146 | 143 | ||
| 147 | Description: | 144 | Description: |
| 148 | Enable device to generate PME# during low power state using PCI PM | 145 | Enable device to generate PME# during low power state using PCI PM |
diff --git a/arch/i386/pci/common.c b/arch/i386/pci/common.c index 1bb069372143..948436665385 100644 --- a/arch/i386/pci/common.c +++ b/arch/i386/pci/common.c | |||
| @@ -193,6 +193,14 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | |||
| 193 | }, | 193 | }, |
| 194 | { | 194 | { |
| 195 | .callback = set_bf_sort, | 195 | .callback = set_bf_sort, |
| 196 | .ident = "Dell PowerEdge R900", | ||
| 197 | .matches = { | ||
| 198 | DMI_MATCH(DMI_SYS_VENDOR, "Dell"), | ||
| 199 | DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge R900"), | ||
| 200 | }, | ||
| 201 | }, | ||
| 202 | { | ||
| 203 | .callback = set_bf_sort, | ||
| 196 | .ident = "HP ProLiant BL20p G3", | 204 | .ident = "HP ProLiant BL20p G3", |
| 197 | .matches = { | 205 | .matches = { |
| 198 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), | 206 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), |
diff --git a/drivers/pci/pcie/portdrv_pci.c b/drivers/pci/pcie/portdrv_pci.c index 0be5a0b30725..df383645e366 100644 --- a/drivers/pci/pcie/portdrv_pci.c +++ b/drivers/pci/pcie/portdrv_pci.c | |||
| @@ -93,7 +93,7 @@ static int __devinit pcie_portdrv_probe (struct pci_dev *dev, | |||
| 93 | if (!dev->irq && dev->pin) { | 93 | if (!dev->irq && dev->pin) { |
| 94 | printk(KERN_WARNING | 94 | printk(KERN_WARNING |
| 95 | "%s->Dev[%04x:%04x] has invalid IRQ. Check vendor BIOS\n", | 95 | "%s->Dev[%04x:%04x] has invalid IRQ. Check vendor BIOS\n", |
| 96 | __FUNCTION__, dev->device, dev->vendor); | 96 | __FUNCTION__, dev->vendor, dev->device); |
| 97 | } | 97 | } |
| 98 | if (pcie_port_device_register(dev)) { | 98 | if (pcie_port_device_register(dev)) { |
| 99 | pci_disable_device(dev); | 99 | pci_disable_device(dev); |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 7f94fc098cd3..65d6f23ead41 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -963,6 +963,13 @@ DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8237, k8t_sound_ho | |||
| 963 | * bridge. Unfortunately, this device has no subvendor/subdevice ID. So it | 963 | * bridge. Unfortunately, this device has no subvendor/subdevice ID. So it |
| 964 | * becomes necessary to do this tweak in two steps -- I've chosen the Host | 964 | * becomes necessary to do this tweak in two steps -- I've chosen the Host |
| 965 | * bridge as trigger. | 965 | * bridge as trigger. |
| 966 | * | ||
| 967 | * Note that we used to unhide the SMBus that way on Toshiba laptops | ||
| 968 | * (Satellite A40 and Tecra M2) but then found that the thermal management | ||
| 969 | * was done by SMM code, which could cause unsynchronized concurrent | ||
| 970 | * accesses to the SMBus registers, with potentially bad effects. Thus you | ||
| 971 | * should be very careful when adding new entries: if SMM is accessing the | ||
| 972 | * Intel SMBus, this is a very good reason to leave it hidden. | ||
| 966 | */ | 973 | */ |
| 967 | static int asus_hides_smbus; | 974 | static int asus_hides_smbus; |
| 968 | 975 | ||
| @@ -1040,17 +1047,6 @@ static void __init asus_hides_smbus_hostbridge(struct pci_dev *dev) | |||
| 1040 | case 0x099c: /* HP Compaq nx6110 */ | 1047 | case 0x099c: /* HP Compaq nx6110 */ |
| 1041 | asus_hides_smbus = 1; | 1048 | asus_hides_smbus = 1; |
| 1042 | } | 1049 | } |
| 1043 | } else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_TOSHIBA)) { | ||
| 1044 | if (dev->device == PCI_DEVICE_ID_INTEL_82855GM_HB) | ||
| 1045 | switch(dev->subsystem_device) { | ||
| 1046 | case 0x0001: /* Toshiba Satellite A40 */ | ||
| 1047 | asus_hides_smbus = 1; | ||
| 1048 | } | ||
| 1049 | else if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB) | ||
| 1050 | switch(dev->subsystem_device) { | ||
| 1051 | case 0x0001: /* Toshiba Tecra M2 */ | ||
| 1052 | asus_hides_smbus = 1; | ||
| 1053 | } | ||
| 1054 | } else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG)) { | 1050 | } else if (unlikely(dev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG)) { |
| 1055 | if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB) | 1051 | if (dev->device == PCI_DEVICE_ID_INTEL_82855PM_HB) |
| 1056 | switch(dev->subsystem_device) { | 1052 | switch(dev->subsystem_device) { |
