Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b239cbe9 authored by Stephen Rothwell's avatar Stephen Rothwell Committed by Paul Mackerras
Browse files

[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: default avatarStephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 69ed3324
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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)
{
+3 −2
Original line number Diff line number Diff line
@@ -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;