| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- From: Felix Fietkau <[email protected]>
- Date: Mon, 28 Oct 2019 15:20:40 +0100
- Subject: [PATCH] backport: add pci_disable_link_state wrapper with return code
- The signature of pci_disable_link_state was changed to indicate if the state
- was successfully disabled. Since the old version did not have this, add a
- wrapper which checks the pcie register to determine the return code
- Signed-off-by: Felix Fietkau <[email protected]>
- ---
- --- a/backport-include/linux/pci.h
- +++ b/backport-include/linux/pci.h
- @@ -236,4 +236,29 @@ static inline struct pci_dev *pcie_find_
- (PCI_IRQ_LEGACY | PCI_IRQ_MSI | PCI_IRQ_MSIX)
- #endif
-
- +#if defined(CONFIG_PCI) && LINUX_VERSION_IS_LESS(5,3,0)
- +
- +static inline int
- +LINUX_BACKPORT(pci_disable_link_state)(struct pci_dev *pdev, int state)
- +{
- + u16 aspmc;
- +
- + pci_disable_link_state(pdev, state);
- +
- + pcie_capability_read_word(pdev, PCI_EXP_LNKCTL, &aspmc);
- + if ((state & PCIE_LINK_STATE_L0S) &&
- + (aspmc & PCI_EXP_LNKCTL_ASPM_L0S))
- + return -EPERM;
- +
- + if ((state & PCIE_LINK_STATE_L1) &&
- + (aspmc & PCI_EXP_LNKCTL_ASPM_L1))
- + return -EPERM;
- +
- + return 0;
- +}
- +
- +#define pci_disable_link_state LINUX_BACKPORT(pci_disable_link_state)
- +
- +#endif
- +
- #endif /* _BACKPORT_LINUX_PCI_H */
|