diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2006-03-27 22:40:58 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-03-28 00:45:36 -0500 |
commit | b239cbe957ae730caa8af2f169a4d35b8c1bb299 (patch) | |
tree | 7567ee8777c8b4331770240952b738cf4f52d1b9 | |
parent | 69ed3324983bb937d78a8579ed91b90242ee5aaa (diff) |
[PATCH] powerpc: make ISA floppies work again
We used to assume that a DMA mapping request with a NULL dev was for
ISA DMA. This assumption was broken at some point. Now we explicitly
pass the detected ISA PCI device in the floppy setup.
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r-- | arch/powerpc/kernel/pci_64.c | 1 | ||||
-rw-r--r-- | include/asm-powerpc/floppy.h | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index ba92bab7cc2c..4c4449be81ce 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c | |||
@@ -78,6 +78,7 @@ int global_phb_number; /* Global phb counter */ | |||
78 | 78 | ||
79 | /* Cached ISA bridge dev. */ | 79 | /* Cached ISA bridge dev. */ |
80 | struct pci_dev *ppc64_isabridge_dev = NULL; | 80 | struct pci_dev *ppc64_isabridge_dev = NULL; |
81 | EXPORT_SYMBOL_GPL(ppc64_isabridge_dev); | ||
81 | 82 | ||
82 | static void fixup_broken_pcnet32(struct pci_dev* dev) | 83 | static void fixup_broken_pcnet32(struct pci_dev* dev) |
83 | { | 84 | { |
diff --git a/include/asm-powerpc/floppy.h b/include/asm-powerpc/floppy.h index e258778ca429..608164c39efb 100644 --- a/include/asm-powerpc/floppy.h +++ b/include/asm-powerpc/floppy.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #ifdef CONFIG_PCI | 35 | #ifdef CONFIG_PCI |
36 | 36 | ||
37 | #include <linux/pci.h> | 37 | #include <linux/pci.h> |
38 | #include <asm/ppc-pci.h> /* for ppc64_isabridge_dev */ | ||
38 | 39 | ||
39 | #define fd_dma_setup(addr,size,mode,io) powerpc_fd_dma_setup(addr,size,mode,io) | 40 | #define fd_dma_setup(addr,size,mode,io) powerpc_fd_dma_setup(addr,size,mode,io) |
40 | 41 | ||
@@ -52,12 +53,12 @@ static __inline__ int powerpc_fd_dma_setup(char *addr, unsigned long size, | |||
52 | if (bus_addr | 53 | if (bus_addr |
53 | && (addr != prev_addr || size != prev_size || dir != prev_dir)) { | 54 | && (addr != prev_addr || size != prev_size || dir != prev_dir)) { |
54 | /* different from last time -- unmap prev */ | 55 | /* different from last time -- unmap prev */ |
55 | pci_unmap_single(NULL, bus_addr, prev_size, prev_dir); | 56 | pci_unmap_single(ppc64_isabridge_dev, bus_addr, prev_size, prev_dir); |
56 | bus_addr = 0; | 57 | bus_addr = 0; |
57 | } | 58 | } |
58 | 59 | ||
59 | if (!bus_addr) /* need to map it */ | 60 | if (!bus_addr) /* need to map it */ |
60 | bus_addr = pci_map_single(NULL, addr, size, dir); | 61 | bus_addr = pci_map_single(ppc64_isabridge_dev, addr, size, dir); |
61 | 62 | ||
62 | /* remember this one as prev */ | 63 | /* remember this one as prev */ |
63 | prev_addr = addr; | 64 | prev_addr = addr; |