diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2005-12-14 23:00:57 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-01-08 23:05:56 -0500 |
commit | f2c4583a381c584c8c025048071a120cc9562ded (patch) | |
tree | 53d6a1d30a3be72f021738c97853cff55a800070 /arch/powerpc/kernel/pci_64.c | |
parent | a04c8780fd234aeeba5e87f7e37beffd05ef21ae (diff) |
[PATCH] powerpc: pci_address_to_pio fix
This fixes pci_address_to_pio() to return an unsigned long (to be safe)
and fixes a bug in the implementation that caused it to return a bogus
IO port number
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/pci_64.c')
-rw-r--r-- | arch/powerpc/kernel/pci_64.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index f73a16e9867a..fc60a773af7d 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -1365,16 +1365,17 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node) | |||
1365 | 1365 | ||
1366 | #endif /* CONFIG_PPC_MULTIPLATFORM */ | 1366 | #endif /* CONFIG_PPC_MULTIPLATFORM */ |
1367 | 1367 | ||
1368 | unsigned int pci_address_to_pio(phys_addr_t address) | 1368 | unsigned long pci_address_to_pio(phys_addr_t address) |
1369 | { | 1369 | { |
1370 | struct pci_controller *hose, *tmp; | 1370 | struct pci_controller *hose, *tmp; |
1371 | 1371 | ||
1372 | list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { | 1372 | list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { |
1373 | if (address >= hose->io_base_phys && | 1373 | if (address >= hose->io_base_phys && |
1374 | address < (hose->io_base_phys + hose->pci_io_size)) | 1374 | address < (hose->io_base_phys + hose->pci_io_size)) { |
1375 | return (unsigned int) | 1375 | unsigned long base = |
1376 | ((unsigned long)hose->io_base_virt + | 1376 | (unsigned long)hose->io_base_virt - pci_io_base; |
1377 | (address - hose->io_base_phys)); | 1377 | return base + (address - hose->io_base_phys); |
1378 | } | ||
1378 | } | 1379 | } |
1379 | return (unsigned int)-1; | 1380 | return (unsigned int)-1; |
1380 | } | 1381 | } |