aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavem <davem>2001-12-17 07:05:09 +0000
committerdavem <davem>2001-12-17 07:05:09 +0000
commit2af6979fc28a26c497fa06087c7957041080fbc8 (patch)
treef0f82928c1a5d06a89a161de9bd35b75df88a552
parentc714c418e3ad44350fb731989a0d317f49ce5ca0 (diff)
downloadnetdev-vger-cvs-2af6979fc28a26c497fa06087c7957041080fbc8.tar.gz
bus_to_virt/virt_to_bus are now illegal.
Kill 'address' member of scatterlist. The 'bounce_buffers' member of the scsi command struct is now never set, kill it. Convert some ISA devices over to isa_virt_to_bus et al. Start marking PCI drivers as broken if they reference virt_to_bus or bus_to_virt.
-rw-r--r--arch/i386/kernel/pci-dma.c2
-rw-r--r--arch/i386/kernel/setup.c14
-rw-r--r--arch/sparc/mm/io-unit.c4
-rw-r--r--arch/sparc/mm/iommu.c12
-rw-r--r--arch/sparc/mm/sun4c.c4
-rw-r--r--arch/sparc64/kernel/iommu_common.c27
-rw-r--r--arch/sparc64/kernel/pci_iommu.c10
-rw-r--r--arch/sparc64/kernel/sbus.c10
-rw-r--r--drivers/block/DAC960.h34
-rw-r--r--drivers/block/ll_rw_blk.c1
-rw-r--r--drivers/block/ps2esdi.c4
-rw-r--r--drivers/block/smart1,2.h1
-rw-r--r--drivers/char/esp.c6
-rw-r--r--drivers/char/synclink.c2
-rw-r--r--drivers/char/tpqic02.c2
-rw-r--r--drivers/message/i2o/i2o_block.c2
-rw-r--r--drivers/message/i2o/i2o_config.c2
-rw-r--r--drivers/message/i2o/i2o_core.c2
-rw-r--r--drivers/message/i2o/i2o_lan.c2
-rw-r--r--drivers/message/i2o/i2o_scsi.c2
-rw-r--r--drivers/net/3c505.c6
-rw-r--r--drivers/net/3c515.c24
-rw-r--r--drivers/net/3c523.c12
-rw-r--r--drivers/net/3c527.c18
-rw-r--r--drivers/net/ac3200.c4
-rw-r--r--drivers/net/cs89x0.c4
-rw-r--r--drivers/net/defxx.c2
-rw-r--r--drivers/net/dl2k.h1
-rw-r--r--drivers/net/hp100.c2
-rw-r--r--drivers/net/lance.c36
-rw-r--r--drivers/net/lasi_82596.c2
-rw-r--r--drivers/net/lne390.c4
-rw-r--r--drivers/net/ne3210.c4
-rw-r--r--drivers/net/ni52.c12
-rw-r--r--drivers/net/ni65.c22
-rw-r--r--drivers/net/rcpci45.c2
-rw-r--r--drivers/net/rrunner.c2
-rw-r--r--drivers/net/sk_g16.c2
-rw-r--r--drivers/net/tlan.c1
-rw-r--r--drivers/scsi/3w-xxxx.c2
-rw-r--r--drivers/scsi/53c7,8xx.c2
-rw-r--r--drivers/scsi/AM53C974.c2
-rw-r--r--drivers/scsi/BusLogic.c2
-rw-r--r--drivers/scsi/advansys.c1
-rw-r--r--drivers/scsi/aha1542.c37
-rw-r--r--drivers/scsi/aha1740.c14
-rw-r--r--drivers/scsi/aic7xxx/aic7xxx_linux.c1
-rw-r--r--drivers/scsi/aic7xxx_old.c11
-rw-r--r--drivers/scsi/atp870u.c2
-rw-r--r--drivers/scsi/dpt_i2o.c2
-rw-r--r--drivers/scsi/eata.c2
-rw-r--r--drivers/scsi/eata_dma.c2
-rw-r--r--drivers/scsi/gdth.c2
-rw-r--r--drivers/scsi/ibmmca.c30
-rw-r--r--drivers/scsi/ini9100u.c2
-rw-r--r--drivers/scsi/inia100.c2
-rw-r--r--drivers/scsi/ips.c2
-rw-r--r--drivers/scsi/mca_53c9x.c2
-rw-r--r--drivers/scsi/osst.c44
-rw-r--r--drivers/scsi/pci2220i.c2
-rw-r--r--drivers/scsi/qla1280.c1
-rw-r--r--drivers/scsi/scsi.h1
-rw-r--r--drivers/scsi/scsi_debug.c26
-rw-r--r--drivers/scsi/scsi_lib.c26
-rw-r--r--drivers/scsi/scsiiom.c2
-rw-r--r--drivers/scsi/seagate.c5
-rw-r--r--drivers/scsi/sgiwd93.c10
-rw-r--r--drivers/scsi/sim710.c59
-rw-r--r--drivers/scsi/st.c34
-rw-r--r--drivers/scsi/u14-34f.c6
-rw-r--r--drivers/scsi/ultrastor.c18
-rw-r--r--drivers/scsi/wd7000.c7
-rw-r--r--drivers/usb/usb-uhci-debug.h54
-rw-r--r--drivers/usb/usb-uhci.c3
-rw-r--r--drivers/usb/usb-uhci.h1
-rw-r--r--drivers/video/matrox/matroxfb_base.h4
-rw-r--r--drivers/video/vesafb.c2
-rw-r--r--include/asm-alpha/scatterlist.h5
-rw-r--r--include/asm-arm/scatterlist.h3
-rw-r--r--include/asm-i386/floppy.h4
-rw-r--r--include/asm-i386/io.h17
-rw-r--r--include/asm-i386/pci.h28
-rw-r--r--include/asm-i386/scatterlist.h11
-rw-r--r--include/asm-ia64/scatterlist.h2
-rw-r--r--include/asm-m68k/scatterlist.h3
-rw-r--r--include/asm-mips/scatterlist.h3
-rw-r--r--include/asm-mips64/scatterlist.h3
-rw-r--r--include/asm-parisc/scatterlist.h3
-rw-r--r--include/asm-ppc/pci.h9
-rw-r--r--include/asm-ppc/scatterlist.h6
-rw-r--r--include/asm-s390/scatterlist.h3
-rw-r--r--include/asm-s390x/scatterlist.h3
-rw-r--r--include/asm-sh/pci.h4
-rw-r--r--include/asm-sh/scatterlist.h3
-rw-r--r--include/asm-sparc/scatterlist.h8
-rw-r--r--include/asm-sparc64/scatterlist.h18
96 files changed, 376 insertions, 488 deletions
diff --git a/arch/i386/kernel/pci-dma.c b/arch/i386/kernel/pci-dma.c
index 4bd1486fe..18a08ccba 100644
--- a/arch/i386/kernel/pci-dma.c
+++ b/arch/i386/kernel/pci-dma.c
@@ -25,7 +25,7 @@ void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,
if (ret != NULL) {
memset(ret, 0, size);
- *dma_handle = virt_to_bus(ret);
+ *dma_handle = virt_to_phys(ret);
}
return ret;
}
diff --git a/arch/i386/kernel/setup.c b/arch/i386/kernel/setup.c
index 4b6c92b34..c05ffe05d 100644
--- a/arch/i386/kernel/setup.c
+++ b/arch/i386/kernel/setup.c
@@ -356,7 +356,7 @@ static void __init probe_roms(void)
/* Video ROM is standard at C000:0000 - C7FF:0000, check signature */
for (base = 0xC0000; base < 0xE0000; base += 2048) {
- romstart = bus_to_virt(base);
+ romstart = isa_bus_to_virt(base);
if (!romsignature(romstart))
continue;
request_resource(&iomem_resource, rom_resources + roms);
@@ -368,7 +368,7 @@ static void __init probe_roms(void)
for (base = 0xC8000; base < 0xE0000; base += 2048) {
unsigned long length;
- romstart = bus_to_virt(base);
+ romstart = isa_bus_to_virt(base);
if (!romsignature(romstart))
continue;
length = romstart[2] * 512;
@@ -397,7 +397,7 @@ static void __init probe_roms(void)
/* Final check for motherboard extension rom at E000:0000 */
base = 0xE0000;
- romstart = bus_to_virt(base);
+ romstart = isa_bus_to_virt(base);
if (romsignature(romstart)) {
rom_resources[roms].start = base;
@@ -816,10 +816,10 @@ void __init setup_arch(char **cmdline_p)
init_mm.end_data = (unsigned long) &_edata;
init_mm.brk = (unsigned long) &_end;
- code_resource.start = virt_to_bus(&_text);
- code_resource.end = virt_to_bus(&_etext)-1;
- data_resource.start = virt_to_bus(&_etext);
- data_resource.end = virt_to_bus(&_edata)-1;
+ code_resource.start = virt_to_phys(&_text);
+ code_resource.end = virt_to_phys(&_etext)-1;
+ data_resource.start = virt_to_phys(&_etext);
+ data_resource.end = virt_to_phys(&_edata)-1;
parse_mem_cmdline(cmdline_p);
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index f1b178180..12400a9ae 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -1,4 +1,4 @@
-/* $Id: io-unit.c,v 1.23 2001-02-13 01:16:43 davem Exp $
+/* $Id: io-unit.c,v 1.24 2001-12-17 07:05:09 davem Exp $
* io-unit.c: IO-UNIT specific routines for memory management.
*
* Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
@@ -131,7 +131,7 @@ static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus
/* FIXME: Cache some resolved pages - often several sg entries are to the same page */
spin_lock_irqsave(&iounit->lock, flags);
for (; sz >= 0; sz--) {
- sg[sz].dvma_address = iounit_get_area(iounit, (unsigned long)sg[sz].address, sg[sz].length);
+ sg[sz].dvma_address = iounit_get_area(iounit, (unsigned long)page_address(sg[sz].page) + sg[sz].offset, sg[sz].length);
sg[sz].dvma_length = sg[sz].length;
}
spin_unlock_irqrestore(&iounit->lock, flags);
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index 706e11319..ad25b6e05 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -1,4 +1,4 @@
-/* $Id: iommu.c,v 1.21 2001-02-13 01:16:43 davem Exp $
+/* $Id: iommu.c,v 1.22 2001-12-17 07:05:09 davem Exp $
* iommu.c: IOMMU specific routines for memory management.
*
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
@@ -168,7 +168,7 @@ static __u32 iommu_get_scsi_one_pflush(char *vaddr, unsigned long len, struct sb
static void iommu_get_scsi_sgl_noflush(struct scatterlist *sg, int sz, struct sbus_bus *sbus)
{
for (; sz >= 0; sz--) {
- sg[sz].dvma_address = (__u32) (sg[sz].address);
+ sg[sz].dvma_address = (__u32) (page_address(sg[sz].page) + sg[sz].offset);
sg[sz].dvma_length = (__u32) (sg[sz].length);
}
}
@@ -177,7 +177,7 @@ static void iommu_get_scsi_sgl_gflush(struct scatterlist *sg, int sz, struct sbu
{
flush_page_for_dma(0);
for (; sz >= 0; sz--) {
- sg[sz].dvma_address = (__u32) (sg[sz].address);
+ sg[sz].dvma_address = (__u32) (page_address(sg[sz].page) + sg[sz].offset);
sg[sz].dvma_length = (__u32) (sg[sz].length);
}
}
@@ -187,14 +187,14 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu
unsigned long page, oldpage = 0;
while(sz >= 0) {
- page = ((unsigned long) sg[sz].address) & PAGE_MASK;
+ page = ((unsigned long) sg[sz].offset) & PAGE_MASK;
if (oldpage == page)
page += PAGE_SIZE; /* We flushed that page already */
- while(page < (unsigned long)(sg[sz].address + sg[sz].length)) {
+ while(page < (unsigned long)(page_address(sg[sz].page) + sg[sz].offset + sg[sz].length)) {
flush_page_for_dma(page);
page += PAGE_SIZE;
}
- sg[sz].dvma_address = (__u32) (sg[sz].address);
+ sg[sz].dvma_address = (__u32) (page_address(sg[sz].page) + sg[sz].offset);
sg[sz].dvma_length = (__u32) (sg[sz].length);
sz--;
oldpage = page - PAGE_SIZE;
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c
index 19a50d642..0673df648 100644
--- a/arch/sparc/mm/sun4c.c
+++ b/arch/sparc/mm/sun4c.c
@@ -1,4 +1,4 @@
-/* $Id: sun4c.c,v 1.210 2001-11-13 03:27:47 davem Exp $
+/* $Id: sun4c.c,v 1.211 2001-12-17 07:05:09 davem Exp $
* sun4c.c: Doing in software what should be done in hardware.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -1337,7 +1337,7 @@ static __u32 sun4c_get_scsi_one(char *bufptr, unsigned long len, struct sbus_bus
static void sun4c_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus *sbus)
{
while (sz >= 0) {
- sg[sz].dvma_address = (__u32)sun4c_lockarea(sg[sz].address, sg[sz].length);
+ sg[sz].dvma_address = (__u32)sun4c_lockarea(page_address(sg[sz].page) + sg[sz].offset, sg[sz].length);
sg[sz].dvma_length = sg[sz].length;
sz--;
}
diff --git a/arch/sparc64/kernel/iommu_common.c b/arch/sparc64/kernel/iommu_common.c
index 4269e264c..844342858 100644
--- a/arch/sparc64/kernel/iommu_common.c
+++ b/arch/sparc64/kernel/iommu_common.c
@@ -1,4 +1,4 @@
-/* $Id: iommu_common.c,v 1.8 2001-12-11 11:13:06 davem Exp $
+/* $Id: iommu_common.c,v 1.9 2001-12-17 07:05:09 davem Exp $
* iommu_common.c: UltraSparc SBUS/PCI common iommu code.
*
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
@@ -66,9 +66,7 @@ static int verify_one_map(struct scatterlist *dma_sg, struct scatterlist **__sg,
daddr = dma_sg->dma_address;
sglen = sg->length;
- sgaddr = (unsigned long) (sg->address ?
- sg->address :
- page_address(sg->page) + sg->offset);
+ sgaddr = (unsigned long) (page_address(sg->page) + sg->offset);
while (dlen > 0) {
unsigned long paddr;
@@ -118,9 +116,7 @@ static int verify_one_map(struct scatterlist *dma_sg, struct scatterlist **__sg,
sg++;
if (--nents <= 0)
break;
- sgaddr = (unsigned long) (sg->address ?
- sg->address :
- page_address(sg->page) + sg->offset);
+ sgaddr = (unsigned long) (page_address(sg->page) + sg->offset);
sglen = sg->length;
}
if (dlen < 0) {
@@ -183,10 +179,11 @@ void verify_sglist(struct scatterlist *sg, int nents, iopte_t *iopte, int npages
printk("%016lx.\n", sg->dma_address & IO_PAGE_MASK);
for (i = 0; i < nents; i++) {
- printk("sg(%d): address(%p) length(%x) "
+ printk("sg(%d): page_addr(%p) off(%x) length(%x) "
"dma_address[%016lx] dma_length[%016lx]\n",
i,
- sg[i].address, sg[i].length,
+ page_address(sg[i].page), sg[i].offset,
+ sg[i].length,
sg[i].dma_address, sg[i].dma_length);
}
}
@@ -201,21 +198,15 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents)
unsigned long prev;
u32 dent_addr, dent_len;
- prev = (unsigned long) (sg->address ?
- sg->address :
- page_address(sg->page) + sg->offset);
+ prev = (unsigned long) (page_address(sg->page) + sg->offset);
prev += (unsigned long) (dent_len = sg->length);
- dent_addr = (u32) ((unsigned long)(sg->address ?
- sg->address :
- page_address(sg->page) + sg->offset)
+ dent_addr = (u32) ((unsigned long)(page_address(sg->page) + sg->offset)
& (IO_PAGE_SIZE - 1UL));
while (--nents) {
unsigned long addr;
sg++;
- addr = (unsigned long) (sg->address ?
- sg->address :
- page_address(sg->page) + sg->offset);
+ addr = (unsigned long) (page_address(sg->page) + sg->offset);
if (! VCONTIG(prev, addr)) {
dma_sg->dma_address = dent_addr;
dma_sg->dma_length = dent_len;
diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c
index afdcbba76..e5ab444e1 100644
--- a/arch/sparc64/kernel/pci_iommu.c
+++ b/arch/sparc64/kernel/pci_iommu.c
@@ -1,4 +1,4 @@
-/* $Id: pci_iommu.c,v 1.16 2001-10-09 02:24:33 davem Exp $
+/* $Id: pci_iommu.c,v 1.17 2001-12-17 07:05:09 davem Exp $
* pci_iommu.c: UltraSparc PCI controller IOM/STC support.
*
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
@@ -425,9 +425,7 @@ void pci_unmap_single(struct pci_dev *pdev, dma_addr_t bus_addr, size_t sz, int
}
#define SG_ENT_PHYS_ADDRESS(SG) \
- ((SG)->address ? \
- __pa((SG)->address) : \
- (__pa(page_address((SG)->page)) + (SG)->offset))
+ (__pa(page_address((SG)->page)) + (SG)->offset)
static inline void fill_sg(iopte_t *iopte, struct scatterlist *sg,
int nused, int nelems, unsigned long iopte_protection)
@@ -522,9 +520,7 @@ int pci_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int
if (nelems == 1) {
sglist->dma_address =
pci_map_single(pdev,
- (sglist->address ?
- sglist->address :
- (page_address(sglist->page) + sglist->offset)),
+ (page_address(sglist->page) + sglist->offset),
sglist->length, direction);
sglist->dma_length = sglist->length;
return 1;
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c
index f1c58c3f9..66e468c19 100644
--- a/arch/sparc64/kernel/sbus.c
+++ b/arch/sparc64/kernel/sbus.c
@@ -1,4 +1,4 @@
-/* $Id: sbus.c,v 1.17 2001-10-09 02:24:33 davem Exp $
+/* $Id: sbus.c,v 1.18 2001-12-17 07:05:09 davem Exp $
* sbus.c: UltraSparc SBUS controller support.
*
* Copyright (C) 1999 David S. Miller (davem@redhat.com)
@@ -377,9 +377,7 @@ void sbus_unmap_single(struct sbus_dev *sdev, dma_addr_t dma_addr, size_t size,
}
#define SG_ENT_PHYS_ADDRESS(SG) \
- ((SG)->address ? \
- __pa((SG)->address) : \
- (__pa(page_address((SG)->page)) + (SG)->offset))
+ (__pa(page_address((SG)->page)) + (SG)->offset)
static inline void fill_sg(iopte_t *iopte, struct scatterlist *sg, int nused, int nelems, unsigned long iopte_bits)
{
@@ -470,9 +468,7 @@ int sbus_map_sg(struct sbus_dev *sdev, struct scatterlist *sg, int nents, int di
if (nents == 1) {
sg->dma_address =
sbus_map_single(sdev,
- (sg->address ?
- sg->address :
- (page_address(sg->page) + sg->offset)),
+ (page_address(sg->page) + sg->offset),
sg->length, dir);
sg->dma_length = sg->length;
return 1;
diff --git a/drivers/block/DAC960.h b/drivers/block/DAC960.h
index 71e7db452..760037053 100644
--- a/drivers/block/DAC960.h
+++ b/drivers/block/DAC960.h
@@ -2573,39 +2573,7 @@ void DAC960_ReleaseControllerLockIH(DAC960_Controller_T *Controller,
spin_unlock_irqrestore(&Controller->RequestQueue->queue_lock, *ProcessorFlags);
}
-
-/*
- Virtual_to_Bus32 maps from Kernel Virtual Addresses to 32 Bit PCI Bus
- Addresses.
-*/
-
-static inline DAC960_BusAddress32_T Virtual_to_Bus32(void *VirtualAddress)
-{
- return (DAC960_BusAddress32_T) virt_to_bus(VirtualAddress);
-}
-
-
-/*
- Bus32_to_Virtual maps from 32 Bit PCI Bus Addresses to Kernel Virtual
- Addresses.
-*/
-
-static inline void *Bus32_to_Virtual(DAC960_BusAddress32_T BusAddress)
-{
- return (void *) bus_to_virt(BusAddress);
-}
-
-
-/*
- Virtual_to_Bus64 maps from Kernel Virtual Addresses to 64 Bit PCI Bus
- Addresses.
-*/
-
-static inline DAC960_BusAddress64_T Virtual_to_Bus64(void *VirtualAddress)
-{
- return (DAC960_BusAddress64_T) virt_to_bus(VirtualAddress);
-}
-
+#error I am a non-portable driver, please convert me to use the Documentation/DMA-mapping.txt interfaces
/*
Define the DAC960 BA Series Controller Interface Register Offsets.
diff --git a/drivers/block/ll_rw_blk.c b/drivers/block/ll_rw_blk.c
index e5c93889d..e1e1494fd 100644
--- a/drivers/block/ll_rw_blk.c
+++ b/drivers/block/ll_rw_blk.c
@@ -477,7 +477,6 @@ int blk_rq_map_sg(request_queue_t *q, struct request *rq, struct scatterlist *sg
sg[nsegs - 1].length += nbytes;
} else {
new_segment:
- sg[nsegs].address = NULL;
sg[nsegs].page = bvec->bv_page;
sg[nsegs].length = nbytes;
sg[nsegs].offset = bvec->bv_offset;
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c
index dec02f0f8..b4af9d7ec 100644
--- a/drivers/block/ps2esdi.c
+++ b/drivers/block/ps2esdi.c
@@ -478,7 +478,7 @@ static void do_ps2esdi_request(request_queue_t * q)
list + sanity checks. */
INIT_REQUEST;
- if (virt_to_bus(CURRENT->buffer + CURRENT->current_nr_sectors * 512) > 16 * MB) {
+ if (isa_virt_to_bus(CURRENT->buffer + CURRENT->current_nr_sectors * 512) > 16 * MB) {
printk("%s: DMA above 16MB not supported\n", DEVICE_NAME);
end_request(FAIL);
} /* check for above 16Mb dmas */
@@ -666,7 +666,7 @@ static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode)
mca_disable_dma(dma_arb_level);
- mca_set_dma_addr(dma_arb_level, virt_to_bus(buffer));
+ mca_set_dma_addr(dma_arb_level, isa_virt_to_bus(buffer));
mca_set_dma_count(dma_arb_level, length * 512 / 2);
diff --git a/drivers/block/smart1,2.h b/drivers/block/smart1,2.h
index 7db25b2a0..166956be0 100644
--- a/drivers/block/smart1,2.h
+++ b/drivers/block/smart1,2.h
@@ -252,6 +252,7 @@ static unsigned long smart1_completed(ctlr_info_t *h)
outb(CHANNEL_CLEAR, h->ioaddr + SMART1_LOCAL_DOORBELL);
+#error Please convert me to Documentation/DMA-mapping.txt
if (cmd) ((cmdlist_t*)bus_to_virt(cmd))->req.hdr.rcode = status;
} else {
cmd = 0;
diff --git a/drivers/char/esp.c b/drivers/char/esp.c
index 5560c565d..073b28078 100644
--- a/drivers/char/esp.c
+++ b/drivers/char/esp.c
@@ -393,7 +393,7 @@ static _INLINE_ void receive_chars_dma(struct esp_struct *info, int num_bytes)
disable_dma(dma);
clear_dma_ff(dma);
set_dma_mode(dma, DMA_MODE_READ);
- set_dma_addr(dma, virt_to_bus(dma_buffer));
+ set_dma_addr(dma, isa_virt_to_bus(dma_buffer));
set_dma_count(dma, dma_bytes);
enable_dma(dma);
release_dma_lock(flags);
@@ -570,7 +570,7 @@ static _INLINE_ void transmit_chars_dma(struct esp_struct *info, int num_bytes)
disable_dma(dma);
clear_dma_ff(dma);
set_dma_mode(dma, DMA_MODE_WRITE);
- set_dma_addr(dma, virt_to_bus(dma_buffer));
+ set_dma_addr(dma, isa_virt_to_bus(dma_buffer));
set_dma_count(dma, dma_bytes);
enable_dma(dma);
release_dma_lock(flags);
@@ -600,7 +600,7 @@ static _INLINE_ void transmit_chars_dma_done(struct esp_struct *info)
disable_dma(dma);
clear_dma_ff(dma);
set_dma_mode(dma, DMA_MODE_WRITE);
- set_dma_addr(dma, virt_to_bus(dma_buffer));
+ set_dma_addr(dma, isa_virt_to_bus(dma_buffer));
set_dma_count(dma, dma_bytes);
enable_dma(dma);
release_dma_lock(flags);
diff --git a/drivers/char/synclink.c b/drivers/char/synclink.c
index 5c8d4f3fb..721271198 100644
--- a/drivers/char/synclink.c
+++ b/drivers/char/synclink.c
@@ -60,6 +60,8 @@
# define BREAKPOINT() { }
#endif
+#error Please convert me to Documentation/DMA-mapping.txt
+
#define MAX_ISA_DEVICES 10
#define MAX_PCI_DEVICES 10
#define MAX_TOTAL_DEVICES 20
diff --git a/drivers/char/tpqic02.c b/drivers/char/tpqic02.c
index 1bdc186d9..848e4da61 100644
--- a/drivers/char/tpqic02.c
+++ b/drivers/char/tpqic02.c
@@ -1408,7 +1408,7 @@ static inline void dma_transfer(void)
clear_dma_ff(QIC02_TAPE_DMA);
set_dma_mode(QIC02_TAPE_DMA, dma_mode);
set_dma_addr(QIC02_TAPE_DMA,
- virt_to_bus(buffaddr) + dma_bytes_done);
+ isa_virt_to_bus(buffaddr) + dma_bytes_done);
set_dma_count(QIC02_TAPE_DMA, TAPE_BLKSIZE);
/* start tape DMA controller */
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c
index c64b7393b..84f135bd4 100644
--- a/drivers/message/i2o/i2o_block.c
+++ b/drivers/message/i2o/i2o_block.c
@@ -40,6 +40,8 @@
* Serial number scanning to find duplicates for FC multipathing
*/
+#error Please convert me to Documentation/DMA-mapping.txt
+
#include <linux/major.h>
#include <linux/module.h>
diff --git a/drivers/message/i2o/i2o_config.c b/drivers/message/i2o/i2o_config.c
index 2d6d6b539..9bea2535d 100644
--- a/drivers/message/i2o/i2o_config.c
+++ b/drivers/message/i2o/i2o_config.c
@@ -25,6 +25,8 @@
* 2 of the License, or (at your option) any later version.
*/
+#error Please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/pci.h>
diff --git a/drivers/message/i2o/i2o_core.c b/drivers/message/i2o/i2o_core.c
index 801037a47..58465ff52 100644
--- a/drivers/message/i2o/i2o_core.c
+++ b/drivers/message/i2o/i2o_core.c
@@ -22,6 +22,8 @@
*
*/
+#error Please convert me to Documentation/DMA-mapping.txt
+
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
diff --git a/drivers/message/i2o/i2o_lan.c b/drivers/message/i2o/i2o_lan.c
index 4c16aa854..856e5552a 100644
--- a/drivers/message/i2o/i2o_lan.c
+++ b/drivers/message/i2o/i2o_lan.c
@@ -25,6 +25,8 @@
* TODO: tests for other LAN classes (Token Ring, Fibre Channel)
*/
+#error Please convert me to Documentation/DMA-mapping.txt
+
#include <linux/config.h>
#include <linux/module.h>
diff --git a/drivers/message/i2o/i2o_scsi.c b/drivers/message/i2o/i2o_scsi.c
index 49d80260a..a14399223 100644
--- a/drivers/message/i2o/i2o_scsi.c
+++ b/drivers/message/i2o/i2o_scsi.c
@@ -31,6 +31,8 @@
* Fix the resource management problems.
*/
+#error Please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/types.h>
diff --git a/drivers/net/3c505.c b/drivers/net/3c505.c
index 7f91256e6..8386addb6 100644
--- a/drivers/net/3c505.c
+++ b/drivers/net/3c505.c
@@ -630,7 +630,7 @@ static void receive_packet(struct net_device *dev, int len)
disable_dma(dev->dma);
clear_dma_ff(dev->dma);
set_dma_mode(dev->dma, 0x04); /* dma read */
- set_dma_addr(dev->dma, virt_to_bus(target));
+ set_dma_addr(dev->dma, isa_virt_to_bus(target));
set_dma_count(dev->dma, rlen);
enable_dma(dev->dma);
release_dma_lock(flags);
@@ -1029,10 +1029,10 @@ static int send_packet(struct net_device *dev, struct sk_buff *skb)
if ((unsigned long)(skb->data + nlen) >= MAX_DMA_ADDRESS) {
memcpy(adapter->dma_buffer, skb->data, nlen);
- target = virt_to_bus(adapter->dma_buffer);
+ target = isa_virt_to_bus(adapter->dma_buffer);
}
else {
- target = virt_to_bus(skb->data);
+ target = isa_virt_to_bus(skb->data);
}
adapter->current_dma.skb = skb;
diff --git a/drivers/net/3c515.c b/drivers/net/3c515.c
index de2013540..83cecdc7e 100644
--- a/drivers/net/3c515.c
+++ b/drivers/net/3c515.c
@@ -844,7 +844,7 @@ static int corkscrew_open(struct net_device *dev)
struct sk_buff *skb;
if (i < (RX_RING_SIZE - 1))
vp->rx_ring[i].next =
- virt_to_bus(&vp->rx_ring[i + 1]);
+ isa_virt_to_bus(&vp->rx_ring[i + 1]);
else
vp->rx_ring[i].next = 0;
vp->rx_ring[i].status = 0; /* Clear complete bit. */
@@ -855,10 +855,10 @@ static int corkscrew_open(struct net_device *dev)
break; /* Bad news! */
skb->dev = dev; /* Mark as being used by this device. */
skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
- vp->rx_ring[i].addr = virt_to_bus(skb->tail);
+ vp->rx_ring[i].addr = isa_virt_to_bus(skb->tail);
}
- vp->rx_ring[i - 1].next = virt_to_bus(&vp->rx_ring[0]); /* Wrap the ring. */
- outl(virt_to_bus(&vp->rx_ring[0]), ioaddr + UpListPtr);
+ vp->rx_ring[i - 1].next = isa_virt_to_bus(&vp->rx_ring[0]); /* Wrap the ring. */
+ outl(isa_virt_to_bus(&vp->rx_ring[0]), ioaddr + UpListPtr);
}
if (vp->full_bus_master_tx) { /* Boomerang bus master Tx. */
vp->cur_tx = vp->dirty_tx = 0;
@@ -1053,7 +1053,7 @@ static int corkscrew_start_xmit(struct sk_buff *skb,
/* vp->tx_full = 1; */
vp->tx_skbuff[entry] = skb;
vp->tx_ring[entry].next = 0;
- vp->tx_ring[entry].addr = virt_to_bus(skb->data);
+ vp->tx_ring[entry].addr = isa_virt_to_bus(skb->data);
vp->tx_ring[entry].length = skb->len | 0x80000000;
vp->tx_ring[entry].status = skb->len | 0x80000000;
@@ -1066,9 +1066,9 @@ static int corkscrew_start_xmit(struct sk_buff *skb,
0) break;
if (prev_entry)
prev_entry->next =
- virt_to_bus(&vp->tx_ring[entry]);
+ isa_virt_to_bus(&vp->tx_ring[entry]);
if (inl(ioaddr + DownListPtr) == 0) {
- outl(virt_to_bus(&vp->tx_ring[entry]),
+ outl(isa_virt_to_bus(&vp->tx_ring[entry]),
ioaddr + DownListPtr);
queued_packet++;
}
@@ -1205,7 +1205,7 @@ static void corkscrew_interrupt(int irq, void *dev_id,
while (lp->cur_tx - dirty_tx > 0) {
int entry = dirty_tx % TX_RING_SIZE;
if (inl(ioaddr + DownListPtr) ==
- virt_to_bus(&lp->tx_ring[entry]))
+ isa_virt_to_bus(&lp->tx_ring[entry]))
break; /* It still hasn't been processed. */
if (lp->tx_skbuff[entry]) {
dev_kfree_skb_irq(lp->
@@ -1414,7 +1414,7 @@ static int boomerang_rx(struct net_device *dev)
skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
/* 'skb_put()' points to the start of sk_buff data area. */
memcpy(skb_put(skb, pkt_len),
- bus_to_virt(vp->rx_ring[entry].
+ isa_bus_to_virt(vp->rx_ring[entry].
addr), pkt_len);
rx_copy++;
} else {
@@ -1424,11 +1424,11 @@ static int boomerang_rx(struct net_device *dev)
vp->rx_skbuff[entry] = NULL;
temp = skb_put(skb, pkt_len);
/* Remove this checking code for final release. */
- if (bus_to_virt(vp->rx_ring[entry].addr) != temp)
+ if (isa_bus_to_virt(vp->rx_ring[entry].addr) != temp)
printk("%s: Warning -- the skbuff addresses do not match"
" in boomerang_rx: %p vs. %p / %p.\n",
dev->name,
- bus_to_virt(vp->
+ isa_bus_to_virt(vp->
rx_ring[entry].
addr), skb->head,
temp);
@@ -1451,7 +1451,7 @@ static int boomerang_rx(struct net_device *dev)
break; /* Bad news! */
skb->dev = dev; /* Mark as being used by this device. */
skb_reserve(skb, 2); /* Align IP on 16 byte boundaries */
- vp->rx_ring[entry].addr = virt_to_bus(skb->tail);
+ vp->rx_ring[entry].addr = isa_virt_to_bus(skb->tail);
vp->rx_skbuff[entry] = skb;
}
vp->rx_ring[entry].status = 0; /* Clear complete bit. */
diff --git a/drivers/net/3c523.c b/drivers/net/3c523.c
index 64d559cf2..eb2480f3a 100644
--- a/drivers/net/3c523.c
+++ b/drivers/net/3c523.c
@@ -304,13 +304,13 @@ static int __init check586(struct net_device *dev, unsigned long where, unsigned
char *iscp_addrs[2];
int i = 0;
- p->base = (unsigned long) bus_to_virt((unsigned long)where) + size - 0x01000000;
- p->memtop = bus_to_virt((unsigned long)where) + size;
+ p->base = (unsigned long) isa_bus_to_virt((unsigned long)where) + size - 0x01000000;
+ p->memtop = isa_bus_to_virt((unsigned long)where) + size;
p->scp = (struct scp_struct *)(p->base + SCP_DEFAULT_ADDRESS);
memset((char *) p->scp, 0, sizeof(struct scp_struct));
p->scp->sysbus = SYSBUSVAL; /* 1 = 8Bit-Bus, 0 = 16 Bit */
- iscp_addrs[0] = bus_to_virt((unsigned long)where);
+ iscp_addrs[0] = isa_bus_to_virt((unsigned long)where);
iscp_addrs[1] = (char *) p->scp - sizeof(struct iscp_struct);
for (i = 0; i < 2; i++) {
@@ -347,7 +347,7 @@ void alloc586(struct net_device *dev)
DELAY(2);
p->scp = (struct scp_struct *) (p->base + SCP_DEFAULT_ADDRESS);
- p->scb = (struct scb_struct *) bus_to_virt(dev->mem_start);
+ p->scb = (struct scb_struct *) isa_bus_to_virt(dev->mem_start);
p->iscp = (struct iscp_struct *) ((char *) p->scp - sizeof(struct iscp_struct));
memset((char *) p->iscp, 0, sizeof(struct iscp_struct));
@@ -529,8 +529,8 @@ int __init elmc_probe(struct net_device *dev)
}
dev->mem_end = dev->mem_start + size; /* set mem_end showed by 'ifconfig' */
- pr->memtop = bus_to_virt(dev->mem_start) + size;
- pr->base = (unsigned long) bus_to_virt(dev->mem_start) + size - 0x01000000;
+ pr->memtop = isa_bus_to_virt(dev->mem_start) + size;
+ pr->base = (unsigned long) isa_bus_to_virt(dev->mem_start) + size - 0x01000000;
alloc586(dev);
elmc_id_reset586(); /* make sure it doesn't generate spurious ints */
diff --git a/drivers/net/3c527.c b/drivers/net/3c527.c
index 7aa8c837e..75bd0aedb 100644
--- a/drivers/net/3c527.c
+++ b/drivers/net/3c527.c
@@ -470,16 +470,16 @@ static int __init mc32_probe1(struct net_device *dev, int slot)
base|=(inb(dev->base_addr)<<(8*i));
}
- lp->exec_box=bus_to_virt(dev->mem_start+base);
+ lp->exec_box=isa_bus_to_virt(dev->mem_start+base);
base=lp->exec_box->data[1]<<16|lp->exec_box->data[0];
lp->base = dev->mem_start+base;
- lp->rx_box=bus_to_virt(lp->base + lp->exec_box->data[2]);
- lp->tx_box=bus_to_virt(lp->base + lp->exec_box->data[3]);
+ lp->rx_box=isa_bus_to_virt(lp->base + lp->exec_box->data[2]);
+ lp->tx_box=isa_bus_to_virt(lp->base + lp->exec_box->data[3]);
- lp->stats = bus_to_virt(lp->base + lp->exec_box->data[5]);
+ lp->stats = isa_bus_to_virt(lp->base + lp->exec_box->data[5]);
/*
* Descriptor chains (card relative)
@@ -781,10 +781,10 @@ static int mc32_load_rx_ring(struct net_device *dev)
return -ENOBUFS;
}
- p=bus_to_virt(lp->base+rx_base);
+ p=isa_bus_to_virt(lp->base+rx_base);
p->control=0;
- p->data=virt_to_bus(lp->rx_ring[i].skb->data);
+ p->data=isa_virt_to_bus(lp->rx_ring[i].skb->data);
p->status=0;
p->length=1532;
@@ -854,7 +854,7 @@ static void mc32_load_tx_ring(struct net_device *dev)
for(i=0;i<lp->tx_len;i++)
{
- p=bus_to_virt(lp->base+tx_base);
+ p=isa_bus_to_virt(lp->base+tx_base);
lp->tx_ring[i].p=p;
lp->tx_ring[i].skb=NULL;
@@ -1080,7 +1080,7 @@ static int mc32_send_packet(struct sk_buff *skb, struct net_device *dev)
np->length = (skb->len < ETH_ZLEN) ? ETH_ZLEN : skb->len;
- np->data = virt_to_bus(skb->data);
+ np->data = isa_virt_to_bus(skb->data);
np->status = 0;
np->control = CONTROL_EOP | CONTROL_EOL;
wmb();
@@ -1197,7 +1197,7 @@ static void mc32_rx_ring(struct net_device *dev)
skb_reserve(newskb,18);
lp->rx_ring[rx_ring_tail].skb=newskb;
- p->data=virt_to_bus(newskb->data);
+ p->data=isa_virt_to_bus(newskb->data);
}
else
{
diff --git a/drivers/net/ac3200.c b/drivers/net/ac3200.c
index 2daff4189..7cac66793 100644
--- a/drivers/net/ac3200.c
+++ b/drivers/net/ac3200.c
@@ -205,10 +205,10 @@ static int __init ac_probe1(int ioaddr, struct net_device *dev)
* the card mem within the region covered by `normal' RAM !!!
*/
if (dev->mem_start > 1024*1024) { /* phys addr > 1MB */
- if (dev->mem_start < virt_to_bus(high_memory)) {
+ if (dev->mem_start < virt_to_phys(high_memory)) {
printk(KERN_CRIT "ac3200.c: Card RAM overlaps with normal memory!!!\n");
printk(KERN_CRIT "ac3200.c: Use EISA SCU to set card memory below 1MB,\n");
- printk(KERN_CRIT "ac3200.c: or to an address above 0x%lx.\n", virt_to_bus(high_memory));
+ printk(KERN_CRIT "ac3200.c: or to an address above 0x%lx.\n", virt_to_phys(high_memory));
printk(KERN_CRIT "ac3200.c: Driver NOT installed.\n");
retval = -EINVAL;
goto out2;
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c
index b21549c65..435b9105e 100644
--- a/drivers/net/cs89x0.c
+++ b/drivers/net/cs89x0.c
@@ -1109,7 +1109,7 @@ net_open(struct net_device *dev)
printk( "%s: dma %lx %lx\n",
dev->name,
(unsigned long)lp->dma_buff,
- (unsigned long)virt_to_bus(lp->dma_buff));
+ (unsigned long)isa_virt_to_bus(lp->dma_buff));
}
if ((unsigned long) lp->dma_buff >= MAX_DMA_ADDRESS ||
!dma_page_eq(lp->dma_buff, lp->dma_buff+lp->dmasize*1024-1)) {
@@ -1128,7 +1128,7 @@ net_open(struct net_device *dev)
disable_dma(dev->dma);
clear_dma_ff(dev->dma);
set_dma_mode(dev->dma, 0x14); /* auto_init as well */
- set_dma_addr(dev->dma, virt_to_bus(lp->dma_buff));
+ set_dma_addr(dev->dma, isa_virt_to_bus(lp->dma_buff));
set_dma_count(dev->dma, lp->dmasize*1024);
enable_dma(dev->dma);
spin_unlock_irqrestore(&lp->lock, flags);
diff --git a/drivers/net/defxx.c b/drivers/net/defxx.c
index d079bd417..d3f14dba1 100644
--- a/drivers/net/defxx.c
+++ b/drivers/net/defxx.c
@@ -199,6 +199,8 @@
* Feb 2001 davej PCI enable cleanups.
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
/* Include files */
#include <linux/module.h>
diff --git a/drivers/net/dl2k.h b/drivers/net/dl2k.h
index fb1a8cd25..985468c60 100644
--- a/drivers/net/dl2k.h
+++ b/drivers/net/dl2k.h
@@ -791,6 +791,7 @@ debug_pkt_dump (struct netdev_private *np, int pkt_len)
}
if (np->rx_debug == 7) {
+#error Please convert me to Documentation/DMA-mapping.txt
phead =
bus_to_virt (le64_to_cpu (desc->fraginfo & 0xffffffffff));
for (pchar = phead, i = 0; i < pkt_len; i++, pchar++) {
diff --git a/drivers/net/hp100.c b/drivers/net/hp100.c
index 0b25e65b9..20de7eefc 100644
--- a/drivers/net/hp100.c
+++ b/drivers/net/hp100.c
@@ -83,6 +83,8 @@
**
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#define HP100_DEFAULT_PRIORITY_TX 0
#undef HP100_DEBUG
diff --git a/drivers/net/lance.c b/drivers/net/lance.c
index ac7a07cb5..3122340f2 100644
--- a/drivers/net/lance.c
+++ b/drivers/net/lance.c
@@ -495,15 +495,15 @@ static int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int
lp->init_block.phys_addr[i] = dev->dev_addr[i];
lp->init_block.filter[0] = 0x00000000;
lp->init_block.filter[1] = 0x00000000;
- lp->init_block.rx_ring = ((u32)virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS;
- lp->init_block.tx_ring = ((u32)virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS;
+ lp->init_block.rx_ring = ((u32)isa_virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS;
+ lp->init_block.tx_ring = ((u32)isa_virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS;
outw(0x0001, ioaddr+LANCE_ADDR);
inw(ioaddr+LANCE_ADDR);
- outw((short) (u32) virt_to_bus(&lp->init_block), ioaddr+LANCE_DATA);
+ outw((short) (u32) isa_virt_to_bus(&lp->init_block), ioaddr+LANCE_DATA);
outw(0x0002, ioaddr+LANCE_ADDR);
inw(ioaddr+LANCE_ADDR);
- outw(((u32)virt_to_bus(&lp->init_block)) >> 16, ioaddr+LANCE_DATA);
+ outw(((u32)isa_virt_to_bus(&lp->init_block)) >> 16, ioaddr+LANCE_DATA);
outw(0x0000, ioaddr+LANCE_ADDR);
inw(ioaddr+LANCE_ADDR);
@@ -704,16 +704,16 @@ lance_open(struct net_device *dev)
if (lance_debug > 1)
printk("%s: lance_open() irq %d dma %d tx/rx rings %#x/%#x init %#x.\n",
dev->name, dev->irq, dev->dma,
- (u32) virt_to_bus(lp->tx_ring),
- (u32) virt_to_bus(lp->rx_ring),
- (u32) virt_to_bus(&lp->init_block));
+ (u32) isa_virt_to_bus(lp->tx_ring),
+ (u32) isa_virt_to_bus(lp->rx_ring),
+ (u32) isa_virt_to_bus(&lp->init_block));
lance_init_ring(dev, GFP_KERNEL);
/* Re-initialize the LANCE, and start it when done. */
outw(0x0001, ioaddr+LANCE_ADDR);
- outw((short) (u32) virt_to_bus(&lp->init_block), ioaddr+LANCE_DATA);
+ outw((short) (u32) isa_virt_to_bus(&lp->init_block), ioaddr+LANCE_DATA);
outw(0x0002, ioaddr+LANCE_ADDR);
- outw(((u32)virt_to_bus(&lp->init_block)) >> 16, ioaddr+LANCE_DATA);
+ outw(((u32)isa_virt_to_bus(&lp->init_block)) >> 16, ioaddr+LANCE_DATA);
outw(0x0004, ioaddr+LANCE_ADDR);
outw(0x0915, ioaddr+LANCE_DATA);
@@ -735,7 +735,7 @@ lance_open(struct net_device *dev)
if (lance_debug > 2)
printk("%s: LANCE open after %d ticks, init block %#x csr0 %4.4x.\n",
- dev->name, i, (u32) virt_to_bus(&lp->init_block), inw(ioaddr+LANCE_DATA));
+ dev->name, i, (u32) isa_virt_to_bus(&lp->init_block), inw(ioaddr+LANCE_DATA));
return 0; /* Always succeed */
}
@@ -799,7 +799,7 @@ lance_init_ring(struct net_device *dev, int gfp)
if (rx_buff == NULL)
lp->rx_ring[i].base = 0;
else
- lp->rx_ring[i].base = (u32)virt_to_bus(rx_buff) | 0x80000000;
+ lp->rx_ring[i].base = (u32)isa_virt_to_bus(rx_buff) | 0x80000000;
lp->rx_ring[i].buf_length = -PKT_BUF_SZ;
}
/* The Tx buffer address is filled in as needed, but we do need to clear
@@ -814,8 +814,8 @@ lance_init_ring(struct net_device *dev, int gfp)
lp->init_block.phys_addr[i] = dev->dev_addr[i];
lp->init_block.filter[0] = 0x00000000;
lp->init_block.filter[1] = 0x00000000;
- lp->init_block.rx_ring = ((u32)virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS;
- lp->init_block.tx_ring = ((u32)virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS;
+ lp->init_block.rx_ring = ((u32)isa_virt_to_bus(lp->rx_ring) & 0xffffff) | RX_RING_LEN_BITS;
+ lp->init_block.tx_ring = ((u32)isa_virt_to_bus(lp->tx_ring) & 0xffffff) | TX_RING_LEN_BITS;
}
static void
@@ -904,17 +904,17 @@ static int lance_start_xmit(struct sk_buff *skb, struct net_device *dev)
/* If any part of this buffer is >16M we must copy it to a low-memory
buffer. */
- if ((u32)virt_to_bus(skb->data) + skb->len > 0x01000000) {
+ if ((u32)isa_virt_to_bus(skb->data) + skb->len > 0x01000000) {
if (lance_debug > 5)
printk("%s: bouncing a high-memory packet (%#x).\n",
- dev->name, (u32)virt_to_bus(skb->data));
+ dev->name, (u32)isa_virt_to_bus(skb->data));
memcpy(&lp->tx_bounce_buffs[entry], skb->data, skb->len);
lp->tx_ring[entry].base =
- ((u32)virt_to_bus((lp->tx_bounce_buffs + entry)) & 0xffffff) | 0x83000000;
+ ((u32)isa_virt_to_bus((lp->tx_bounce_buffs + entry)) & 0xffffff) | 0x83000000;
dev_kfree_skb(skb);
} else {
lp->tx_skbuff[entry] = skb;
- lp->tx_ring[entry].base = ((u32)virt_to_bus(skb->data) & 0xffffff) | 0x83000000;
+ lp->tx_ring[entry].base = ((u32)isa_virt_to_bus(skb->data) & 0xffffff) | 0x83000000;
}
lp->cur_tx++;
@@ -1112,7 +1112,7 @@ lance_rx(struct net_device *dev)
skb_reserve(skb,2); /* 16 byte align */
skb_put(skb,pkt_len); /* Make room */
eth_copy_and_sum(skb,
- (unsigned char *)bus_to_virt((lp->rx_ring[entry].base & 0x00ffffff)),
+ (unsigned char *)isa_bus_to_virt((lp->rx_ring[entry].base & 0x00ffffff)),
pkt_len,0);
skb->protocol=eth_type_trans(skb,dev);
netif_rx(skb);
diff --git a/drivers/net/lasi_82596.c b/drivers/net/lasi_82596.c
index 54d5c958d..e93eb24ef 100644
--- a/drivers/net/lasi_82596.c
+++ b/drivers/net/lasi_82596.c
@@ -1184,7 +1184,7 @@ static int __init i82596_probe(struct net_device *dev, int options)
printk("%s: Couldn't get shared memory\n", dev->name);
return -ENOMEM;
}
- dma_addr = virt_to_bus(dev->mem_start);
+ dma_addr = virt_to_phys(dev->mem_start);
}
ether_setup(dev);
diff --git a/drivers/net/lne390.c b/drivers/net/lne390.c
index b80f23916..c1e925d2f 100644
--- a/drivers/net/lne390.c
+++ b/drivers/net/lne390.c
@@ -226,10 +226,10 @@ static int __init lne390_probe1(struct net_device *dev, int ioaddr)
the card mem within the region covered by `normal' RAM !!!
*/
if (dev->mem_start > 1024*1024) { /* phys addr > 1MB */
- if (dev->mem_start < virt_to_bus(high_memory)) {
+ if (dev->mem_start < virt_to_phys(high_memory)) {
printk(KERN_CRIT "lne390.c: Card RAM overlaps with normal memory!!!\n");
printk(KERN_CRIT "lne390.c: Use EISA SCU to set card memory below 1MB,\n");
- printk(KERN_CRIT "lne390.c: or to an address above 0x%lx.\n", virt_to_bus(high_memory));
+ printk(KERN_CRIT "lne390.c: or to an address above 0x%lx.\n", virt_to_phys(high_memory));
printk(KERN_CRIT "lne390.c: Driver NOT installed.\n");
ret = -EINVAL;
goto cleanup;
diff --git a/drivers/net/ne3210.c b/drivers/net/ne3210.c
index 6b408b118..b2a1f3a6c 100644
--- a/drivers/net/ne3210.c
+++ b/drivers/net/ne3210.c
@@ -213,10 +213,10 @@ static int __init ne3210_probe1(struct net_device *dev, int ioaddr)
the card mem within the region covered by `normal' RAM !!!
*/
if (dev->mem_start > 1024*1024) { /* phys addr > 1MB */
- if (dev->mem_start < virt_to_bus(high_memory)) {
+ if (dev->mem_start < virt_to_phys(high_memory)) {
printk(KERN_CRIT "ne3210.c: Card RAM overlaps with normal memory!!!\n");
printk(KERN_CRIT "ne3210.c: Use EISA SCU to set card memory below 1MB,\n");
- printk(KERN_CRIT "ne3210.c: or to an address above 0x%lx.\n", virt_to_bus(high_memory));
+ printk(KERN_CRIT "ne3210.c: or to an address above 0x%lx.\n", virt_to_phys(high_memory));
printk(KERN_CRIT "ne3210.c: Driver NOT installed.\n");
retval = -EINVAL;
goto out2;
diff --git a/drivers/net/ni52.c b/drivers/net/ni52.c
index d222d5480..e89fae619 100644
--- a/drivers/net/ni52.c
+++ b/drivers/net/ni52.c
@@ -286,8 +286,8 @@ static int check586(struct net_device *dev,char *where,unsigned size)
char *iscp_addrs[2];
int i;
- p->base = (unsigned long) bus_to_virt((unsigned long)where) + size - 0x01000000;
- p->memtop = bus_to_virt((unsigned long)where) + size;
+ p->base = (unsigned long) isa_bus_to_virt((unsigned long)where) + size - 0x01000000;
+ p->memtop = isa_bus_to_virt((unsigned long)where) + size;
p->scp = (struct scp_struct *)(p->base + SCP_DEFAULT_ADDRESS);
memset((char *)p->scp,0, sizeof(struct scp_struct));
for(i=0;i<sizeof(struct scp_struct);i++) /* memory was writeable? */
@@ -297,7 +297,7 @@ static int check586(struct net_device *dev,char *where,unsigned size)
if(p->scp->sysbus != SYSBUSVAL)
return 0;
- iscp_addrs[0] = bus_to_virt((unsigned long)where);
+ iscp_addrs[0] = isa_bus_to_virt((unsigned long)where);
iscp_addrs[1]= (char *) p->scp - sizeof(struct iscp_struct);
for(i=0;i<2;i++)
@@ -329,7 +329,7 @@ static void alloc586(struct net_device *dev)
DELAY(1);
p->scp = (struct scp_struct *) (p->base + SCP_DEFAULT_ADDRESS);
- p->scb = (struct scb_struct *) bus_to_virt(dev->mem_start);
+ p->scb = (struct scb_struct *) isa_bus_to_virt(dev->mem_start);
p->iscp = (struct iscp_struct *) ((char *)p->scp - sizeof(struct iscp_struct));
memset((char *) p->iscp,0,sizeof(struct iscp_struct));
@@ -477,8 +477,8 @@ static int __init ni52_probe1(struct net_device *dev,int ioaddr)
/* warning: we don't free it on errors */
memset((char *) dev->priv,0,sizeof(struct priv));
- ((struct priv *) (dev->priv))->memtop = bus_to_virt(dev->mem_start) + size;
- ((struct priv *) (dev->priv))->base = (unsigned long) bus_to_virt(dev->mem_start) + size - 0x01000000;
+ ((struct priv *) (dev->priv))->memtop = isa_bus_to_virt(dev->mem_start) + size;
+ ((struct priv *) (dev->priv))->base = (unsigned long) isa_bus_to_virt(dev->mem_start) + size - 0x01000000;
alloc586(dev);
/* set number of receive-buffs according to memsize */
diff --git a/drivers/net/ni65.c b/drivers/net/ni65.c
index 84f5a31ae..849b1852d 100644
--- a/drivers/net/ni65.c
+++ b/drivers/net/ni65.c
@@ -507,10 +507,10 @@ static void ni65_init_lance(struct priv *p,unsigned char *daddr,int filter,int m
p->ib.filter[i] = filter;
p->ib.mode = mode;
- p->ib.trp = (u32) virt_to_bus(p->tmdhead) | TMDNUMMASK;
- p->ib.rrp = (u32) virt_to_bus(p->rmdhead) | RMDNUMMASK;
+ p->ib.trp = (u32) isa_virt_to_bus(p->tmdhead) | TMDNUMMASK;
+ p->ib.rrp = (u32) isa_virt_to_bus(p->rmdhead) | RMDNUMMASK;
writereg(0,CSR3); /* busmaster/no word-swap */
- pib = (u32) virt_to_bus(&p->ib);
+ pib = (u32) isa_virt_to_bus(&p->ib);
writereg(pib & 0xffff,CSR1);
writereg(pib >> 16,CSR2);
@@ -551,7 +551,7 @@ static void *ni65_alloc_mem(struct net_device *dev,char *what,int size,int type)
return NULL;
}
}
- if( (u32) virt_to_bus(ptr+size) > 0x1000000) {
+ if( (u32) virt_to_phys(ptr+size) > 0x1000000) {
printk("%s: unable to allocate %s memory in lower 16MB!\n",dev->name,what);
if(type)
kfree_skb(skb);
@@ -683,7 +683,7 @@ static void ni65_stop_start(struct net_device *dev,struct priv *p)
#ifdef XMT_VIA_SKB
skb_save[i] = p->tmd_skb[i];
#endif
- buffer[i] = (u32) bus_to_virt(tmdp->u.buffer);
+ buffer[i] = (u32) isa_bus_to_virt(tmdp->u.buffer);
blen[i] = tmdp->blen;
tmdp->u.s.status = 0x0;
}
@@ -697,7 +697,7 @@ static void ni65_stop_start(struct net_device *dev,struct priv *p)
for(i=0;i<TMDNUM;i++) {
int num = (i + p->tmdlast) & (TMDNUM-1);
- p->tmdhead[i].u.buffer = (u32) virt_to_bus((char *)buffer[num]); /* status is part of buffer field */
+ p->tmdhead[i].u.buffer = (u32) isa_virt_to_bus((char *)buffer[num]); /* status is part of buffer field */
p->tmdhead[i].blen = blen[num];
if(p->tmdhead[i].u.s.status & XMIT_OWN) {
p->tmdnum = (p->tmdnum + 1) & (TMDNUM-1);
@@ -766,9 +766,9 @@ static int ni65_lance_reinit(struct net_device *dev)
{
struct rmd *rmdp = p->rmdhead + i;
#ifdef RCV_VIA_SKB
- rmdp->u.buffer = (u32) virt_to_bus(p->recv_skb[i]->data);
+ rmdp->u.buffer = (u32) isa_virt_to_bus(p->recv_skb[i]->data);
#else
- rmdp->u.buffer = (u32) virt_to_bus(p->recvbounce[i]);
+ rmdp->u.buffer = (u32) isa_virt_to_bus(p->recvbounce[i]);
#endif
rmdp->blen = -(R_BUF_SIZE-8);
rmdp->mlen = 0;
@@ -1033,7 +1033,7 @@ static void ni65_recv_intr(struct net_device *dev,int csr0)
struct sk_buff *skb1 = p->recv_skb[p->rmdnum];
skb_put(skb,R_BUF_SIZE);
p->recv_skb[p->rmdnum] = skb;
- rmdp->u.buffer = (u32) virt_to_bus(skb->data);
+ rmdp->u.buffer = (u32) isa_virt_to_bus(skb->data);
skb = skb1;
skb_trim(skb,len);
}
@@ -1115,7 +1115,7 @@ static int ni65_send_packet(struct sk_buff *skb, struct net_device *dev)
cli();
tmdp = p->tmdhead + p->tmdnum;
- tmdp->u.buffer = (u32) virt_to_bus(p->tmdbounce[p->tmdbouncenum]);
+ tmdp->u.buffer = (u32) isa_virt_to_bus(p->tmdbounce[p->tmdbouncenum]);
p->tmdbouncenum = (p->tmdbouncenum + 1) & (TMDNUM - 1);
#ifdef XMT_VIA_SKB
@@ -1125,7 +1125,7 @@ static int ni65_send_packet(struct sk_buff *skb, struct net_device *dev)
cli();
tmdp = p->tmdhead + p->tmdnum;
- tmdp->u.buffer = (u32) virt_to_bus(skb->data);
+ tmdp->u.buffer = (u32) isa_virt_to_bus(skb->data);
p->tmd_skb[p->tmdnum] = skb;
}
#endif
diff --git a/drivers/net/rcpci45.c b/drivers/net/rcpci45.c
index 0b5bcdcc1..4063c0e2c 100644
--- a/drivers/net/rcpci45.c
+++ b/drivers/net/rcpci45.c
@@ -44,6 +44,8 @@
**
***************************************************************************/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
diff --git a/drivers/net/rrunner.c b/drivers/net/rrunner.c
index f476a5d48..3d3a4ace1 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -21,6 +21,8 @@
* ODS/Essential.
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#define DEBUG 1
#define RX_DMA_SKBUFF 1
#define PKT_COPY_THRESHOLD 512
diff --git a/drivers/net/sk_g16.c b/drivers/net/sk_g16.c
index 21ab6e3af..3a7cf6ac9 100644
--- a/drivers/net/sk_g16.c
+++ b/drivers/net/sk_g16.c
@@ -810,7 +810,7 @@ int __init SK_probe(struct net_device *dev, short ioaddr)
SK_print_pos(dev, "POS registers after ROM, RAM config");
#endif
- board = (SK_RAM *) bus_to_virt(rom_addr);
+ board = (SK_RAM *) isa_bus_to_virt(rom_addr);
/* Read in station address */
for (i = 0, j = 0; i < ETH_ALEN; i++, j+=2)
diff --git a/drivers/net/tlan.c b/drivers/net/tlan.c
index b948c40b0..9ba4c8678 100644
--- a/drivers/net/tlan.c
+++ b/drivers/net/tlan.c
@@ -160,6 +160,7 @@
*
*******************************************************************************/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
#include <linux/module.h>
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c
index c8aa338eb..9c1a2c6c9 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -108,6 +108,8 @@
Fix get_param for specific units.
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
MODULE_AUTHOR ("3ware Inc.");
diff --git a/drivers/scsi/53c7,8xx.c b/drivers/scsi/53c7,8xx.c
index 81217c47e..f4db58cf1 100644
--- a/drivers/scsi/53c7,8xx.c
+++ b/drivers/scsi/53c7,8xx.c
@@ -62,6 +62,8 @@
* the fourth byte from 50 to 25.
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/config.h>
#ifdef CONFIG_SCSI_NCR53C7xx_sync
diff --git a/drivers/scsi/AM53C974.c b/drivers/scsi/AM53C974.c
index 5696214c7..f5d3790f4 100644
--- a/drivers/scsi/AM53C974.c
+++ b/drivers/scsi/AM53C974.c
@@ -1,3 +1,5 @@
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/delay.h>
#include <linux/signal.h>
diff --git a/drivers/scsi/BusLogic.c b/drivers/scsi/BusLogic.c
index 85d61ad12..6f5032c5f 100644
--- a/drivers/scsi/BusLogic.c
+++ b/drivers/scsi/BusLogic.c
@@ -29,6 +29,8 @@
#define BusLogic_DriverVersion "2.1.15"
#define BusLogic_DriverDate "17 August 1998"
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/version.h>
#include <linux/module.h>
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c
index 080847a4e..12b800af7 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -749,6 +749,7 @@
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
/*
* --- Linux Version
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index 24f98cccd..154777d99 100644
--- a/drivers/scsi/aha1542.c
+++ b/drivers/scsi/aha1542.c
@@ -51,13 +51,14 @@
#include "aha1542.h"
-#define SCSI_PA(address) virt_to_bus(address)
+#define SCSI_BUF_PA(address) isa_virt_to_bus(address)
+#define SCSI_SG_PA(sgent) (isa_page_to_bus((sgent)->page) + (sgent)->offset)
static void BAD_DMA(void *address, unsigned int length)
{
printk(KERN_CRIT "buf vaddress %p paddress 0x%lx length %d\n",
address,
- SCSI_PA(address),
+ SCSI_BUS_PA(address),
length);
panic("Buffer at physical address > 16Mb used for aha1542");
}
@@ -69,8 +70,8 @@ static void BAD_SG_DMA(Scsi_Cmnd * SCpnt,
{
printk(KERN_CRIT "sgpnt[%d:%d] addr %p/0x%lx length %d\n",
badseg, nseg,
- sgpnt[badseg].address,
- SCSI_PA(sgpnt[badseg].address),
+ page_address(sgpnt[badseg].page) + sgpnt[badseg].offset,
+ SCSI_SG_PA(&sgpnt[badseg]),
sgpnt[badseg].length);
/*
@@ -511,7 +512,7 @@ static void aha1542_intr_handle(int irq, void *dev_id, struct pt_regs *regs)
return;
};
- mbo = (scsi2int(mb[mbi].ccbptr) - (SCSI_PA(&ccb[0]))) / sizeof(struct ccb);
+ mbo = (scsi2int(mb[mbi].ccbptr) - (SCSI_BUF_PA(&ccb[0]))) / sizeof(struct ccb);
mbistatus = mb[mbi].status;
mb[mbi].status = 0;
HOSTDATA(shost)->aha1542_last_mbi_used = mbi;
@@ -681,7 +682,7 @@ static int aha1542_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
printk(KERN_DEBUG "Sending command (%d %x)...", mbo, done);
#endif
- any2scsi(mb[mbo].ccbptr, SCSI_PA(&ccb[mbo])); /* This gets trashed for some reason */
+ any2scsi(mb[mbo].ccbptr, SCSI_BUF_PA(&ccb[mbo])); /* This gets trashed for some reason */
memset(&ccb[mbo], 0, sizeof(struct ccb));
@@ -710,11 +711,13 @@ static int aha1542_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
panic("aha1542.c: unable to allocate DMA memory\n");
for (i = 0; i < SCpnt->use_sg; i++) {
if (sgpnt[i].length == 0 || SCpnt->use_sg > 16 ||
- (((int) sgpnt[i].address) & 1) || (sgpnt[i].length & 1)) {
+ (((int) sgpnt[i].offset) & 1) || (sgpnt[i].length & 1)) {
unsigned char *ptr;
printk(KERN_CRIT "Bad segment list supplied to aha1542.c (%d, %d)\n", SCpnt->use_sg, i);
for (i = 0; i < SCpnt->use_sg; i++) {
- printk(KERN_CRIT "%d: %p %d\n", i, sgpnt[i].address,
+ printk(KERN_CRIT "%d: %p %d\n", i,
+ (page_address(sgpnt[i].page) +
+ sgpnt[i].offset),
sgpnt[i].length);
};
printk(KERN_CRIT "cptr %x: ", (unsigned int) cptr);
@@ -723,13 +726,13 @@ static int aha1542_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
printk("%02x ", ptr[i]);
panic("Foooooooood fight!");
};
- any2scsi(cptr[i].dataptr, SCSI_PA(sgpnt[i].address));
- if (SCSI_PA(sgpnt[i].address + sgpnt[i].length - 1) > ISA_DMA_THRESHOLD)
+ any2scsi(cptr[i].dataptr, SCSI_SG_PA(&sgpnt[i]));
+ if (SCSI_SG_PA(&sgpnt[i].page) + sgpnt[i].length - 1 > ISA_DMA_THRESHOLD)
BAD_SG_DMA(SCpnt, sgpnt, SCpnt->use_sg, i);
any2scsi(cptr[i].datalen, sgpnt[i].length);
};
any2scsi(ccb[mbo].datalen, SCpnt->use_sg * sizeof(struct chain));
- any2scsi(ccb[mbo].dataptr, SCSI_PA(cptr));
+ any2scsi(ccb[mbo].dataptr, SCSI_BUF_PA(cptr));
#ifdef DEBUG
printk("cptr %x: ", cptr);
ptr = (unsigned char *) cptr;
@@ -740,9 +743,9 @@ static int aha1542_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
ccb[mbo].op = 0; /* SCSI Initiator Command */
SCpnt->host_scribble = NULL;
any2scsi(ccb[mbo].datalen, bufflen);
- if (buff && SCSI_PA(buff + bufflen - 1) > ISA_DMA_THRESHOLD)
+ if (buff && SCSI_BUF_PA(buff + bufflen - 1) > ISA_DMA_THRESHOLD)
BAD_DMA(buff, bufflen);
- any2scsi(ccb[mbo].dataptr, SCSI_PA(buff));
+ any2scsi(ccb[mbo].dataptr, SCSI_BUF_PA(buff));
};
ccb[mbo].idlun = (target & 7) << 5 | direction | (lun & 7); /*SCSI Target Id */
ccb[mbo].rsalen = 16;
@@ -802,10 +805,10 @@ static void setup_mailboxes(int bse, struct Scsi_Host *shpnt)
for (i = 0; i < AHA1542_MAILBOXES; i++) {
mb[i].status = mb[AHA1542_MAILBOXES + i].status = 0;
- any2scsi(mb[i].ccbptr, SCSI_PA(&ccb[i]));
+ any2scsi(mb[i].ccbptr, SCSI_BUF_PA(&ccb[i]));
};
aha1542_intr_reset(bse); /* reset interrupts, so they don't block */
- any2scsi((cmd + 2), SCSI_PA(mb));
+ any2scsi((cmd + 2), SCSI_BUF_PA(mb));
aha1542_out(bse, cmd, 5);
WAIT(INTRFLAGS(bse), INTRMASK, HACC, 0);
while (0) {
@@ -1185,7 +1188,7 @@ static int __init aha1542_detect(Scsi_Host_Template * tpnt)
continue;
/* For now we do this - until kmalloc is more intelligent
we are resigned to stupid hacks like this */
- if (SCSI_PA(shpnt) >= ISA_DMA_THRESHOLD) {
+ if (SCSI_BUF_PA(shpnt) >= ISA_DMA_THRESHOLD) {
printk(KERN_ERR "Invalid address for shpnt with 1542.\n");
goto unregister;
}
@@ -1398,7 +1401,7 @@ static int aha1542_dev_reset(Scsi_Cmnd * SCpnt)
HOSTDATA(SCpnt->host)->aha1542_last_mbo_used = mbo;
restore_flags(flags);
- any2scsi(mb[mbo].ccbptr, SCSI_PA(&ccb[mbo])); /* This gets trashed for some reason */
+ any2scsi(mb[mbo].ccbptr, SCSI_BUF_PA(&ccb[mbo])); /* This gets trashed for some reason */
memset(&ccb[mbo], 0, sizeof(struct ccb));
diff --git a/drivers/scsi/aha1740.c b/drivers/scsi/aha1740.c
index 8e2609ab3..5258b8d77 100644
--- a/drivers/scsi/aha1740.c
+++ b/drivers/scsi/aha1740.c
@@ -232,7 +232,7 @@ void aha1740_intr_handle(int irq, void *dev_id, struct pt_regs * regs)
{
DEB(printk("aha1740_intr top of loop.\n"));
adapstat = inb(G2INTST(base));
- ecbptr = (struct ecb *) bus_to_virt(inl(MBOXIN0(base)));
+ ecbptr = (struct ecb *) isa_bus_to_virt(inl(MBOXIN0(base)));
outb(G2CNTRL_IRST,G2CNTRL(base)); /* interrupt reset */
switch ( adapstat & G2INTST_MASK )
@@ -397,10 +397,10 @@ int aha1740_queuecommand(Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
for(i=0; i<SCpnt->use_sg; i++)
{
cptr[i].datalen = sgpnt[i].length;
- cptr[i].dataptr = virt_to_bus(sgpnt[i].address);
+ cptr[i].dataptr = isa_virt_to_bus(sgpnt[i].address);
}
host->ecb[ecbno].datalen = SCpnt->use_sg * sizeof(struct aha1740_chain);
- host->ecb[ecbno].dataptr = virt_to_bus(cptr);
+ host->ecb[ecbno].dataptr = isa_virt_to_bus(cptr);
#ifdef DEBUG
printk("cptr %x: ",cptr);
ptr = (unsigned char *) cptr;
@@ -411,15 +411,15 @@ int aha1740_queuecommand(Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
{
SCpnt->host_scribble = NULL;
host->ecb[ecbno].datalen = bufflen;
- host->ecb[ecbno].dataptr = virt_to_bus(buff);
+ host->ecb[ecbno].dataptr = isa_virt_to_bus(buff);
}
host->ecb[ecbno].lun = SCpnt->lun;
host->ecb[ecbno].ses = 1; /* Suppress underrun errors */
host->ecb[ecbno].dir = direction;
host->ecb[ecbno].ars = 1; /* Yes, get the sense on an error */
host->ecb[ecbno].senselen = 12;
- host->ecb[ecbno].senseptr = virt_to_bus(host->ecb[ecbno].sense);
- host->ecb[ecbno].statusptr = virt_to_bus(host->ecb[ecbno].status);
+ host->ecb[ecbno].senseptr = isa_virt_to_bus(host->ecb[ecbno].sense);
+ host->ecb[ecbno].statusptr = isa_virt_to_bus(host->ecb[ecbno].status);
host->ecb[ecbno].done = done;
host->ecb[ecbno].SCpnt = SCpnt;
#ifdef DEBUG
@@ -459,7 +459,7 @@ int aha1740_queuecommand(Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
if (loopcnt == LOOPCNT_MAX)
panic("aha1740.c: mbxout busy!\n");
}
- outl(virt_to_bus(host->ecb + ecbno), MBOXOUT0(base));
+ outl(isa_virt_to_bus(host->ecb + ecbno), MBOXOUT0(base));
for (loopcnt = 0; ; loopcnt++) {
if (! (inb(G2STAT(base)) & G2STAT_BUSY)) break;
if (loopcnt == LOOPCNT_WARN) {
diff --git a/drivers/scsi/aic7xxx/aic7xxx_linux.c b/drivers/scsi/aic7xxx/aic7xxx_linux.c
index 2f5a22e3e..0fa747f22 100644
--- a/drivers/scsi/aic7xxx/aic7xxx_linux.c
+++ b/drivers/scsi/aic7xxx/aic7xxx_linux.c
@@ -1699,6 +1699,7 @@ ahc_linux_run_device_queue(struct ahc_softc *ahc, struct ahc_linux_device *dev)
cmd->request_buffer,
cmd->request_bufflen,
scsi_to_pci_dma_dir(cmd->sc_data_direction));
+ scb->sg_count = 0;
scb->sg_count = ahc_linux_map_seg(ahc, scb,
sg, addr,
cmd->request_bufflen);
diff --git a/drivers/scsi/aic7xxx_old.c b/drivers/scsi/aic7xxx_old.c
index 9177efb73..013cefb85 100644
--- a/drivers/scsi/aic7xxx_old.c
+++ b/drivers/scsi/aic7xxx_old.c
@@ -254,12 +254,6 @@
#include <linux/config.h> /* for CONFIG_PCI */
-/*
- * To generate the correct addresses for the controller to issue
- * on the bus. Originally added for DEC Alpha support.
- */
-#define VIRT_TO_BUS(a) (unsigned int)virt_to_bus((void *)(a))
-
#define AIC7XXX_C_VERSION "5.2.4"
#define NUMBER(arr) (sizeof(arr) / sizeof(arr[0]))
@@ -2845,7 +2839,10 @@ aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb)
struct scatterlist *sg;
sg = (struct scatterlist *)cmd->request_buffer;
- buffer = (char *)sg[0].address;
+
+ /* XXX Assumes not highmem page. XXX */
+ buffer = (char *) (page_address(sg[0].page) +
+ sg[0].offset);
}
else
{
diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index aec2ad4c1..6e576336f 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -14,6 +14,8 @@
* support atp880 chip lvd u160 2001/05/15 (7.1)
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/kernel.h>
diff --git a/drivers/scsi/dpt_i2o.c b/drivers/scsi/dpt_i2o.c
index db4e6c8a1..4eeb7505c 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -28,6 +28,8 @@
#define ADDR32 (0)
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/version.h>
#include <linux/module.h>
diff --git a/drivers/scsi/eata.c b/drivers/scsi/eata.c
index fa97dfb7b..58fe35ab2 100644
--- a/drivers/scsi/eata.c
+++ b/drivers/scsi/eata.c
@@ -394,6 +394,8 @@
* the driver sets host->wish_block = TRUE for all ISA boards.
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/version.h>
#ifndef LinuxVersionCode
diff --git a/drivers/scsi/eata_dma.c b/drivers/scsi/eata_dma.c
index 6133d6301..df40d32ad 100644
--- a/drivers/scsi/eata_dma.c
+++ b/drivers/scsi/eata_dma.c
@@ -63,6 +63,8 @@
/* Look in eata_dma.h for configuration and revision information */
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/sched.h>
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c
index 8040de54c..5639aa4c4 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -295,6 +295,8 @@
* phase: Service/parameter/return code special command
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <linux/version.h>
diff --git a/drivers/scsi/ibmmca.c b/drivers/scsi/ibmmca.c
index 43127b530..026669d82 100644
--- a/drivers/scsi/ibmmca.c
+++ b/drivers/scsi/ibmmca.c
@@ -766,12 +766,12 @@ static int device_inquiry(int host_index, int ldn)
scb->enable = IM_REPORT_TSB_ONLY_ON_ERROR | IM_READ_CONTROL | IM_SUPRESS_EXCEPTION_SHORT | IM_RETRY_ENABLE | IM_BYPASS_BUFFER;
last_scsi_command(host_index)[ldn] = IM_DEVICE_INQUIRY_CMD;
last_scsi_type(host_index)[ldn] = IM_SCB;
- scb->sys_buf_adr = virt_to_bus(buf);
+ scb->sys_buf_adr = isa_virt_to_bus(buf);
scb->sys_buf_length = 255; /* maximum bufferlength gives max info */
- scb->tsb_adr = virt_to_bus(tsb);
+ scb->tsb_adr = isa_virt_to_bus(tsb);
/* issue scb to passed ldn, and busy wait for interrupt */
got_interrupt(host_index) = 0;
- issue_cmd (host_index, virt_to_bus(scb), IM_SCB | ldn);
+ issue_cmd (host_index, isa_virt_to_bus(scb), IM_SCB | ldn);
while (!got_interrupt(host_index))
barrier ();
@@ -804,12 +804,12 @@ static int read_capacity(int host_index, int ldn)
scb->enable = IM_REPORT_TSB_ONLY_ON_ERROR | IM_READ_CONTROL | IM_RETRY_ENABLE | IM_BYPASS_BUFFER;
last_scsi_command(host_index)[ldn] = IM_READ_CAPACITY_CMD;
last_scsi_type(host_index)[ldn] = IM_SCB;
- scb->sys_buf_adr = virt_to_bus(buf);
+ scb->sys_buf_adr = isa_virt_to_bus(buf);
scb->sys_buf_length = 8;
- scb->tsb_adr = virt_to_bus(tsb);
+ scb->tsb_adr = isa_virt_to_bus(tsb);
/*issue scb to passed ldn, and busy wait for interrupt */
got_interrupt(host_index) = 0;
- issue_cmd (host_index, virt_to_bus(scb), IM_SCB | ldn);
+ issue_cmd (host_index, isa_virt_to_bus(scb), IM_SCB | ldn);
while (!got_interrupt(host_index))
barrier ();
@@ -842,15 +842,15 @@ static int get_pos_info(int host_index)
scb->enable = IM_READ_CONTROL | IM_REPORT_TSB_ONLY_ON_ERROR | IM_RETRY_ENABLE | IM_BYPASS_BUFFER;
last_scsi_command(host_index)[MAX_LOG_DEV] = IM_GET_POS_INFO_CMD;
last_scsi_type(host_index)[MAX_LOG_DEV] = IM_SCB;
- scb->sys_buf_adr = virt_to_bus(buf);
+ scb->sys_buf_adr = isa_virt_to_bus(buf);
if (special(host_index)==IBM_SCSI2_FW)
scb->sys_buf_length = 256; /* get all info from F/W adapter */
else
scb->sys_buf_length = 18; /* get exactly 18 bytes for other SCSI */
- scb->tsb_adr = virt_to_bus(tsb);
+ scb->tsb_adr = isa_virt_to_bus(tsb);
/*issue scb to ldn=15, and busy wait for interrupt */
got_interrupt(host_index) = 0;
- issue_cmd (host_index, virt_to_bus(scb), IM_SCB | MAX_LOG_DEV);
+ issue_cmd (host_index, isa_virt_to_bus(scb), IM_SCB | MAX_LOG_DEV);
while (!got_interrupt(host_index))
barrier ();
@@ -1992,7 +1992,7 @@ int ibmmca_queuecommand (Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *))
scb = &(ld(host_index)[ldn].scb);
ld(host_index)[ldn].tsb.dev_status = 0;
scb->enable = IM_REPORT_TSB_ONLY_ON_ERROR | IM_RETRY_ENABLE;
- scb->tsb_adr = virt_to_bus(&(ld(host_index)[ldn].tsb));
+ scb->tsb_adr = isa_virt_to_bus(&(ld(host_index)[ldn].tsb));
scsi_cmd = cmd->cmnd[0];
if (cmd->use_sg) {
@@ -2001,14 +2001,14 @@ int ibmmca_queuecommand (Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *))
if (i > 16)
panic ("IBM MCA SCSI: scatter-gather list too long.\n");
while (--i >= 0) {
- ld(host_index)[ldn].sge[i].address = (void *)(virt_to_bus(sl[i].address));
+ ld(host_index)[ldn].sge[i].address = (void *)(isa_page_to_bus(sl[i].page) + sl[i].offset);
ld(host_index)[ldn].sge[i].byte_length = sl[i].length;
}
scb->enable |= IM_POINTER_TO_LIST;
- scb->sys_buf_adr = virt_to_bus(&(ld(host_index)[ldn].sge[0]));
+ scb->sys_buf_adr = isa_virt_to_bus(&(ld(host_index)[ldn].sge[0]));
scb->sys_buf_length = cmd->use_sg * sizeof (struct im_sge);
} else {
- scb->sys_buf_adr = virt_to_bus(cmd->request_buffer);
+ scb->sys_buf_adr = isa_virt_to_bus(cmd->request_buffer);
/* recent Linux midlevel SCSI places 1024 byte for inquiry
* command. Far too much for old PS/2 hardware. */
switch (scsi_cmd) {
@@ -2165,10 +2165,10 @@ int ibmmca_queuecommand (Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *))
PS2_DISK_LED_ON (shpnt->host_no, target);
if (last_scsi_type(host_index)[ldn] == IM_LONG_SCB) {
- issue_cmd (host_index, virt_to_bus(scb), IM_LONG_SCB | ldn);
+ issue_cmd (host_index, isa_virt_to_bus(scb), IM_LONG_SCB | ldn);
IBM_DS(host_index).long_scbs++;
} else {
- issue_cmd (host_index, virt_to_bus(scb), IM_SCB | ldn);
+ issue_cmd (host_index, isa_virt_to_bus(scb), IM_SCB | ldn);
IBM_DS(host_index).scbs++;
}
return 0;
diff --git a/drivers/scsi/ini9100u.c b/drivers/scsi/ini9100u.c
index 17ac962a8..6ceb7fa51 100644
--- a/drivers/scsi/ini9100u.c
+++ b/drivers/scsi/ini9100u.c
@@ -108,6 +108,8 @@
#define CVT_LINUX_VERSION(V,P,S) (V * 65536 + P * 256 + S)
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#ifndef LINUX_VERSION_CODE
#include <linux/version.h>
#endif
diff --git a/drivers/scsi/inia100.c b/drivers/scsi/inia100.c
index 47cf2b4df..ceb86b89b 100644
--- a/drivers/scsi/inia100.c
+++ b/drivers/scsi/inia100.c
@@ -67,6 +67,8 @@
#include <linux/version.h>
#endif
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <linux/module.h>
#include <stdarg.h>
diff --git a/drivers/scsi/ips.c b/drivers/scsi/ips.c
index 04ffa14e6..429beabcb 100644
--- a/drivers/scsi/ips.c
+++ b/drivers/scsi/ips.c
@@ -140,6 +140,8 @@
* ioctlsize - Initial size of the IOCTL buffer
*/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
#include <asm/io.h>
#include <asm/byteorder.h>
#include <asm/page.h>
diff --git a/drivers/scsi/mca_53c9x.c b/drivers/scsi/mca_53c9x.c
index 1ceb651fc..55ccc2d56 100644
--- a/drivers/scsi/mca_53c9x.c
+++ b/drivers/scsi/mca_53c9x.c
@@ -227,7 +227,7 @@ int mca_esp_detect(Scsi_Host_Template *tpnt)
esp->esp_command = (volatile unsigned char*)
cmd_buffer;
- esp->esp_command_dvma = virt_to_bus(cmd_buffer);
+ esp->esp_command_dvma = isa_virt_to_bus(cmd_buffer);
/* SCSI chip speed */
diff --git a/drivers/scsi/osst.c b/drivers/scsi/osst.c
index e959c2fda..289096b16 100644
--- a/drivers/scsi/osst.c
+++ b/drivers/scsi/osst.c
@@ -477,7 +477,8 @@ static int osst_verify_frame(OS_Scsi_Tape * STp, int frame_seq_number, int quiet
if (STp->raw) {
if (STp->buffer->syscall_result) {
for (i=0; i < STp->buffer->sg_segs; i++)
- memset(STp->buffer->sg[i].address, 0, STp->buffer->sg[i].length);
+ memset(page_address(STp->buffer->sg[i].page),
+ 0, STp->buffer->sg[i].length);
strcpy(STp->buffer->b_data, "READ ERROR ON FRAME");
} else
STp->buffer->buffer_bytes = OS_FRAME_SIZE;
@@ -4448,12 +4449,12 @@ static int os_scsi_tape_open(struct inode * inode, struct file * filp)
for (i = 0, b_size = 0;
i < STp->buffer->sg_segs && (b_size + STp->buffer->sg[i].length) <= OS_DATA_SIZE;
b_size += STp->buffer->sg[i++].length);
- STp->buffer->aux = (os_aux_t *) (STp->buffer->sg[i].address + OS_DATA_SIZE - b_size);
+ STp->buffer->aux = (os_aux_t *) (page_address(STp->buffer->sg[i].page) + OS_DATA_SIZE - b_size);
#if DEBUG
printk(OSST_DEB_MSG "osst%d:D: b_data points to %p in segment 0 at %p\n", dev,
- STp->buffer->b_data, STp->buffer->sg[0].address);
+ STp->buffer->b_data, page_address(STp->buffer->sg[0].page));
printk(OSST_DEB_MSG "osst%d:D: AUX points to %p in segment %d at %p\n", dev,
- STp->buffer->aux, i, STp->buffer->sg[i].address);
+ STp->buffer->aux, i, page_address(STp->buffer->sg[i].page));
#endif
} else
STp->buffer->aux = NULL; /* this had better never happen! */
@@ -5021,15 +5022,14 @@ static OSST_buffer * new_tape_buffer( int from_initialization, int need_dma )
b_size *= 2, order++ );
for ( ; b_size >= PAGE_SIZE; order--, b_size /= 2) {
- tb->sg[0].address =
- (unsigned char *)__get_free_pages(priority, order);
- if (tb->sg[0].address != NULL) {
- tb->sg[0].page = NULL;
+ tb->sg[0].page = alloc_pages(priority, order);
+ tb->sg[0].offset = 0;
+ if (tb->sg[0].page != NULL) {
tb->sg[0].length = b_size;
break;
}
}
- if (tb->sg[segs].address == NULL) {
+ if (tb->sg[segs].page == NULL) {
kfree(tb);
tb = NULL;
}
@@ -5041,9 +5041,9 @@ static OSST_buffer * new_tape_buffer( int from_initialization, int need_dma )
for (segs=1, got=tb->sg[0].length;
got < osst_buffer_size && segs < OSST_FIRST_SG; ) {
- tb->sg[segs].address =
- (unsigned char *)__get_free_pages(priority, order);
- if (tb->sg[segs].address == NULL) {
+ tb->sg[segs].page = alloc_pages(priority, order);
+ tb->sg[segs].offset = 0;
+ if (tb->sg[segs].page == NULL) {
if (osst_buffer_size - got <=
(OSST_FIRST_SG - segs) * b_size / 2) {
b_size /= 2; /* Large enough for the rest of the buffers */
@@ -5073,7 +5073,7 @@ static OSST_buffer * new_tape_buffer( int from_initialization, int need_dma )
return NULL;
}
tb->sg_segs = tb->orig_sg_segs = segs;
- tb->b_data = tb->sg[0].address;
+ tb->b_data = page_address(tb->sg[0].page);
#if DEBUG
if (debugging) {
@@ -5118,9 +5118,9 @@ static int enlarge_buffer(OSST_buffer *STbuffer, int new_size, int need_dma)
for (segs=STbuffer->sg_segs, got=STbuffer->buffer_size;
segs < max_segs && got < new_size; ) {
- STbuffer->sg[segs].address =
- (unsigned char *)__get_free_pages(priority, order);
- if (STbuffer->sg[segs].address == NULL) {
+ STbuffer->sg[segs].page = alloc_pages(priority, order);
+ STbuffer->sg[segs].offset = 0;
+ if (STbuffer->sg[segs].page == NULL) {
if (new_size - got <= (max_segs - segs) * b_size / 2) {
b_size /= 2; /* Large enough for the rest of the buffers */
order--;
@@ -5168,7 +5168,7 @@ static void normalize_buffer(OSST_buffer *STbuffer)
b_size < STbuffer->sg[i].length;
b_size *= 2, order++);
- free_pages((unsigned long)STbuffer->sg[i].address, order);
+ __free_pages(STbuffer->sg[i].page, order);
STbuffer->buffer_size -= STbuffer->sg[i].length;
}
#if DEBUG
@@ -5196,7 +5196,7 @@ static int append_to_buffer(const char *ubp, OSST_buffer *st_bp, int do_count)
for ( ; i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length - offset < do_count ?
st_bp->sg[i].length - offset : do_count;
- res = copy_from_user(st_bp->sg[i].address + offset, ubp, cnt);
+ res = copy_from_user(page_address(st_bp->sg[i].page) + offset, ubp, cnt);
if (res)
return (-EFAULT);
do_count -= cnt;
@@ -5229,7 +5229,7 @@ static int from_buffer(OSST_buffer *st_bp, char *ubp, int do_count)
for ( ; i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length - offset < do_count ?
st_bp->sg[i].length - offset : do_count;
- res = copy_to_user(ubp, st_bp->sg[i].address + offset, cnt);
+ res = copy_to_user(ubp, page_address(st_bp->sg[i].page) + offset, cnt);
if (res)
return (-EFAULT);
do_count -= cnt;
@@ -5262,7 +5262,7 @@ static int osst_zero_buffer_tail(OSST_buffer *st_bp)
i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length - offset < do_count ?
st_bp->sg[i].length - offset : do_count ;
- memset(st_bp->sg[i].address + offset, 0, cnt);
+ memset(page_address(st_bp->sg[i].page) + offset, 0, cnt);
do_count -= cnt;
offset = 0;
}
@@ -5282,7 +5282,7 @@ static int osst_copy_to_buffer(OSST_buffer *st_bp, unsigned char *ptr)
for (i = 0; i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length < do_count ?
st_bp->sg[i].length : do_count ;
- memcpy(st_bp->sg[i].address, ptr, cnt);
+ memcpy(page_address(st_bp->sg[i].page), ptr, cnt);
do_count -= cnt;
ptr += cnt;
}
@@ -5303,7 +5303,7 @@ static int osst_copy_from_buffer(OSST_buffer *st_bp, unsigned char *ptr)
for (i = 0; i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length < do_count ?
st_bp->sg[i].length : do_count ;
- memcpy(ptr, st_bp->sg[i].address, cnt);
+ memcpy(ptr, page_address(st_bp->sg[i].page), cnt);
do_count -= cnt;
ptr += cnt;
}
diff --git a/drivers/scsi/pci2220i.c b/drivers/scsi/pci2220i.c
index 1dddd5004..8f5a892c6 100644
--- a/drivers/scsi/pci2220i.c
+++ b/drivers/scsi/pci2220i.c
@@ -34,6 +34,8 @@
*
****************************************************************************/
+#error Convert me to understand page+offset based scatterlists
+
//#define DEBUG 1
#include <linux/module.h>
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c
index deec41610..9a04761cb 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -182,6 +182,7 @@ END OF TERMS AND CONDITIONS
- Initial Beta Release.
*****************************************************************************/
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
#ifdef MODULE
#include <linux/module.h>
diff --git a/drivers/scsi/scsi.h b/drivers/scsi/scsi.h
index b8ad3f4aa..85b975119 100644
--- a/drivers/scsi/scsi.h
+++ b/drivers/scsi/scsi.h
@@ -743,7 +743,6 @@ struct scsi_cmnd {
struct timer_list eh_timeout; /* Used to time out the command. */
void *request_buffer; /* Actual requested buffer */
- void **bounce_buffers; /* Array of bounce buffers when using scatter-gather */
/* These elements define the operation we ultimately want to perform */
unsigned char data_cmnd[MAX_COMMAND_SIZE];
diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c
index fda3c6528..fd7222fbd 100644
--- a/drivers/scsi/scsi_debug.c
+++ b/drivers/scsi/scsi_debug.c
@@ -145,16 +145,15 @@ static char sense_buffer[128] =
static void scsi_dump(Scsi_Cmnd * SCpnt, int flag)
{
int i;
-#if 0
- unsigned char *pnt;
-#endif
unsigned int *lpnt;
struct scatterlist *sgpnt = NULL;
printk("use_sg: %d", SCpnt->use_sg);
if (SCpnt->use_sg) {
sgpnt = (struct scatterlist *) SCpnt->buffer;
for (i = 0; i < SCpnt->use_sg; i++) {
- printk(":%p %d\n", sgpnt[i].address, sgpnt[i].length);
+ printk(":%p %d\n",
+ (page_address(sgpnt[i].page) + sgpnt[i].offset),
+ sgpnt[i].length);
};
} else {
printk("nosg: %p %p %d\n", SCpnt->request.buffer, SCpnt->buffer,
@@ -172,16 +171,6 @@ static void scsi_dump(Scsi_Cmnd * SCpnt, int flag)
printk("\n");
if (flag == 0)
return;
-#if 0
- printk("\n");
- lpnt = (unsigned int *) sgpnt[0].address;
- for (i = 0; i < sizeof(Scsi_Cmnd) / 4 + 1; i++) {
- if ((i & 7) == 0)
- printk("\n");
- printk("%x ", *lpnt++);
- };
- printk("\n");
-#endif
}
int scsi_debug_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
@@ -341,7 +330,8 @@ int scsi_debug_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
if (SCpnt->use_sg) {
sgcount = 0;
sgpnt = (struct scatterlist *) buff;
- buff = sgpnt[sgcount].address;
+ buff = (page_address(sgpnt[sgcount].page) +
+ sgpnt[sgcount].offset);
bufflen = sgpnt[sgcount].length;
bh = SCpnt->request.bh;
};
@@ -432,7 +422,8 @@ int scsi_debug_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
if (nbytes) {
if (!bh)
panic("Too few blocks for linked request.");
- buff = sgpnt[sgcount].address;
+ buff = (page_address(sgpnt[sgcount].page) +
+ sgpnt[sgcount].offset);
bufflen = sgpnt[sgcount].length;
};
}
@@ -461,7 +452,8 @@ int scsi_debug_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
if ((bufflen >> 9) != SCpnt->request.nr_sectors)
panic("Trying to write wrong number of blocks\n");
sgpnt = (struct scatterlist *) buff;
- buff = sgpnt[sgcount].address;
+ buff = (page_address(sgpnt[sgcount].page) +
+ sgpnt[sgcount].offset);
};
#if 0
if (block != *((unsigned long *) (buff + 60))) {
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index 317f21858..4d4a6abc4 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -452,18 +452,8 @@ static void scsi_release_buffers(Scsi_Cmnd * SCpnt)
*/
if (SCpnt->use_sg) {
struct scatterlist *sgpnt;
- void **bbpnt;
- int i;
sgpnt = (struct scatterlist *) SCpnt->request_buffer;
- bbpnt = SCpnt->bounce_buffers;
-
- if (bbpnt) {
- for (i = 0; i < SCpnt->use_sg; i++) {
- if (bbpnt[i])
- kfree(sgpnt[i].address);
- }
- }
scsi_free_sgtable(SCpnt->request_buffer, SCpnt->sglist_len);
} else {
if (SCpnt->request_buffer != req->buffer)
@@ -527,24 +517,8 @@ void scsi_io_completion(Scsi_Cmnd * SCpnt, int good_sectors,
*/
if (SCpnt->use_sg) {
struct scatterlist *sgpnt;
- void **bbpnt;
- int i;
sgpnt = (struct scatterlist *) SCpnt->buffer;
- bbpnt = SCpnt->bounce_buffers;
-
- if (bbpnt) {
- for (i = 0; i < SCpnt->use_sg; i++) {
- if (bbpnt[i]) {
- if (rq_data_dir(req) == READ) {
- memcpy(bbpnt[i],
- sgpnt[i].address,
- sgpnt[i].length);
- }
- kfree(sgpnt[i].address);
- }
- }
- }
scsi_free_sgtable(SCpnt->buffer, SCpnt->sglist_len);
} else {
if (SCpnt->buffer != req->buffer) {
diff --git a/drivers/scsi/scsiiom.c b/drivers/scsi/scsiiom.c
index 5d0520234..886aa6e5c 100644
--- a/drivers/scsi/scsiiom.c
+++ b/drivers/scsi/scsiiom.c
@@ -6,6 +6,8 @@
***********************************************************************/
/* $Id: scsiiom.c,v 2.55.2.17 2000/12/20 00:39:37 garloff Exp $ */
+#error I am non-portable, please convert me to Documentation/DMA-mapping.txt
+
static void __inline__
dc390_freetag (PDCB pDCB, PSRB pSRB)
{
diff --git a/drivers/scsi/seagate.c b/drivers/scsi/seagate.c
index 2cf059b14..055d51c9a 100644
--- a/drivers/scsi/seagate.c
+++ b/drivers/scsi/seagate.c
@@ -1060,8 +1060,9 @@ static int internal_command (unsigned char target, unsigned char lun,
hostno, nobuffs);
for (i = 0; i < nobuffs; ++i)
printk
- ("scsi%d : buffer %d address = %08x length = %d\n",
- hostno, i, buffer[i].address,
+ ("scsi%d : buffer %d address = %p length = %d\n",
+ hostno, i,
+ page_address(buffer[i].page) + buffer[i].offset,
buffer[i].length);
}
#endif
diff --git a/drivers/scsi/sgiwd93.c b/drivers/scsi/sgiwd93.c
index a7b441d38..1ac2fcf1f 100644
--- a/drivers/scsi/sgiwd93.c
+++ b/drivers/scsi/sgiwd93.c
@@ -119,9 +119,13 @@ static int dma_setup(Scsi_Cmnd *cmd, int datainp)
#endif
for(i = 0; i <= cmd->SCp.buffers_residual; i++) {
#ifdef DEBUG_DMA
- printk("[%p,%d]", slp[i].address, slp[i].length);
+ printk("[%p,%d]",
+ page_address(slp[i].page) + slp[i].offset,
+ slp[i].length);
#endif
- fill_hpc_entries (&hcp, slp[i].address, slp[i].length);
+ fill_hpc_entries (&hcp,
+ page_address(slp[i].page) + slp[i].offset,
+ slp[i].length);
totlen += slp[i].length;
}
#ifdef DEBUG_DMA
@@ -226,7 +230,7 @@ static void dma_stop(struct Scsi_Host *instance, Scsi_Cmnd *SCpnt,
}
SCpnt->SCp.buffer = &slp[i];
SCpnt->SCp.buffers_residual = SCpnt->SCp.buffers_residual - i;
- SCpnt->SCp.ptr = (char *) slp[i].address;
+ SCpnt->SCp.ptr = (char *) page_address(slp[i].page) + slp[i].offset;
SCpnt->SCp.this_residual = slp[i].length;
}
#ifdef DEBUG_DMA
diff --git a/drivers/scsi/sim710.c b/drivers/scsi/sim710.c
index 085e97d6c..142b03a84 100644
--- a/drivers/scsi/sim710.c
+++ b/drivers/scsi/sim710.c
@@ -572,11 +572,11 @@ sim710_driver_init (struct Scsi_Host *host)
hostdata->running = NULL;
memcpy (hostdata->script, SCRIPT, sizeof(SCRIPT));
for (i = 0; i < PATCHES; i++)
- hostdata->script[LABELPATCHES[i]] += virt_to_bus(hostdata->script);
+ hostdata->script[LABELPATCHES[i]] += isa_virt_to_bus(hostdata->script);
patch_abs_32 (hostdata->script, 0, reselected_identify,
- virt_to_bus((void *)&(hostdata->reselected_identify)));
+ isa_virt_to_bus((void *)&(hostdata->reselected_identify)));
patch_abs_32 (hostdata->script, 0, msgin_buf,
- virt_to_bus((void *)&(hostdata->msgin_buf[0])));
+ isa_virt_to_bus((void *)&(hostdata->msgin_buf[0])));
hostdata->state = STATE_INITIALISED;
hostdata->negotiate = 0xff;
}
@@ -670,7 +670,7 @@ handle_idd (struct Scsi_Host * host, Scsi_Cmnd * cmd)
struct sim710_target *targdata = hostdata->target + cmd->target;
u32 resume_offset = 0, index;
- index = (u32)((u32 *)(bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script);
+ index = (u32)((u32 *)(isa_bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script);
switch (index) {
case Ent_wait_disc_complete/4 + 2:
@@ -717,7 +717,7 @@ handle_phase_mismatch (struct Scsi_Host * host, Scsi_Cmnd * cmd)
unsigned char sbcl;
sbcl = NCR_read8(SBCL_REG) & SBCL_PHASE_MASK;
- index = (u32)((u32 *)(bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script);
+ index = (u32)((u32 *)(isa_bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script);
DEB(DEB_PMM, printk("scsi%d: Phase mismatch, phase %s (%x) at script[0x%x]\n",
host->host_no, sbcl_to_phase(sbcl), sbcl, index));
@@ -754,7 +754,7 @@ handle_phase_mismatch (struct Scsi_Host * host, Scsi_Cmnd * cmd)
sg_id = (index - Ent_patch_input_data/4 - 4) / 2;
targdata->data_in_jump = hostdata->script[Ent_patch_input_data/4+1] =
- virt_to_bus(hostdata->script + Ent_patch_input_data/4 + sg_id * 2 + 2);
+ isa_virt_to_bus(hostdata->script + Ent_patch_input_data/4 + sg_id * 2 + 2);
olen = targdata->dsa[DSA_DATAIN + sg_id * 2];
oaddr = targdata->dsa[DSA_DATAIN + sg_id * 2 + 1];
residual = datapath_residual (host);
@@ -783,7 +783,7 @@ handle_phase_mismatch (struct Scsi_Host * host, Scsi_Cmnd * cmd)
sg_id = (index - Ent_patch_output_data/4 - 4) / 2;
targdata->data_out_jump = hostdata->script[Ent_patch_output_data/4+1] =
- virt_to_bus(hostdata->script + Ent_patch_output_data/4 + sg_id * 2 + 2);
+ isa_virt_to_bus(hostdata->script + Ent_patch_output_data/4 + sg_id * 2 + 2);
olen = targdata->dsa[DSA_DATAOUT + sg_id * 2];
oaddr = targdata->dsa[DSA_DATAOUT + sg_id * 2 + 1];
residual = datapath_residual (host);
@@ -860,7 +860,7 @@ handle_script_int(struct Scsi_Host * host, Scsi_Cmnd * cmd)
case A_int_reselected:
hostdata->script[Ent_patch_output_data/4+1] = targdata->data_out_jump;
hostdata->script[Ent_patch_input_data/4+1] = targdata->data_in_jump;
- NCR_write32(DSA_REG, virt_to_bus(targdata->dsa));
+ NCR_write32(DSA_REG, isa_virt_to_bus(targdata->dsa));
resume_offset = targdata->resume_offset;
break;
case A_int_data_bad_phase:
@@ -943,7 +943,7 @@ sim710_intr_handle(int irq, void *dev_id, struct pt_regs *regs)
DEB(DEB_INTS, printk("scsi%d: Int %d, istat %02x, sstat0 %02x "
"dstat %02x, dsp [%04x], scratch %02x\n",
host->host_no, sim710_intrs, istat, sstat0, dstat,
- (u32 *)(bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script,
+ (u32 *)(isa_bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script,
NCR_read32(SCRATCH_REG)));
if ((dstat & DSTAT_SIR) && dsps == A_int_reselected) {
/* Reselected. Identify the target from LCRC_REG, and
@@ -990,7 +990,7 @@ sim710_intr_handle(int irq, void *dev_id, struct pt_regs *regs)
printk("scsi%d: Int %d, istat %02x, sstat0 %02x "
"dstat %02x, dsp [%04x], scratch %02x, dsps %08x\n",
host->host_no, sim710_intrs, istat, sstat0, dstat,
- (u32 *)(bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script,
+ (u32 *)(isa_bus_to_virt(NCR_read32(DSP_REG))) - hostdata->script,
NCR_read32(SCRATCH_REG), dsps);
/* resume_offset is zero, which will cause a host reset */
}
@@ -1043,7 +1043,7 @@ sim710_intr_handle(int irq, void *dev_id, struct pt_regs *regs)
#ifdef DEBUG_LIMIT_INTS
if (sim710_intrs < DEBUG_LIMIT_INTS)
#endif
- NCR_write32(DSP_REG, virt_to_bus(hostdata->script+resume_offset/4));
+ NCR_write32(DSP_REG, isa_virt_to_bus(hostdata->script+resume_offset/4));
if (resume_offset == Ent_reselect)
run_process_issue_queue(hostdata);
}
@@ -1121,48 +1121,47 @@ run_command (struct sim710_hostdata *hostdata, Scsi_Cmnd *cmd)
targdata->dsa_status[0] = 0xff;
targdata->dsa[DSA_SELECT] = (1 << cmd->target) << 16;
- targdata->dsa[DSA_MSGOUT+1] = virt_to_bus(targdata->dsa_msgout);
+ targdata->dsa[DSA_MSGOUT+1] = isa_virt_to_bus(targdata->dsa_msgout);
targdata->dsa[DSA_CMND] = cmd->cmd_len;
- targdata->dsa[DSA_CMND+1] = virt_to_bus(targdata->dsa_cdb);
+ targdata->dsa[DSA_CMND+1] = isa_virt_to_bus(targdata->dsa_cdb);
targdata->dsa[DSA_STATUS] = 1;
- targdata->dsa[DSA_STATUS+1] = virt_to_bus(targdata->dsa_status);
+ targdata->dsa[DSA_STATUS+1] = isa_virt_to_bus(targdata->dsa_status);
targdata->dsa[DSA_MSGIN] = 1;
- targdata->dsa[DSA_MSGIN+1] = virt_to_bus(targdata->dsa_msgin);
+ targdata->dsa[DSA_MSGIN+1] = isa_virt_to_bus(targdata->dsa_msgin);
sg_start = (MAX_SG - (cmd->use_sg ? cmd->use_sg : 1)) * 2;
dip = targdata->dsa + DSA_DATAIN + sg_start;
dop = targdata->dsa + DSA_DATAOUT + sg_start;
for (i = 0; cmd->use_sg ? (i < cmd->use_sg) : !i; i++) {
- u32 vbuf = cmd->use_sg ?
- (u32)(((struct scatterlist *)cmd->buffer)[i].address) :
- (u32)(cmd->request_buffer);
- u32 bbuf = virt_to_bus((void *)vbuf);
- u32 cnt = cmd->use_sg ?
- ((struct scatterlist *)cmd->buffer)[i].length :
- cmd->request_bufflen;
+ struct scatterlist *sgl = &((struct scatterlist *)cmd->buffer)[i];
+ void *vbuf = cmd->use_sg ?
+ (page_address(sgl->page) + sgl->offset) :
+ (cmd->request_buffer);
+ u32 bbuf = isa_virt_to_bus(vbuf);
+ u32 cnt = cmd->use_sg ? sgl->length : cmd->request_bufflen;
if (datain) {
#ifdef CONFIG_TP34V_SCSI
- cache_clear(virt_to_phys((void *)vbuf), cnt);
+ cache_clear(virt_to_phys(vbuf, cnt);
#endif
*dip++ = cnt;
*dip++ = bbuf;
}
if (dataout) {
#ifdef CONFIG_TP34V_SCSI
- cache_push(virt_to_phys((void *)vbuf), cnt);
+ cache_push(virt_to_phys(vbuf, cnt);
#endif
*dop++ = cnt;
*dop++ = bbuf;
}
}
targdata->data_out_jump = hostdata->script[Ent_patch_output_data/4+1] =
- virt_to_bus(hostdata->script + Ent_patch_output_data/4 + sg_start + 2);
+ isa_virt_to_bus(hostdata->script + Ent_patch_output_data/4 + sg_start + 2);
targdata->data_in_jump = hostdata->script[Ent_patch_input_data/4+1] =
- virt_to_bus(hostdata->script + Ent_patch_input_data/4 + sg_start + 2);
+ isa_virt_to_bus(hostdata->script + Ent_patch_input_data/4 + sg_start + 2);
- for (i = 0, dsa = virt_to_bus(targdata->dsa); i < 4; i++) {
+ for (i = 0, dsa = isa_virt_to_bus(targdata->dsa); i < 4; i++) {
u32 v = hostdata->script[Ent_patch_new_dsa/4 + i * 2];
v &= ~0x0000ff00;
@@ -1507,7 +1506,7 @@ sim710_detect(Scsi_Host_Template * tpnt)
#endif
chips++;
}
- NCR_write32(DSP_REG, virt_to_bus(hostdata->script+Ent_reselect/4));
+ NCR_write32(DSP_REG, isa_virt_to_bus(hostdata->script+Ent_reselect/4));
hostdata->state = STATE_IDLE;
}
return chips;
@@ -1561,7 +1560,7 @@ full_reset(struct Scsi_Host * host)
ncr_halt(host);
printk("scsi%d: dsp = %08x (script[0x%04x]), scratch = %08x\n",
host->host_no, NCR_read32(DSP_REG),
- ((u32)bus_to_virt(NCR_read32(DSP_REG)) - (u32)hostdata->script)/4,
+ ((u32)isa_bus_to_virt(NCR_read32(DSP_REG)) - (u32)hostdata->script)/4,
NCR_read32(SCRATCH_REG));
for (target = 0; target < 7; target++) {
@@ -1577,7 +1576,7 @@ full_reset(struct Scsi_Host * host)
sim710_soft_reset(host);
sim710_driver_init(host);
- NCR_write32(DSP_REG, virt_to_bus(hostdata->script+Ent_reselect/4));
+ NCR_write32(DSP_REG, isa_virt_to_bus(hostdata->script+Ent_reselect/4));
hostdata->state = STATE_IDLE;
run_process_issue_queue(hostdata);
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index 51eed48a4..ce4330c8e 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3314,15 +3314,14 @@ static ST_buffer *
order++, b_size *= 2)
;
for ( ; b_size >= PAGE_SIZE; order--, b_size /= 2) {
- tb->sg[0].address =
- (unsigned char *) __get_free_pages(priority, order);
- if (tb->sg[0].address != NULL) {
+ tb->sg[0].page = alloc_pages(priority, order);
+ tb->sg[0].offset = 0;
+ if (tb->sg[0].page != NULL) {
tb->sg[0].length = b_size;
break;
}
}
- tb->sg[0].page = NULL;
- if (tb->sg[segs].address == NULL) {
+ if (tb->sg[segs].page == NULL) {
kfree(tb);
tb = NULL;
} else { /* Got something, continue */
@@ -3334,10 +3333,9 @@ static ST_buffer *
;
for (segs = 1, got = tb->sg[0].length;
got < st_buffer_size && segs < ST_FIRST_SG;) {
- tb->sg[segs].address =
- (unsigned char *) __get_free_pages(priority,
- order);
- if (tb->sg[segs].address == NULL) {
+ tb->sg[segs].page = alloc_pages(priority, order);
+ tb->sg[segs].offset = 0;
+ if (tb->sg[segs].page == NULL) {
if (st_buffer_size - got <=
(ST_FIRST_SG - segs) * b_size / 2) {
b_size /= 2; /* Large enough for the
@@ -3353,7 +3351,6 @@ static ST_buffer *
tb = NULL;
break;
}
- tb->sg[segs].page = NULL;
tb->sg[segs].length = b_size;
got += b_size;
segs++;
@@ -3367,7 +3364,7 @@ static ST_buffer *
return NULL;
}
tb->sg_segs = tb->orig_sg_segs = segs;
- tb->b_data = tb->sg[0].address;
+ tb->b_data = page_address(tb->sg[0].page);
DEBC(printk(ST_DEB_MSG
"st: Allocated tape buffer %d (%d bytes, %d segments, dma: %d, a: %p).\n",
@@ -3413,9 +3410,9 @@ static int enlarge_buffer(ST_buffer * STbuffer, int new_size, int need_dma)
for (segs = STbuffer->sg_segs, got = STbuffer->buffer_size;
segs < max_segs && got < new_size;) {
- STbuffer->sg[segs].address =
- (unsigned char *) __get_free_pages(priority, order);
- if (STbuffer->sg[segs].address == NULL) {
+ STbuffer->sg[segs].page = alloc_pages(priority, order);
+ STbuffer->sg[segs].offset = 0;
+ if (STbuffer->sg[segs].page == NULL) {
if (new_size - got <= (max_segs - segs) * b_size / 2) {
b_size /= 2; /* Large enough for the rest of the buffers */
order--;
@@ -3427,7 +3424,6 @@ static int enlarge_buffer(ST_buffer * STbuffer, int new_size, int need_dma)
normalize_buffer(STbuffer);
return FALSE;
}
- STbuffer->sg[segs].page = NULL;
STbuffer->sg[segs].length = b_size;
STbuffer->sg_segs += 1;
got += b_size;
@@ -3451,13 +3447,13 @@ static void normalize_buffer(ST_buffer * STbuffer)
for (b_size=PAGE_SIZE, order=0; b_size < STbuffer->sg[i].length;
order++, b_size *= 2)
; /* empty */
- free_pages((unsigned long)(STbuffer->sg[i].address), order);
+ __free_pages(STbuffer->sg[i].page, order);
STbuffer->buffer_size -= STbuffer->sg[i].length;
}
DEB(
if (debugging && STbuffer->orig_sg_segs < STbuffer->sg_segs)
printk(ST_DEB_MSG "st: Buffer at %p normalized to %d bytes (segs %d).\n",
- STbuffer->sg[0].address, STbuffer->buffer_size,
+ page_address(STbuffer->sg[0].page), STbuffer->buffer_size,
STbuffer->sg_segs);
) /* end DEB */
STbuffer->sg_segs = STbuffer->orig_sg_segs;
@@ -3480,7 +3476,7 @@ static int append_to_buffer(const char *ubp, ST_buffer * st_bp, int do_count)
for (; i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length - offset < do_count ?
st_bp->sg[i].length - offset : do_count;
- res = copy_from_user(st_bp->sg[i].address + offset, ubp, cnt);
+ res = copy_from_user(page_address(st_bp->sg[i].page) + offset, ubp, cnt);
if (res)
return (-EFAULT);
do_count -= cnt;
@@ -3513,7 +3509,7 @@ static int from_buffer(ST_buffer * st_bp, char *ubp, int do_count)
for (; i < st_bp->sg_segs && do_count > 0; i++) {
cnt = st_bp->sg[i].length - offset < do_count ?
st_bp->sg[i].length - offset : do_count;
- res = copy_to_user(ubp, st_bp->sg[i].address + offset, cnt);
+ res = copy_to_user(ubp, page_address(st_bp->sg[i].page) + offset, cnt);
if (res)
return (-EFAULT);
do_count -= cnt;
diff --git a/drivers/scsi/u14-34f.c b/drivers/scsi/u14-34f.c
index adacf2fd4..bc30c95b5 100644
--- a/drivers/scsi/u14-34f.c
+++ b/drivers/scsi/u14-34f.c
@@ -550,8 +550,8 @@ static unsigned long io_port[] = {
#endif
#define DEV2H(x) H2DEV(x)
-#define V2DEV(addr) ((addr) ? H2DEV(virt_to_bus((void *)addr)) : 0)
-#define DEV2V(addr) ((addr) ? DEV2H(bus_to_virt((unsigned long)addr)) : 0)
+#define V2DEV(addr) ((addr) ? H2DEV(isa_virt_to_bus((void *)addr)) : 0)
+#define DEV2V(addr) ((addr) ? DEV2H(isa_bus_to_virt((unsigned long)addr)) : 0)
static void do_interrupt_handler(int, void *, struct pt_regs *);
static void flush_dev(Scsi_Device *, unsigned long, unsigned int, unsigned int);
@@ -985,7 +985,7 @@ static inline void build_sg_list(struct mscp *cpp, Scsi_Cmnd *SCpnt) {
sgpnt = (struct scatterlist *) SCpnt->request_buffer;
for (k = 0; k < SCpnt->use_sg; k++) {
- cpp->sglist[k].address = V2DEV(sgpnt[k].address);
+ cpp->sglist[k].address = V2DEV(page_address(sgpnt[k].page)) + sgpnt[k].offset;
cpp->sglist[k].num_bytes = H2DEV(sgpnt[k].length);
data_len += sgpnt[k].length;
}
diff --git a/drivers/scsi/ultrastor.c b/drivers/scsi/ultrastor.c
index a0104d6fe..b2ba4776e 100644
--- a/drivers/scsi/ultrastor.c
+++ b/drivers/scsi/ultrastor.c
@@ -661,12 +661,12 @@ static inline void build_sg_list(register struct mscp *mscp, Scsi_Cmnd *SCpnt)
sl = (struct scatterlist *) SCpnt->request_buffer;
max = SCpnt->use_sg;
for (i = 0; i < max; i++) {
- mscp->sglist[i].address = virt_to_bus(sl[i].address);
+ mscp->sglist[i].address = isa_page_to_bus(sl[i].page) + sl[i].offset;
mscp->sglist[i].num_bytes = sl[i].length;
transfer_length += sl[i].length;
}
mscp->number_of_sg_list = max;
- mscp->transfer_data = virt_to_bus(mscp->sglist);
+ mscp->transfer_data = isa_virt_to_bus(mscp->sglist);
/* ??? May not be necessary. Docs are unclear as to whether transfer
length field is ignored or whether it should be set to the total
number of bytes of the transfer. */
@@ -722,7 +722,7 @@ int ultrastor_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
} else {
/* Unset scatter/gather flag in SCSI command packet */
my_mscp->sg = FALSE;
- my_mscp->transfer_data = virt_to_bus(SCpnt->request_buffer);
+ my_mscp->transfer_data = isa_virt_to_bus(SCpnt->request_buffer);
my_mscp->transfer_data_length = SCpnt->request_bufflen;
}
my_mscp->command_link = 0; /*???*/
@@ -732,7 +732,7 @@ int ultrastor_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
memcpy(my_mscp->scsi_cdbs, SCpnt->cmnd, my_mscp->length_of_scsi_cdbs);
my_mscp->adapter_status = 0;
my_mscp->target_status = 0;
- my_mscp->sense_data = virt_to_bus(&SCpnt->sense_buffer);
+ my_mscp->sense_data = isa_virt_to_bus(&SCpnt->sense_buffer);
my_mscp->done = done;
my_mscp->SCint = SCpnt;
SCpnt->host_scribble = (unsigned char *)my_mscp;
@@ -790,7 +790,7 @@ int ultrastor_queuecommand(Scsi_Cmnd *SCpnt, void (*done)(Scsi_Cmnd *))
}
/* Store pointer in OGM address bytes */
- outl(virt_to_bus(my_mscp), config.ogm_address);
+ outl(isa_virt_to_bus(my_mscp), config.ogm_address);
/* Issue OGM interrupt */
if (config.slot) {
@@ -866,9 +866,9 @@ int ultrastor_abort(Scsi_Cmnd *SCpnt)
out[28 + i * 3] = '\n';
out[29 + i * 3] = 0;
ogm_status = inb(port0 + 22);
- ogm_addr = (unsigned int)bus_to_virt(inl(port0 + 23));
+ ogm_addr = (unsigned int)isa_bus_to_virt(inl(port0 + 23));
icm_status = inb(port0 + 27);
- icm_addr = (unsigned int)bus_to_virt(inl(port0 + 28));
+ icm_addr = (unsigned int)isa_bus_to_virt(inl(port0 + 28));
restore_flags(flags);
}
@@ -904,7 +904,7 @@ int ultrastor_abort(Scsi_Cmnd *SCpnt)
save_flags(flags);
cli();
- outl(virt_to_bus(&config.mscp[mscp_index]), config.ogm_address);
+ outl(isa_virt_to_bus(&config.mscp[mscp_index]), config.ogm_address);
inb(0xc80); /* delay */
outb(0x80, config.ogm_address - 1);
outb(0x2, LCL_DOORBELL_INTR(config.doorbell_address));
@@ -1037,7 +1037,7 @@ static void ultrastor_interrupt(int irq, void *dev_id, struct pt_regs *regs)
#if ULTRASTOR_MAX_CMDS == 1
mscp = &config.mscp[0];
#else
- mscp = (struct mscp *)bus_to_virt(inl(config.icm_address));
+ mscp = (struct mscp *)isa_bus_to_virt(inl(config.icm_address));
mscp_index = mscp - config.mscp;
if (mscp_index >= ULTRASTOR_MAX_CMDS) {
printk("Ux4F interrupt: bad MSCP address %x\n", (unsigned int) mscp);
diff --git a/drivers/scsi/wd7000.c b/drivers/scsi/wd7000.c
index e8c91abe0..7ecb62ce1 100644
--- a/drivers/scsi/wd7000.c
+++ b/drivers/scsi/wd7000.c
@@ -1110,7 +1110,7 @@ void wd7000_intr_handle (int irq, void *dev_id, struct pt_regs *regs)
return;
}
/* Aaaargh! (Zaga) */
- scb = bus_to_virt(scsi2int ((unchar *) icmbs[icmb].scbptr));
+ scb = isa_bus_to_virt(scsi2int ((unchar *) icmbs[icmb].scbptr));
icmbs[icmb].status = 0;
if (!(scb->op & ICB_OP_MASK)) { /* an SCB is done */
SCpnt = scb->SCpnt;
@@ -1189,13 +1189,14 @@ int wd7000_queuecommand (Scsi_Cmnd *SCpnt, void (*done) (Scsi_Cmnd *))
any2scsi (scb->maxlen, SCpnt->use_sg * sizeof (Sgb));
for (i = 0; i < SCpnt->use_sg; i++) {
- any2scsi (sgb[i].ptr, (int) sg[i].address);
+ any2scsi (sgb[i].ptr,
+ isa_page_to_bus(sg[i].page) + sg[i].offset);
any2scsi (sgb[i].len, sg[i].length);
}
}
else {
scb->op = 0;
- any2scsi (scb->dataptr, (int) SCpnt->request_buffer);
+ any2scsi (scb->dataptr, isa_virt_to_bus(SCpnt->request_buffer));
any2scsi (scb->maxlen, SCpnt->request_bufflen);
}
diff --git a/drivers/usb/usb-uhci-debug.h b/drivers/usb/usb-uhci-debug.h
index c10ac3146..0fa124d8b 100644
--- a/drivers/usb/usb-uhci-debug.h
+++ b/drivers/usb/usb-uhci-debug.h
@@ -78,60 +78,6 @@ static void uhci_show_td (puhci_desc_t td)
#endif
#ifdef DEBUG
-static void __attribute__((__unused__)) uhci_show_td_queue (puhci_desc_t td)
-{
- //dbg("uhci_show_td_queue %p (%08lX):", td, td->dma_addr);
-#if 1
- return;
-#else
- while (1) {
- uhci_show_td (td);
- if (td->hw.td.link & UHCI_PTR_TERM)
- break;
- if (td != bus_to_virt (td->hw.td.link & ~UHCI_PTR_BITS))
- td = bus_to_virt (td->hw.td.link & ~UHCI_PTR_BITS);
- else {
- dbg("td points to itself!");
- break;
- }
- }
-#endif
-}
-
-static void __attribute__((__unused__)) uhci_show_queue (puhci_desc_t qh)
-{
-#if 0
- uhci_desc_t *start_qh=qh;
-#endif
-
- dbg("uhci_show_queue %p:", qh);
-#if 1
- return;
-#else
- while (1) {
- uhci_show_qh (qh);
-
- if (!(qh->hw.qh.element & UHCI_PTR_TERM))
- uhci_show_td_queue (bus_to_virt (qh->hw.qh.element & ~UHCI_PTR_BITS));
-
- if (qh->hw.qh.head & UHCI_PTR_TERM)
- break;
-
- if (qh != bus_to_virt (qh->hw.qh.head & ~UHCI_PTR_BITS))
- qh = bus_to_virt (qh->hw.qh.head & ~UHCI_PTR_BITS);
- else {
- dbg("qh points to itself!");
- break;
- }
-
- if (qh==start_qh) { // avoid loop
- dbg("Loop detect");
- break;
- }
- }
-#endif
-}
-
static void __attribute__((__unused__)) uhci_show_sc (int port, unsigned short status)
{
dbg(" stat%d = %04x %s%s%s%s%s%s%s%s",
diff --git a/drivers/usb/usb-uhci.c b/drivers/usb/usb-uhci.c
index d753af20f..0dc842716 100644
--- a/drivers/usb/usb-uhci.c
+++ b/drivers/usb/usb-uhci.c
@@ -681,7 +681,6 @@ _static int init_skel (uhci_t *s)
insert_td_horizontal (s, s->int_chain[5], td);
mb();
- //uhci_show_queue(s->control_chain);
dbg("init_skel exit");
return 0;
@@ -793,7 +792,6 @@ _static int uhci_submit_control_urb (urb_t *urb)
qh->hw.qh.element &= cpu_to_le32(~UHCI_PTR_TERM);
- //uhci_show_queue(qh);
/* Start it up... put low speed first */
if (urb->pipe & TD_CTRL_LS)
insert_qh (s, s->control_chain, qh, 0);
@@ -939,7 +937,6 @@ _static int uhci_submit_bulk_urb (urb_t *urb, urb_t *bulk_urb)
insert_qh (s, s->chain_end, qh, 0);
}
- //uhci_show_queue(s->bulk_chain);
//dbg("uhci_submit_bulk_urb: exit\n");
return 0;
}
diff --git a/drivers/usb/usb-uhci.h b/drivers/usb/usb-uhci.h
index 5850f7f28..54499ec6a 100644
--- a/drivers/usb/usb-uhci.h
+++ b/drivers/usb/usb-uhci.h
@@ -100,7 +100,6 @@ static __inline__ void uhci_wait_ms(unsigned int ms)
#define uhci_status_bits(ctrl_sts) (ctrl_sts & 0xFE0000)
#define uhci_actual_length(ctrl_sts) ((ctrl_sts + 1) & TD_CTRL_ACTLEN_MASK) /* 1-based */
-#define uhci_ptr_to_virt(x) bus_to_virt(x & ~UHCI_PTR_BITS)
/*
* for TD <flags>:
diff --git a/drivers/video/matrox/matroxfb_base.h b/drivers/video/matrox/matroxfb_base.h
index 75323dcab..d4d2df71f 100644
--- a/drivers/video/matrox/matroxfb_base.h
+++ b/drivers/video/matrox/matroxfb_base.h
@@ -124,10 +124,6 @@
#endif
#endif
-#ifdef __sparc__
-#error "Sorry, I have no idea how to do this on sparc... There is mapioaddr... With bus_type parameter..."
-#endif
-
#if defined(__m68k__)
#define MAP_BUSTOVIRT
#else
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c
index 62897efab..81ad28b98 100644
--- a/drivers/video/vesafb.c
+++ b/drivers/video/vesafb.c
@@ -550,7 +550,7 @@ int __init vesafb_init(void)
ypan = pmi_setpal = 0; /* not available or some DOS TSR ... */
if (ypan || pmi_setpal) {
- pmi_base = (unsigned short*)bus_to_virt(((unsigned long)screen_info.vesapm_seg << 4) + screen_info.vesapm_off);
+ pmi_base = (unsigned short*)isa_bus_to_virt(((unsigned long)screen_info.vesapm_seg << 4) + screen_info.vesapm_off);
pmi_start = (void*)((char*)pmi_base + pmi_base[1]);
pmi_pal = (void*)((char*)pmi_base + pmi_base[2]);
printk(KERN_INFO "vesafb: pmi: set display start = %p, set palette = %p\n",pmi_start,pmi_pal);
diff --git a/include/asm-alpha/scatterlist.h b/include/asm-alpha/scatterlist.h
index 9745d69ba..6afb8bd3a 100644
--- a/include/asm-alpha/scatterlist.h
+++ b/include/asm-alpha/scatterlist.h
@@ -4,11 +4,6 @@
#include <asm/page.h>
struct scatterlist {
- /* This will disappear in 2.5.x */
- char *address;
-
- /* These two are only valid if ADDRESS member of this
- struct is NULL. */
struct page *page;
unsigned int offset;
diff --git a/include/asm-arm/scatterlist.h b/include/asm-arm/scatterlist.h
index ea8d1ab4d..8b3b67099 100644
--- a/include/asm-arm/scatterlist.h
+++ b/include/asm-arm/scatterlist.h
@@ -4,7 +4,8 @@
#include <asm/types.h>
struct scatterlist {
- char *address; /* virtual address */
+ struct page *page;
+ unsigned int offset;
dma_addr_t dma_address; /* dma address */
unsigned int length; /* length */
};
diff --git a/include/asm-i386/floppy.h b/include/asm-i386/floppy.h
index 0317b2f88..72f791154 100644
--- a/include/asm-i386/floppy.h
+++ b/include/asm-i386/floppy.h
@@ -216,7 +216,7 @@ static void _fd_chose_dma_mode(char *addr, unsigned long size)
{
if(can_use_virtual_dma == 2) {
if((unsigned int) addr >= (unsigned int) high_memory ||
- virt_to_bus(addr) >= 0x1000000 ||
+ isa_virt_to_bus(addr) >= 0x1000000 ||
_CROSS_64KB(addr, size, 0))
use_virtual_dma = 1;
else
@@ -252,7 +252,7 @@ static int hard_dma_setup(char *addr, unsigned long size, int mode, int io)
doing_pdma = 0;
clear_dma_ff(FLOPPY_DMA);
set_dma_mode(FLOPPY_DMA,mode);
- set_dma_addr(FLOPPY_DMA,virt_to_bus(addr));
+ set_dma_addr(FLOPPY_DMA,isa_virt_to_bus(addr));
set_dma_count(FLOPPY_DMA,size);
enable_dma(FLOPPY_DMA);
return 0;
diff --git a/include/asm-i386/io.h b/include/asm-i386/io.h
index a140326a5..d443efbd9 100644
--- a/include/asm-i386/io.h
+++ b/include/asm-i386/io.h
@@ -95,11 +95,20 @@ static inline void * ioremap_nocache (unsigned long offset, unsigned long size)
extern void iounmap(void *addr);
/*
- * IO bus memory addresses are also 1:1 with the physical address
+ * ISA I/O bus memory addresses are 1:1 with the physical address.
*/
-#define virt_to_bus virt_to_phys
-#define bus_to_virt phys_to_virt
-#define page_to_bus page_to_phys
+#define isa_virt_to_bus virt_to_phys
+#define isa_page_to_bus page_to_phys
+#define isa_bus_to_virt phys_to_virt
+
+/*
+ * However PCI ones are not necessarily 1:1 and therefore these interfaces
+ * are forbidden in portable PCI drivers.
+ */
+extern unsigned long virt_to_bus_not_defined_use_pci_map(volatile void *addr);
+#define virt_to_bus virt_to_bus_not_defined_use_pci_map
+extern unsigned long bus_to_virt_not_defined_use_pci_map(volatile void *addr);
+#define bus_to_virt bus_to_virt_not_defined_use_pci_map
/*
* readX/writeX() are used to access memory mapped devices. On some
diff --git a/include/asm-i386/pci.h b/include/asm-i386/pci.h
index 5a294a75d..5d69c0a4c 100644
--- a/include/asm-i386/pci.h
+++ b/include/asm-i386/pci.h
@@ -75,7 +75,7 @@ static inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,
if (direction == PCI_DMA_NONE)
BUG();
flush_write_buffers();
- return virt_to_bus(ptr);
+ return virt_to_phys(ptr);
}
/* Unmap a single streaming mode DMA translation. The dma_addr and size
@@ -144,22 +144,14 @@ static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
if (direction == PCI_DMA_NONE)
BUG();
-
- /*
- * temporary 2.4 hack
- */
- for (i = 0; i < nents; i++ ) {
- if (sg[i].address && sg[i].page)
- BUG();
- else if (!sg[i].address && !sg[i].page)
- BUG();
-
- if (sg[i].address)
- sg[i].dma_address = virt_to_bus(sg[i].address);
- else
- sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;
- }
-
+
+ for (i = 0; i < nents; i++ ) {
+ if (!sg[i].page)
+ BUG();
+
+ sg[i].dma_address = page_to_phys(sg[i].page) + sg[i].offset;
+ }
+
flush_write_buffers();
return nents;
}
@@ -233,7 +225,7 @@ static inline int pci_dma_supported(struct pci_dev *hwdev, u64 mask)
static __inline__ dma64_addr_t
pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page, unsigned long offset, int direction)
{
- return ((dma64_addr_t) page_to_bus(page) +
+ return ((dma64_addr_t) page_to_phys(page) +
(dma64_addr_t) offset);
}
diff --git a/include/asm-i386/scatterlist.h b/include/asm-i386/scatterlist.h
index 9e2614f23..b238c8d0b 100644
--- a/include/asm-i386/scatterlist.h
+++ b/include/asm-i386/scatterlist.h
@@ -2,13 +2,10 @@
#define _I386_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to, NULL for
- * highmem page */
- struct page * page; /* Location for highmem page, if any */
- unsigned int offset;/* for highmem, page offset */
-
- dma_addr_t dma_address;
- unsigned int length;
+ struct page *page;
+ unsigned int offset;
+ dma_addr_t dma_address;
+ unsigned int length;
};
#define ISA_DMA_THRESHOLD (0x00ffffff)
diff --git a/include/asm-ia64/scatterlist.h b/include/asm-ia64/scatterlist.h
index 8ab328670..76e9c5ec8 100644
--- a/include/asm-ia64/scatterlist.h
+++ b/include/asm-ia64/scatterlist.h
@@ -7,8 +7,6 @@
*/
struct scatterlist {
- /* This will disappear in 2.5.x: */
- char *address; /* location data is to be transferred to, NULL for highmem page */
char *orig_address; /* for use by swiotlb */
/* These two are only valid if ADDRESS member of this struct is NULL. */
diff --git a/include/asm-m68k/scatterlist.h b/include/asm-m68k/scatterlist.h
index f7eeb77f1..2a7bfa448 100644
--- a/include/asm-m68k/scatterlist.h
+++ b/include/asm-m68k/scatterlist.h
@@ -2,7 +2,8 @@
#define _M68K_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
unsigned long dvma_address;
};
diff --git a/include/asm-mips/scatterlist.h b/include/asm-mips/scatterlist.h
index ca4ff3032..861c2247f 100644
--- a/include/asm-mips/scatterlist.h
+++ b/include/asm-mips/scatterlist.h
@@ -2,7 +2,8 @@
#define __ASM_MIPS_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
__u32 dvma_address;
diff --git a/include/asm-mips64/scatterlist.h b/include/asm-mips64/scatterlist.h
index a8dc98fe8..67353a180 100644
--- a/include/asm-mips64/scatterlist.h
+++ b/include/asm-mips64/scatterlist.h
@@ -2,7 +2,8 @@
#define __ASM_MIPS64_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
__u32 dvma_address;
diff --git a/include/asm-parisc/scatterlist.h b/include/asm-parisc/scatterlist.h
index 9ebf3172b..0d7812764 100644
--- a/include/asm-parisc/scatterlist.h
+++ b/include/asm-parisc/scatterlist.h
@@ -2,7 +2,8 @@
#define _ASM_PARISC_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
/* an IOVA can be 64-bits on some PA-Risc platforms. */
diff --git a/include/asm-ppc/pci.h b/include/asm-ppc/pci.h
index 9298bcded..bb8c992e6 100644
--- a/include/asm-ppc/pci.h
+++ b/include/asm-ppc/pci.h
@@ -157,15 +157,10 @@ static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
* temporary 2.4 hack
*/
for (i = 0; i < nents; i++) {
- if (sg[i].address && sg[i].page)
- BUG();
- else if (!sg[i].address && !sg[i].page)
+ if (!sg[i].page)
BUG();
- if (sg[i].address)
- sg[i].dma_address = virt_to_bus(sg[i].address);
- else
- sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;
+ sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;
}
return nents;
diff --git a/include/asm-ppc/scatterlist.h b/include/asm-ppc/scatterlist.h
index 392e89778..80be401b5 100644
--- a/include/asm-ppc/scatterlist.h
+++ b/include/asm-ppc/scatterlist.h
@@ -8,10 +8,8 @@
#include <asm/dma.h>
struct scatterlist {
- char *address; /* Location data is to be transferred to,
- * or NULL for highmem page */
- struct page * page; /* Location for highmem page, if any */
- unsigned int offset; /* for highmem, page offset */
+ struct page * page;
+ unsigned int offset;
dma_addr_t dma_address; /* phys/bus dma address */
unsigned int length; /* length */
diff --git a/include/asm-s390/scatterlist.h b/include/asm-s390/scatterlist.h
index 7d1276c45..114ceaf53 100644
--- a/include/asm-s390/scatterlist.h
+++ b/include/asm-s390/scatterlist.h
@@ -2,7 +2,8 @@
#define _ASMS390X_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
};
diff --git a/include/asm-s390x/scatterlist.h b/include/asm-s390x/scatterlist.h
index 7d1276c45..114ceaf53 100644
--- a/include/asm-s390x/scatterlist.h
+++ b/include/asm-s390x/scatterlist.h
@@ -2,7 +2,8 @@
#define _ASMS390X_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
};
diff --git a/include/asm-sh/pci.h b/include/asm-sh/pci.h
index c47bde5a3..a2110cbb0 100644
--- a/include/asm-sh/pci.h
+++ b/include/asm-sh/pci.h
@@ -149,7 +149,7 @@ static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,
int i;
for (i=0; i<nents; i++)
- dma_cache_wback_inv(sg[i].address, sg[i].length);
+ dma_cache_wback_inv(page_address(sg[i].page) + sg[i].offset, sg[i].length);
#endif
if (direction == PCI_DMA_NONE)
BUG();
@@ -206,7 +206,7 @@ static inline void pci_dma_sync_sg(struct pci_dev *hwdev,
int i;
for (i=0; i<nelems; i++)
- dma_cache_wback_inv(sg[i].address, sg[i].length);
+ dma_cache_wback_inv(page_address(sg[i].page) + sg[i].offset, sg[i].length);
#endif
}
diff --git a/include/asm-sh/scatterlist.h b/include/asm-sh/scatterlist.h
index fcd23eeb8..b580e05d0 100644
--- a/include/asm-sh/scatterlist.h
+++ b/include/asm-sh/scatterlist.h
@@ -2,7 +2,8 @@
#define __ASM_SH_SCATTERLIST_H
struct scatterlist {
- char * address; /* Location data is to be transferred to */
+ struct page *page;
+ unsigned int offset;
unsigned int length;
};
diff --git a/include/asm-sparc/scatterlist.h b/include/asm-sparc/scatterlist.h
index 27c35f783..07a7f344c 100644
--- a/include/asm-sparc/scatterlist.h
+++ b/include/asm-sparc/scatterlist.h
@@ -1,16 +1,10 @@
-/* $Id: scatterlist.h,v 1.7 2001-10-30 04:34:57 davem Exp $ */
+/* $Id: scatterlist.h,v 1.8 2001-12-17 07:05:15 davem Exp $ */
#ifndef _SPARC_SCATTERLIST_H
#define _SPARC_SCATTERLIST_H
#include <linux/types.h>
struct scatterlist {
- /* This will disappear in 2.5.x */
- char *address;
-
- /* These two are only valid if ADDRESS member of this
- * struct is NULL.
- */
struct page *page;
unsigned int offset;
diff --git a/include/asm-sparc64/scatterlist.h b/include/asm-sparc64/scatterlist.h
index 01d5eba05..0a3111128 100644
--- a/include/asm-sparc64/scatterlist.h
+++ b/include/asm-sparc64/scatterlist.h
@@ -1,23 +1,17 @@
-/* $Id: scatterlist.h,v 1.10 2001-10-09 02:24:35 davem Exp $ */
+/* $Id: scatterlist.h,v 1.11 2001-12-17 07:05:15 davem Exp $ */
#ifndef _SPARC64_SCATTERLIST_H
#define _SPARC64_SCATTERLIST_H
#include <asm/page.h>
struct scatterlist {
- /* This will disappear in 2.5.x */
- char *address;
+ struct page *page;
+ unsigned int offset;
- /* These two are only valid if ADDRESS member of this
- * struct is NULL.
- */
- struct page *page;
- unsigned int offset;
+ unsigned int length;
- unsigned int length;
-
- dma_addr_t dma_address;
- __u32 dma_length;
+ dma_addr_t dma_address;
+ __u32 dma_length;
};
#define sg_dma_address(sg) ((sg)->dma_address)