forked from Minki/linux
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6: PCI: Prevent AER driver from being loaded on non-root port PCIE devices PCI: get larger bridge ranges when space is available PCI: pci.c: fix kernel-doc notation PCI quirk: TI XIO200a erroneously reports support for fast b2b transfers PCI PM: Read device power state from register after updating it PCI: remove pci_assign_resource_fixed() PCI: PCIe portdrv: remove "-driver" from driver name
This commit is contained in:
commit
2caa731819
@ -513,7 +513,11 @@ static int pci_raw_set_power_state(struct pci_dev *dev, pci_power_t state)
|
||||
else if (state == PCI_D2 || dev->current_state == PCI_D2)
|
||||
udelay(PCI_PM_D2_DELAY);
|
||||
|
||||
dev->current_state = state;
|
||||
pci_read_config_word(dev, dev->pm_cap + PCI_PM_CTRL, &pmcsr);
|
||||
dev->current_state = (pmcsr & PCI_PM_CTRL_STATE_MASK);
|
||||
if (dev->current_state != state && printk_ratelimit())
|
||||
dev_info(&dev->dev, "Refused to change power state, "
|
||||
"currently in D%d\n", dev->current_state);
|
||||
|
||||
/* According to section 5.4.1 of the "PCI BUS POWER MANAGEMENT
|
||||
* INTERFACE SPECIFICATION, REV. 1.2", a device transitioning
|
||||
@ -2542,10 +2546,10 @@ int pci_resource_bar(struct pci_dev *dev, int resno, enum pci_bar_type *type)
|
||||
|
||||
/**
|
||||
* pci_set_vga_state - set VGA decode state on device and parents if requested
|
||||
* @dev the PCI device
|
||||
* @decode - true = enable decoding, false = disable decoding
|
||||
* @command_bits PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
|
||||
* @change_bridge - traverse ancestors and change bridges
|
||||
* @dev: the PCI device
|
||||
* @decode: true = enable decoding, false = disable decoding
|
||||
* @command_bits: PCI_COMMAND_IO and/or PCI_COMMAND_MEMORY
|
||||
* @change_bridge: traverse ancestors and change bridges
|
||||
*/
|
||||
int pci_set_vga_state(struct pci_dev *dev, bool decode,
|
||||
unsigned int command_bits, bool change_bridge)
|
||||
|
@ -53,7 +53,7 @@ static struct pci_error_handlers aer_error_handlers = {
|
||||
|
||||
static struct pcie_port_service_driver aerdriver = {
|
||||
.name = "aer",
|
||||
.port_type = PCIE_ANY_PORT,
|
||||
.port_type = PCIE_RC_PORT,
|
||||
.service = PCIE_PORT_SERVICE_AER,
|
||||
|
||||
.probe = aer_probe,
|
||||
|
@ -30,7 +30,6 @@ MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
/* global data */
|
||||
static const char device_name[] = "pcieport-driver";
|
||||
|
||||
static int pcie_portdrv_restore_config(struct pci_dev *dev)
|
||||
{
|
||||
@ -262,7 +261,7 @@ static struct pci_error_handlers pcie_portdrv_err_handler = {
|
||||
};
|
||||
|
||||
static struct pci_driver pcie_portdriver = {
|
||||
.name = (char *)device_name,
|
||||
.name = "pcieport",
|
||||
.id_table = &port_pci_ids[0],
|
||||
|
||||
.probe = pcie_portdrv_probe,
|
||||
|
@ -670,6 +670,25 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev)
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi);
|
||||
|
||||
/*
|
||||
* TI XIO2000a PCIe-PCI Bridge erroneously reports it supports fast back-to-back:
|
||||
* Disable fast back-to-back on the secondary bus segment
|
||||
*/
|
||||
static void __devinit quirk_xio2000a(struct pci_dev *dev)
|
||||
{
|
||||
struct pci_dev *pdev;
|
||||
u16 command;
|
||||
|
||||
dev_warn(&dev->dev, "TI XIO2000a quirk detected; "
|
||||
"secondary bus fast back-to-back transfers disabled\n");
|
||||
list_for_each_entry(pdev, &dev->subordinate->devices, bus_list) {
|
||||
pci_read_config_word(pdev, PCI_COMMAND, &command);
|
||||
if (command & PCI_COMMAND_FAST_BACK)
|
||||
pci_write_config_word(pdev, PCI_COMMAND, command & ~PCI_COMMAND_FAST_BACK);
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_XIO2000A,
|
||||
quirk_xio2000a);
|
||||
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
|
||||
|
@ -299,8 +299,17 @@ static struct resource *find_free_bus_resource(struct pci_bus *bus, unsigned lon
|
||||
r = bus->resource[i];
|
||||
if (r == &ioport_resource || r == &iomem_resource)
|
||||
continue;
|
||||
if (r && (r->flags & type_mask) == type && !r->parent)
|
||||
return r;
|
||||
if (r && (r->flags & type_mask) == type) {
|
||||
if (!r->parent)
|
||||
return r;
|
||||
/*
|
||||
* if there is no child under that, we should release
|
||||
* and use it. don't need to reset it, pbus_size_* will
|
||||
* set it again
|
||||
*/
|
||||
if (!r->child && !release_resource(r))
|
||||
return r;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -205,43 +205,6 @@ int pci_assign_resource(struct pci_dev *dev, int resno)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if 0
|
||||
int pci_assign_resource_fixed(struct pci_dev *dev, int resno)
|
||||
{
|
||||
struct pci_bus *bus = dev->bus;
|
||||
struct resource *res = dev->resource + resno;
|
||||
unsigned int type_mask;
|
||||
int i, ret = -EBUSY;
|
||||
|
||||
type_mask = IORESOURCE_IO | IORESOURCE_MEM | IORESOURCE_PREFETCH;
|
||||
|
||||
for (i = 0; i < PCI_BUS_NUM_RESOURCES; i++) {
|
||||
struct resource *r = bus->resource[i];
|
||||
if (!r)
|
||||
continue;
|
||||
|
||||
/* type_mask must match */
|
||||
if ((res->flags ^ r->flags) & type_mask)
|
||||
continue;
|
||||
|
||||
ret = request_resource(r, res);
|
||||
|
||||
if (ret == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret) {
|
||||
dev_err(&dev->dev, "BAR %d: can't allocate %s resource %pR\n",
|
||||
resno, res->flags & IORESOURCE_IO ? "I/O" : "mem", res);
|
||||
} else if (resno < PCI_BRIDGE_RESOURCES) {
|
||||
pci_update_resource(dev, resno);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pci_assign_resource_fixed);
|
||||
#endif
|
||||
|
||||
/* Sort resources by alignment */
|
||||
void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
|
||||
{
|
||||
|
@ -776,6 +776,7 @@
|
||||
#define PCI_DEVICE_ID_TI_X515 0x8036
|
||||
#define PCI_DEVICE_ID_TI_XX12 0x8039
|
||||
#define PCI_DEVICE_ID_TI_XX12_FM 0x803b
|
||||
#define PCI_DEVICE_ID_TI_XIO2000A 0x8231
|
||||
#define PCI_DEVICE_ID_TI_1130 0xac12
|
||||
#define PCI_DEVICE_ID_TI_1031 0xac13
|
||||
#define PCI_DEVICE_ID_TI_1131 0xac15
|
||||
|
Loading…
Reference in New Issue
Block a user