diff options
author | Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com> | 2014-01-17 16:32:37 +1100 |
---|---|---|
committer | Eli Qiao <taget@linux.vnet.ibm.com> | 2014-01-22 10:26:25 +0800 |
commit | 02c55cb7f958ea030c92bef485b680dbbde1fcd9 (patch) | |
tree | feaa7ba9378a03d9cb55e5ac665d63eb154cd2ba | |
parent | a8893ba19ef7ba8bb39143b02d428f957a5771d4 (diff) | |
download | powerkvm-02c55cb7f958ea030c92bef485b680dbbde1fcd9.tar.gz |
pci: add "fundamental reset" quirk
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
-rw-r--r-- | drivers/pci/quirks.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index df4655c5c1388..6f11db71b0911 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -3185,6 +3185,19 @@ reset_complete: return 0; } +static int reset_fundamental(struct pci_dev *dev, int probe) +{ + if (probe) + return 0; + + pci_set_pcie_reset_state(dev, pcie_hot_reset); + msleep(250); + pci_set_pcie_reset_state(dev, pcie_deassert_reset); + msleep(1800); + + return 0; +} + #define PCI_DEVICE_ID_INTEL_82599_SFP_VF 0x10ed #define PCI_DEVICE_ID_INTEL_IVB_M_VGA 0x0156 #define PCI_DEVICE_ID_INTEL_IVB_M2_VGA 0x0166 @@ -3198,6 +3211,14 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = { reset_ivb_igd }, { PCI_VENDOR_ID_INTEL, PCI_ANY_ID, reset_intel_generic_dev }, + + { PCI_VENDOR_ID_IBM, PCI_ANY_ID, + reset_fundamental }, + { PCI_VENDOR_ID_MELLANOX, PCI_ANY_ID, + reset_fundamental }, + { PCI_VENDOR_ID_TI, PCI_ANY_ID, + reset_fundamental }, + { 0 } }; |