forked from Minki/linux
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/pci-2.6: PCI: Fix wrong reference counter check for proc_dir_entry PCI: fix up setup-bus.c #ifdef PCI: don't load acpi_php when acpi is disabled PCI: quirks: set 'En' bit of MSI Mapping for devices onHT-based nvidia platform PCI: kernel-doc: fix pci-acpi warning PCI: irq: patch for Intel ICH10 DeviceID's PCI: pci_ids: patch for Intel ICH10 DeviceID's PCI: AMD SATA IDE mode quirk PCI: drivers/pcmcia/i82092.c: fix up after pci_bus_region changes PCI: hotplug: acpiphp_ibm: Remove get device information
This commit is contained in:
commit
b8967d8883
@ -72,7 +72,8 @@ static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id) { return
|
||||
#define PREFIX "ACPI: "
|
||||
|
||||
int acpi_noirq; /* skip ACPI IRQ initialization */
|
||||
int acpi_pci_disabled __initdata; /* skip ACPI PCI scan and IRQ initialization */
|
||||
int acpi_pci_disabled; /* skip ACPI PCI scan and IRQ initialization */
|
||||
EXPORT_SYMBOL(acpi_pci_disabled);
|
||||
int acpi_ht __initdata = 1; /* enable HT */
|
||||
|
||||
int acpi_lapic;
|
||||
|
@ -583,6 +583,10 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
|
||||
case PCI_DEVICE_ID_INTEL_ICH9_4:
|
||||
case PCI_DEVICE_ID_INTEL_ICH9_5:
|
||||
case PCI_DEVICE_ID_INTEL_TOLAPAI_0:
|
||||
case PCI_DEVICE_ID_INTEL_ICH10_0:
|
||||
case PCI_DEVICE_ID_INTEL_ICH10_1:
|
||||
case PCI_DEVICE_ID_INTEL_ICH10_2:
|
||||
case PCI_DEVICE_ID_INTEL_ICH10_3:
|
||||
r->name = "PIIX/ICH";
|
||||
r->get = pirq_piix_get;
|
||||
r->set = pirq_piix_set;
|
||||
|
@ -392,6 +392,9 @@ static int __init acpiphp_init(void)
|
||||
{
|
||||
info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
|
||||
|
||||
if (acpi_pci_disabled)
|
||||
return 0;
|
||||
|
||||
acpiphp_debug = debug;
|
||||
|
||||
/* read all the ACPI info from the system */
|
||||
@ -401,6 +404,9 @@ static int __init acpiphp_init(void)
|
||||
|
||||
static void __exit acpiphp_exit(void)
|
||||
{
|
||||
if (acpi_pci_disabled)
|
||||
return;
|
||||
|
||||
/* deallocate internal data structures etc. */
|
||||
acpiphp_glue_exit();
|
||||
}
|
||||
|
@ -395,33 +395,34 @@ static acpi_status __init ibm_find_acpi_device(acpi_handle handle,
|
||||
{
|
||||
acpi_handle *phandle = (acpi_handle *)context;
|
||||
acpi_status status;
|
||||
struct acpi_device_info info;
|
||||
struct acpi_buffer info_buffer = {
|
||||
.length = sizeof(struct acpi_device_info),
|
||||
.pointer = &info,
|
||||
};
|
||||
struct acpi_device_info *info;
|
||||
struct acpi_buffer info_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
int retval = 0;
|
||||
|
||||
status = acpi_get_object_info(handle, &info_buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
err("%s: Failed to get device information\n", __FUNCTION__);
|
||||
return 0;
|
||||
err("%s: Failed to get device information status=0x%x\n",
|
||||
__FUNCTION__, status);
|
||||
return retval;
|
||||
}
|
||||
info.hardware_id.value[sizeof(info.hardware_id.value) - 1] = '\0';
|
||||
info = info_buffer.pointer;
|
||||
info->hardware_id.value[sizeof(info->hardware_id.value) - 1] = '\0';
|
||||
|
||||
if (info.current_status && (info.valid & ACPI_VALID_HID) &&
|
||||
(!strcmp(info.hardware_id.value, IBM_HARDWARE_ID1) ||
|
||||
!strcmp(info.hardware_id.value, IBM_HARDWARE_ID2))) {
|
||||
dbg("found hardware: %s, handle: %p\n", info.hardware_id.value,
|
||||
handle);
|
||||
if (info->current_status && (info->valid & ACPI_VALID_HID) &&
|
||||
(!strcmp(info->hardware_id.value, IBM_HARDWARE_ID1) ||
|
||||
!strcmp(info->hardware_id.value, IBM_HARDWARE_ID2))) {
|
||||
dbg("found hardware: %s, handle: %p\n",
|
||||
info->hardware_id.value, handle);
|
||||
*phandle = handle;
|
||||
/* returning non-zero causes the search to stop
|
||||
* and returns this value to the caller of
|
||||
* acpi_walk_namespace, but it also causes some warnings
|
||||
* in the acpi debug code to print...
|
||||
*/
|
||||
return FOUND_APCI;
|
||||
retval = FOUND_APCI;
|
||||
}
|
||||
return 0;
|
||||
kfree(info);
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int __init ibm_acpiphp_init(void)
|
||||
|
@ -158,6 +158,7 @@ run_osc_out:
|
||||
/**
|
||||
* __pci_osc_support_set - register OS support to Firmware
|
||||
* @flags: OS support bits
|
||||
* @hid: hardware ID
|
||||
*
|
||||
* Update OS support fields and doing a _OSC Query to obtain an update
|
||||
* from Firmware on supported control bits.
|
||||
|
@ -422,7 +422,7 @@ int pci_proc_detach_device(struct pci_dev *dev)
|
||||
struct proc_dir_entry *e;
|
||||
|
||||
if ((e = dev->procent)) {
|
||||
if (atomic_read(&e->count))
|
||||
if (atomic_read(&e->count) > 1)
|
||||
return -EBUSY;
|
||||
remove_proc_entry(e->name, dev->bus->procdir);
|
||||
dev->procent = NULL;
|
||||
|
@ -867,13 +867,13 @@ static void quirk_disable_pxb(struct pci_dev *pdev)
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb);
|
||||
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454NX, quirk_disable_pxb);
|
||||
|
||||
|
||||
static void __devinit quirk_sb600_sata(struct pci_dev *pdev)
|
||||
static void __devinit quirk_amd_ide_mode(struct pci_dev *pdev)
|
||||
{
|
||||
/* set sb600 sata to ahci mode */
|
||||
if ((pdev->class >> 8) == PCI_CLASS_STORAGE_IDE) {
|
||||
u8 tmp;
|
||||
/* set sb600/sb700/sb800 sata to ahci mode */
|
||||
u8 tmp;
|
||||
|
||||
pci_read_config_byte(pdev, PCI_CLASS_DEVICE, &tmp);
|
||||
if (tmp == 0x01) {
|
||||
pci_read_config_byte(pdev, 0x40, &tmp);
|
||||
pci_write_config_byte(pdev, 0x40, tmp|1);
|
||||
pci_write_config_byte(pdev, 0x9, 1);
|
||||
@ -881,10 +881,13 @@ static void __devinit quirk_sb600_sata(struct pci_dev *pdev)
|
||||
pci_write_config_byte(pdev, 0x40, tmp);
|
||||
|
||||
pdev->class = PCI_CLASS_STORAGE_SATA_AHCI;
|
||||
dev_info(&pdev->dev, "set SATA to AHCI mode\n");
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_sb600_sata);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_sb600_sata);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_amd_ide_mode);
|
||||
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP600_SATA, quirk_amd_ide_mode);
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
|
||||
DECLARE_PCI_FIXUP_RESUME(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP700_SATA, quirk_amd_ide_mode);
|
||||
|
||||
/*
|
||||
* Serverworks CSB5 IDE does not fully support native mode
|
||||
@ -1775,6 +1778,68 @@ static void __devinit quirk_nvidia_ck804_msi_ht_cap(struct pci_dev *dev)
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
|
||||
quirk_nvidia_ck804_msi_ht_cap);
|
||||
|
||||
/*
|
||||
* Force enable MSI mapping capability on HT bridges */
|
||||
static inline void ht_enable_msi_mapping(struct pci_dev *dev)
|
||||
{
|
||||
int pos, ttl = 48;
|
||||
|
||||
pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
|
||||
while (pos && ttl--) {
|
||||
u8 flags;
|
||||
|
||||
if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
&flags) == 0) {
|
||||
dev_info(&dev->dev, "Enabling HT MSI Mapping\n");
|
||||
|
||||
pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
flags | HT_MSI_FLAGS_ENABLE);
|
||||
}
|
||||
pos = pci_find_next_ht_capability(dev, pos,
|
||||
HT_CAPTYPE_MSI_MAPPING);
|
||||
}
|
||||
}
|
||||
|
||||
static void __devinit nv_msi_ht_cap_quirk(struct pci_dev *dev)
|
||||
{
|
||||
struct pci_dev *host_bridge;
|
||||
int pos, ttl = 48;
|
||||
|
||||
/*
|
||||
* HT MSI mapping should be disabled on devices that are below
|
||||
* a non-Hypertransport host bridge. Locate the host bridge...
|
||||
*/
|
||||
host_bridge = pci_get_bus_and_slot(0, PCI_DEVFN(0, 0));
|
||||
if (host_bridge == NULL) {
|
||||
dev_warn(&dev->dev,
|
||||
"nv_msi_ht_cap_quirk didn't locate host bridge\n");
|
||||
return;
|
||||
}
|
||||
|
||||
pos = pci_find_ht_capability(host_bridge, HT_CAPTYPE_SLAVE);
|
||||
if (pos != 0) {
|
||||
/* Host bridge is to HT */
|
||||
ht_enable_msi_mapping(dev);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Host bridge is not to HT, disable HT MSI mapping on this device */
|
||||
pos = pci_find_ht_capability(dev, HT_CAPTYPE_MSI_MAPPING);
|
||||
while (pos && ttl--) {
|
||||
u8 flags;
|
||||
|
||||
if (pci_read_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
&flags) == 0) {
|
||||
dev_info(&dev->dev, "Quirk disabling HT MSI mapping");
|
||||
pci_write_config_byte(dev, pos + HT_MSI_FLAGS,
|
||||
flags & ~HT_MSI_FLAGS_ENABLE);
|
||||
}
|
||||
pos = pci_find_next_ht_capability(dev, pos,
|
||||
HT_CAPTYPE_MSI_MAPPING);
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, nv_msi_ht_cap_quirk);
|
||||
|
||||
static void __devinit quirk_msi_intx_disable_bug(struct pci_dev *dev)
|
||||
{
|
||||
dev->dev_flags |= PCI_DEV_FLAGS_MSI_INTX_DISABLE_BUG;
|
||||
|
@ -206,10 +206,8 @@ pci_setup_bridge(struct pci_bus *bus)
|
||||
if (bus->resource[2]->flags & IORESOURCE_PREFETCH) {
|
||||
l = (region.start >> 16) & 0xfff0;
|
||||
l |= region.end & 0xfff00000;
|
||||
#ifdef CONFIG_RESOURCES_64BIT
|
||||
bu = region.start >> 32;
|
||||
lu = region.end >> 32;
|
||||
#endif
|
||||
bu = upper_32_bits(region.start);
|
||||
lu = upper_32_bits(region.end);
|
||||
DBG(KERN_INFO " PREFETCH window: 0x%016llx-0x%016llx\n",
|
||||
(unsigned long long)region.start,
|
||||
(unsigned long long)region.end);
|
||||
|
@ -647,7 +647,12 @@ static int i82092aa_set_mem_map(struct pcmcia_socket *socket, struct pccard_mem_
|
||||
if ( (mem->card_start > 0x3ffffff) || (region.start > region.end) ||
|
||||
(mem->speed > 1000) ) {
|
||||
leave("i82092aa_set_mem_map: invalid address / speed");
|
||||
printk("invalid mem map for socket %i : %lx to %lx with a start of %x \n",sock,region.start, region.end, mem->card_start);
|
||||
printk("invalid mem map for socket %i: %llx to %llx with a "
|
||||
"start of %x\n",
|
||||
sock,
|
||||
(unsigned long long)region.start,
|
||||
(unsigned long long)region.end,
|
||||
mem->card_start);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -2374,6 +2374,12 @@
|
||||
#define PCI_DEVICE_ID_INTEL_MCH_PC1 0x359a
|
||||
#define PCI_DEVICE_ID_INTEL_E7525_MCH 0x359e
|
||||
#define PCI_DEVICE_ID_INTEL_IOAT_CNB 0x360b
|
||||
#define PCI_DEVICE_ID_INTEL_ICH10_0 0x3a14
|
||||
#define PCI_DEVICE_ID_INTEL_ICH10_1 0x3a16
|
||||
#define PCI_DEVICE_ID_INTEL_ICH10_2 0x3a18
|
||||
#define PCI_DEVICE_ID_INTEL_ICH10_3 0x3a1a
|
||||
#define PCI_DEVICE_ID_INTEL_ICH10_4 0x3a30
|
||||
#define PCI_DEVICE_ID_INTEL_ICH10_5 0x3a60
|
||||
#define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f
|
||||
#define PCI_DEVICE_ID_INTEL_IOAT_SCNB 0x65ff
|
||||
#define PCI_DEVICE_ID_INTEL_TOLAPAI_0 0x5031
|
||||
|
Loading…
Reference in New Issue
Block a user