mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
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: (27 commits) x86: allocate space within a region top-down x86: update iomem_resource end based on CPU physical address capabilities x86/PCI: allocate space from the end of a region, not the beginning PCI: allocate bus resources from the top down resources: support allocating space within a region from the top down resources: handle overflow when aligning start of available area resources: ensure callback doesn't allocate outside available space resources: factor out resource_clip() to simplify find_resource() resources: add a default alignf to simplify find_resource() x86/PCI: MMCONFIG: fix region end calculation PCI: Add support for polling PME state on suspended legacy PCI devices PCI: Export some PCI PM functionality PCI: fix message typo PCI: log vendor/device ID always PCI: update Intel chipset names and defines PCI: use new ccflags variable in Makefile PCI: add PCI_MSIX_TABLE/PBA defines PCI: add PCI vendor id for STmicroelectronics x86/PCI: irq and pci_ids patch for Intel Patsburg DeviceIDs PCI: OLPC: Only enable PCI configuration type override on XO-1 ...
This commit is contained in:
commit
e9f29c9a56
27 changed files with 395 additions and 70 deletions
|
|
@ -769,6 +769,8 @@ void __init setup_arch(char **cmdline_p)
|
|||
|
||||
x86_init.oem.arch_setup();
|
||||
|
||||
resource_alloc_from_bottom = 0;
|
||||
iomem_resource.end = (1ULL << boot_cpu_data.x86_phys_bits) - 1;
|
||||
setup_memory_map();
|
||||
parse_setup_data();
|
||||
/* update the e820_saved too */
|
||||
|
|
|
|||
|
|
@ -65,16 +65,21 @@ pcibios_align_resource(void *data, const struct resource *res,
|
|||
resource_size_t size, resource_size_t align)
|
||||
{
|
||||
struct pci_dev *dev = data;
|
||||
resource_size_t start = res->start;
|
||||
resource_size_t start = round_down(res->end - size + 1, align);
|
||||
|
||||
if (res->flags & IORESOURCE_IO) {
|
||||
if (skip_isa_ioresource_align(dev))
|
||||
return start;
|
||||
if (start & 0x300)
|
||||
start = (start + 0x3ff) & ~0x3ff;
|
||||
|
||||
/*
|
||||
* If we're avoiding ISA aliases, the largest contiguous I/O
|
||||
* port space is 256 bytes. Clearing bits 9 and 10 preserves
|
||||
* all 256-byte and smaller alignments, so the result will
|
||||
* still be correctly aligned.
|
||||
*/
|
||||
if (!skip_isa_ioresource_align(dev))
|
||||
start &= ~0x300;
|
||||
} else if (res->flags & IORESOURCE_MEM) {
|
||||
if (start < BIOS_END)
|
||||
start = BIOS_END;
|
||||
start = res->end; /* fail; no space */
|
||||
}
|
||||
return start;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -584,27 +584,28 @@ static __init int intel_router_probe(struct irq_router *r, struct pci_dev *route
|
|||
case PCI_DEVICE_ID_INTEL_ICH9_3:
|
||||
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_EP80579_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:
|
||||
case PCI_DEVICE_ID_INTEL_PATSBURG_LPC:
|
||||
r->name = "PIIX/ICH";
|
||||
r->get = pirq_piix_get;
|
||||
r->set = pirq_piix_set;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((device >= PCI_DEVICE_ID_INTEL_PCH_LPC_MIN) &&
|
||||
(device <= PCI_DEVICE_ID_INTEL_PCH_LPC_MAX)) {
|
||||
if ((device >= PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MIN) &&
|
||||
(device <= PCI_DEVICE_ID_INTEL_5_3400_SERIES_LPC_MAX)) {
|
||||
r->name = "PIIX/ICH";
|
||||
r->get = pirq_piix_get;
|
||||
r->set = pirq_piix_set;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((device >= PCI_DEVICE_ID_INTEL_CPT_LPC_MIN) &&
|
||||
(device <= PCI_DEVICE_ID_INTEL_CPT_LPC_MAX)) {
|
||||
if ((device >= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MIN) &&
|
||||
(device <= PCI_DEVICE_ID_INTEL_COUGARPOINT_LPC_MAX)) {
|
||||
r->name = "PIIX/ICH";
|
||||
r->get = pirq_piix_get;
|
||||
r->set = pirq_piix_set;
|
||||
|
|
|
|||
|
|
@ -65,7 +65,6 @@ static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
|
|||
int end, u64 addr)
|
||||
{
|
||||
struct pci_mmcfg_region *new;
|
||||
int num_buses;
|
||||
struct resource *res;
|
||||
|
||||
if (addr == 0)
|
||||
|
|
@ -82,10 +81,9 @@ static __init struct pci_mmcfg_region *pci_mmconfig_add(int segment, int start,
|
|||
|
||||
list_add_sorted(new);
|
||||
|
||||
num_buses = end - start + 1;
|
||||
res = &new->res;
|
||||
res->start = addr + PCI_MMCFG_BUS_OFFSET(start);
|
||||
res->end = addr + PCI_MMCFG_BUS_OFFSET(num_buses) - 1;
|
||||
res->end = addr + PCI_MMCFG_BUS_OFFSET(end + 1) - 1;
|
||||
res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
|
||||
snprintf(new->name, PCI_MMCFG_RESOURCE_NAME_LEN,
|
||||
"PCI MMCONFIG %04x [bus %02x-%02x]", segment, start, end);
|
||||
|
|
|
|||
Loading…
Reference in a new issue