2007-10-24 02:44:17

by Shaohua Li

[permalink] [raw]
Subject: [patch] pcie port driver: correctly detect native PME feature

Native PME is capability of root port or root complex event collector.
It's not determined by PCI PME capability.

Signed-off-by: Shaohua Li <[email protected]>
---
drivers/pci/pcie/portdrv_core.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

Index: linux/drivers/pci/pcie/portdrv_core.c
===================================================================
--- linux.orig/drivers/pci/pcie/portdrv_core.c 2007-10-22 09:36:05.000000000 +0800
+++ linux/drivers/pci/pcie/portdrv_core.c 2007-10-22 09:41:25.000000000 +0800
@@ -192,9 +192,8 @@ static int get_port_device_capability(st
if (reg32 & SLOT_HP_CAPABLE_MASK)
services |= PCIE_PORT_SERVICE_HP;
}
- /* PME Capable */
- pos = pci_find_capability(dev, PCI_CAP_ID_PME);
- if (pos)
+ /* PME Capable - root port capability */
+ if (((reg16 >> 4) & PORT_TYPE_MASK) == PCIE_RC_PORT)
services |= PCIE_PORT_SERVICE_PME;

pos = PCI_CFG_SPACE_SIZE;