Merge branch 'master' into for-next
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/pm.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/string.h>
|
||||
@@ -2576,18 +2577,17 @@ EXPORT_SYMBOL_GPL(pci_reset_function);
|
||||
*/
|
||||
int pcix_get_max_mmrbc(struct pci_dev *dev)
|
||||
{
|
||||
int err, cap;
|
||||
int cap;
|
||||
u32 stat;
|
||||
|
||||
cap = pci_find_capability(dev, PCI_CAP_ID_PCIX);
|
||||
if (!cap)
|
||||
return -EINVAL;
|
||||
|
||||
err = pci_read_config_dword(dev, cap + PCI_X_STATUS, &stat);
|
||||
if (err)
|
||||
if (pci_read_config_dword(dev, cap + PCI_X_STATUS, &stat))
|
||||
return -EINVAL;
|
||||
|
||||
return (stat & PCI_X_STATUS_MAX_READ) >> 12;
|
||||
return 512 << ((stat & PCI_X_STATUS_MAX_READ) >> 21);
|
||||
}
|
||||
EXPORT_SYMBOL(pcix_get_max_mmrbc);
|
||||
|
||||
@@ -2600,18 +2600,17 @@ EXPORT_SYMBOL(pcix_get_max_mmrbc);
|
||||
*/
|
||||
int pcix_get_mmrbc(struct pci_dev *dev)
|
||||
{
|
||||
int ret, cap;
|
||||
u32 cmd;
|
||||
int cap;
|
||||
u16 cmd;
|
||||
|
||||
cap = pci_find_capability(dev, PCI_CAP_ID_PCIX);
|
||||
if (!cap)
|
||||
return -EINVAL;
|
||||
|
||||
ret = pci_read_config_dword(dev, cap + PCI_X_CMD, &cmd);
|
||||
if (!ret)
|
||||
ret = 512 << ((cmd & PCI_X_CMD_MAX_READ) >> 2);
|
||||
if (pci_read_config_word(dev, cap + PCI_X_CMD, &cmd))
|
||||
return -EINVAL;
|
||||
|
||||
return ret;
|
||||
return 512 << ((cmd & PCI_X_CMD_MAX_READ) >> 2);
|
||||
}
|
||||
EXPORT_SYMBOL(pcix_get_mmrbc);
|
||||
|
||||
@@ -2626,28 +2625,27 @@ EXPORT_SYMBOL(pcix_get_mmrbc);
|
||||
*/
|
||||
int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)
|
||||
{
|
||||
int cap, err = -EINVAL;
|
||||
u32 stat, cmd, v, o;
|
||||
int cap;
|
||||
u32 stat, v, o;
|
||||
u16 cmd;
|
||||
|
||||
if (mmrbc < 512 || mmrbc > 4096 || !is_power_of_2(mmrbc))
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
|
||||
v = ffs(mmrbc) - 10;
|
||||
|
||||
cap = pci_find_capability(dev, PCI_CAP_ID_PCIX);
|
||||
if (!cap)
|
||||
goto out;
|
||||
return -EINVAL;
|
||||
|
||||
err = pci_read_config_dword(dev, cap + PCI_X_STATUS, &stat);
|
||||
if (err)
|
||||
goto out;
|
||||
if (pci_read_config_dword(dev, cap + PCI_X_STATUS, &stat))
|
||||
return -EINVAL;
|
||||
|
||||
if (v > (stat & PCI_X_STATUS_MAX_READ) >> 21)
|
||||
return -E2BIG;
|
||||
|
||||
err = pci_read_config_dword(dev, cap + PCI_X_CMD, &cmd);
|
||||
if (err)
|
||||
goto out;
|
||||
if (pci_read_config_word(dev, cap + PCI_X_CMD, &cmd))
|
||||
return -EINVAL;
|
||||
|
||||
o = (cmd & PCI_X_CMD_MAX_READ) >> 2;
|
||||
if (o != v) {
|
||||
@@ -2657,10 +2655,10 @@ int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)
|
||||
|
||||
cmd &= ~PCI_X_CMD_MAX_READ;
|
||||
cmd |= v << 2;
|
||||
err = pci_write_config_dword(dev, cap + PCI_X_CMD, cmd);
|
||||
if (pci_write_config_word(dev, cap + PCI_X_CMD, cmd))
|
||||
return -EIO;
|
||||
}
|
||||
out:
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(pcix_set_mmrbc);
|
||||
|
||||
@@ -3023,7 +3021,6 @@ EXPORT_SYMBOL(pcim_pin_device);
|
||||
EXPORT_SYMBOL(pci_disable_device);
|
||||
EXPORT_SYMBOL(pci_find_capability);
|
||||
EXPORT_SYMBOL(pci_bus_find_capability);
|
||||
EXPORT_SYMBOL(pci_register_set_vga_state);
|
||||
EXPORT_SYMBOL(pci_release_regions);
|
||||
EXPORT_SYMBOL(pci_request_regions);
|
||||
EXPORT_SYMBOL(pci_request_regions_exclusive);
|
||||
|
Reference in New Issue
Block a user