[patch 07/26] powerpc: make ISA floppies work again

From: gregkh
Date: Tue Apr 04 2006 - 20:08:28 EST



From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>

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@xxxxxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

---
arch/powerpc/kernel/pci_64.c | 1 +
include/asm-powerpc/floppy.h | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)

--- linux-2.6.16.1.orig/arch/powerpc/kernel/pci_64.c
+++ linux-2.6.16.1/arch/powerpc/kernel/pci_64.c
@@ -78,6 +78,7 @@ int global_phb_number; /* Global phb co

/* 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)
{
--- linux-2.6.16.1.orig/include/asm-powerpc/floppy.h
+++ linux-2.6.16.1/include/asm-powerpc/floppy.h
@@ -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_set
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;

--
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/