[PATCH] powerpc: make ISA floppies work again
authorStephen Rothwell <sfr@canb.auug.org.au>
Tue, 28 Mar 2006 03:40:58 +0000 (14:40 +1100)
committerPaul Mackerras <paulus@samba.org>
Tue, 28 Mar 2006 05:45:36 +0000 (16:45 +1100)
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>
arch/powerpc/kernel/pci_64.c
include/asm-powerpc/floppy.h

index ba92bab7cc2c9188848e43cd220e955537df24f8..4c4449be81ce4395ca253acda7e66cbac3993550 100644 (file)
@@ -78,6 +78,7 @@ int global_phb_number;                /* Global phb counter */
 
 /* Cached ISA bridge dev. */
 struct pci_dev *ppc64_isabridge_dev = NULL;
+EXPORT_SYMBOL_GPL(ppc64_isabridge_dev);
 
 static void fixup_broken_pcnet32(struct pci_dev* dev)
 {
index e258778ca429ea5ccb9e90eb3672df61f821fede..608164c39efbc1cd00f34923e292357bed5f9a4d 100644 (file)
@@ -35,6 +35,7 @@
 #ifdef CONFIG_PCI
 
 #include <linux/pci.h>
+#include <asm/ppc-pci.h>       /* for ppc64_isabridge_dev */
 
 #define fd_dma_setup(addr,size,mode,io) powerpc_fd_dma_setup(addr,size,mode,io)
 
@@ -52,12 +53,12 @@ static __inline__ int powerpc_fd_dma_setup(char *addr, unsigned long size,
        if (bus_addr 
            && (addr != prev_addr || size != prev_size || dir != prev_dir)) {
                /* different from last time -- unmap prev */
-               pci_unmap_single(NULL, bus_addr, prev_size, prev_dir);
+               pci_unmap_single(ppc64_isabridge_dev, bus_addr, prev_size, prev_dir);
                bus_addr = 0;
        }
 
        if (!bus_addr)  /* need to map it */
-               bus_addr = pci_map_single(NULL, addr, size, dir);
+               bus_addr = pci_map_single(ppc64_isabridge_dev, addr, size, dir);
 
        /* remember this one as prev */
        prev_addr = addr;