diff options
| -rw-r--r-- | arch/ia64/pci/pci.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 7de76dd352fe..c0fca2c1c858 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
| @@ -56,10 +56,13 @@ int raw_pci_read(unsigned int seg, unsigned int bus, unsigned int devfn, | |||
| 56 | if ((seg | reg) <= 255) { | 56 | if ((seg | reg) <= 255) { |
| 57 | addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg); | 57 | addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg); |
| 58 | mode = 0; | 58 | mode = 0; |
| 59 | } else { | 59 | } else if (sal_revision >= SAL_VERSION_CODE(3,2)) { |
| 60 | addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg); | 60 | addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg); |
| 61 | mode = 1; | 61 | mode = 1; |
| 62 | } else { | ||
| 63 | return -EINVAL; | ||
| 62 | } | 64 | } |
| 65 | |||
| 63 | result = ia64_sal_pci_config_read(addr, mode, len, &data); | 66 | result = ia64_sal_pci_config_read(addr, mode, len, &data); |
| 64 | if (result != 0) | 67 | if (result != 0) |
| 65 | return -EINVAL; | 68 | return -EINVAL; |
| @@ -80,9 +83,11 @@ int raw_pci_write(unsigned int seg, unsigned int bus, unsigned int devfn, | |||
| 80 | if ((seg | reg) <= 255) { | 83 | if ((seg | reg) <= 255) { |
| 81 | addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg); | 84 | addr = PCI_SAL_ADDRESS(seg, bus, devfn, reg); |
| 82 | mode = 0; | 85 | mode = 0; |
| 83 | } else { | 86 | } else if (sal_revision >= SAL_VERSION_CODE(3,2)) { |
| 84 | addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg); | 87 | addr = PCI_SAL_EXT_ADDRESS(seg, bus, devfn, reg); |
| 85 | mode = 1; | 88 | mode = 1; |
| 89 | } else { | ||
| 90 | return -EINVAL; | ||
| 86 | } | 91 | } |
| 87 | result = ia64_sal_pci_config_write(addr, mode, len, value); | 92 | result = ia64_sal_pci_config_write(addr, mode, len, value); |
| 88 | if (result != 0) | 93 | if (result != 0) |
