|
@@ -2576,15 +2576,14 @@ 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 512 << ((stat & PCI_X_STATUS_MAX_READ) >> 21);
|
|
@@ -2600,18 +2599,17 @@ EXPORT_SYMBOL(pcix_get_max_mmrbc);
|
|
|
*/
|
|
|
int pcix_get_mmrbc(struct pci_dev *dev)
|
|
|
{
|
|
|
- int ret, cap;
|
|
|
+ int cap;
|
|
|
u16 cmd;
|
|
|
|
|
|
cap = pci_find_capability(dev, PCI_CAP_ID_PCIX);
|
|
|
if (!cap)
|
|
|
return -EINVAL;
|
|
|
|
|
|
- ret = pci_read_config_word(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,29 +2624,27 @@ EXPORT_SYMBOL(pcix_get_mmrbc);
|
|
|
*/
|
|
|
int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)
|
|
|
{
|
|
|
- int cap, err = -EINVAL;
|
|
|
+ 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_word(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) {
|
|
@@ -2658,10 +2654,10 @@ int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc)
|
|
|
|
|
|
cmd &= ~PCI_X_CMD_MAX_READ;
|
|
|
cmd |= v << 2;
|
|
|
- err = pci_write_config_word(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);
|
|
|
|