compat-2.6.h: include generated config.h
[~tnikolova/compat/.git] / compat / compat-3.13.c
1 #include <linux/pci.h>
2
3 /**
4  * pcie_get_mps - get PCI Express maximum payload size
5  * @dev: PCI device to query
6  *
7  * Returns maximum payload size in bytes
8  */
9 int pcie_get_mps(struct pci_dev *dev)
10 {
11         u16 ctl;
12
13         pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &ctl);
14
15         return 128 << ((ctl & PCI_EXP_DEVCTL_PAYLOAD) >> 5);
16 }
17 EXPORT_SYMBOL(pcie_get_mps);
18
19 #ifdef HAVE_PCI_DEV_PCIE_MPSS
20 /**
21  * pcie_set_mps - set PCI Express maximum payload size
22  * @dev: PCI device to query
23  * @mps: maximum payload size in bytes
24  *    valid values are 128, 256, 512, 1024, 2048, 4096
25  *
26  * If possible sets maximum payload size
27  */
28 int pcie_set_mps(struct pci_dev *dev, int mps)
29 {
30         u16 v;
31
32         if (mps < 128 || mps > 4096 || !is_power_of_2(mps))
33                 return -EINVAL;
34
35         v = ffs(mps) - 8;
36         if (v > dev->pcie_mpss)
37                 return -EINVAL;
38         v <<= 5;
39
40         return pcie_capability_clear_and_set_word(dev, PCI_EXP_DEVCTL,
41                                                   PCI_EXP_DEVCTL_PAYLOAD, v);
42 }
43 EXPORT_SYMBOL(pcie_set_mps);
44 #endif