summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJens Axboe <axboe@burns.home.kernel.dk>2002-02-06 16:32:53 +0100
committerJens Axboe <axboe@burns.home.kernel.dk>2002-02-06 16:32:53 +0100
commit07916eb45f4a6c63acb93e269c10490e4e623a0c (patch)
treea4f8ece00fe7f7863f4cec674bd98d1351d643c3 /drivers
parent770febce31cde0639ad419ab6537876fac547c21 (diff)
kill struct scatterlist address member
Diffstat (limited to 'drivers')
-rw-r--r--drivers/block/DAC960.h34
-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.c1
-rw-r--r--drivers/scsi/advansys.c1
-rw-r--r--drivers/scsi/aha1542.c32
-rw-r--r--drivers/scsi/aha1740.c14
-rw-r--r--drivers/scsi/aic7xxx_old.c18
-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_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/ultrastor.c18
-rw-r--r--drivers/scsi/wd7000.c7
-rw-r--r--drivers/usb/hpusbscsi.c3
-rw-r--r--drivers/usb/microtek.c11
-rw-r--r--drivers/usb/storage/freecom.c4
-rw-r--r--drivers/usb/storage/isd200.c8
-rw-r--r--drivers/usb/storage/protocol.c9
-rw-r--r--drivers/usb/storage/scsiglue.c34
-rw-r--r--drivers/usb/storage/sddr09.c29
-rw-r--r--drivers/usb/storage/shuttle_usbat.c16
-rw-r--r--drivers/usb/storage/transport.c4
-rw-r--r--drivers/usb/storage/usb.c4
-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
73 files changed, 338 insertions, 390 deletions
diff --git a/drivers/block/DAC960.h b/drivers/block/DAC960.h
index 9826533648eb..eb5c2027ab4d 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/ps2esdi.c b/drivers/block/ps2esdi.c
index f23918b051d8..37bb445878fc 100644
--- a/drivers/block/ps2esdi.c
+++ b/drivers/block/ps2esdi.c
@@ -475,7 +475,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 */
@@ -663,7 +663,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 7db25b2a0e54..166956be0f16 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 588c6467d125..97f842cb21ab 100644
--- a/drivers/char/esp.c
+++ b/drivers/char/esp.c
@@ -392,7 +392,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);
@@ -569,7 +569,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);
@@ -599,7 +599,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 792a8fdc23d7..f2afd4cf4db3 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 cc236dd7c277..4e5cfcf6a60f 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 bd57c42e61a0..ddf546d5d299 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 2d6d6b539f92..9bea2535d19d 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 801037a4730e..58465ff52a08 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 4c16aa854b9f..856e5552ac39 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 49d80260a285..a14399223c85 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 7f91256e65ab..8386addb6acc 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 de2013540e2d..83cecdc7e2a6 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 64d559cf253e..eb2480f3a253 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 7aa8c837e645..75bd0aedbf77 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 2daff418971b..7cac667930e3 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 cbe421d5f498..31f4f5a6bc81 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 c9f5f7f425c1..a54402308b84 100644
--- a/drivers/net/defxx.c
+++ b/drivers/net/defxx.c
@@ -199,6 +199,8 @@
* Feb 2001 davej PCI enable cleanups.
*/
+#error 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 49ed98d4d878..62559339f083 100644
--- a/drivers/net/dl2k.h
+++ b/drivers/net/dl2k.h
@@ -792,6 +792,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 0b25e65b9cca..a299ee7a39ae 100644
--- a/drivers/net/hp100.c
+++ b/drivers/net/hp100.c
@@ -83,6 +83,8 @@
**
*/
+#error 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 ac7a07cb5ebb..3122340f2876 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 54d5c958de0f..e93eb24efc7f 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 b80f239169ac..c1e925d2f57c 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 6b408b118cd1..b2a1f3a6c640 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 d222d5480bf8..e89fae619c60 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 84f5a31ae71d..849b1852d8c4 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 0b5bcdcc1eaa..f0a8fedaf8ba 100644
--- a/drivers/net/rcpci45.c
+++ b/drivers/net/rcpci45.c
@@ -44,6 +44,8 @@
**
***************************************************************************/
+#error 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 f476a5d483b3..4192b5e7aa25 100644
--- a/drivers/net/rrunner.c
+++ b/drivers/net/rrunner.c
@@ -21,6 +21,8 @@
* ODS/Essential.
*/
+#error 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 21ab6e3af3da..3a7cf6ac954b 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 7082e8877e45..1246f4308b15 100644
--- a/drivers/net/tlan.c
+++ b/drivers/net/tlan.c
@@ -160,6 +160,7 @@
*
*******************************************************************************/
+#error 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 5c26cb94f8c0..eaaedb980170 100644
--- a/drivers/scsi/3w-xxxx.c
+++ b/drivers/scsi/3w-xxxx.c
@@ -108,6 +108,8 @@
Fix get_param for specific units.
*/
+#error 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 2cd317cb8355..a944ae49708e 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 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 8381d13cb2a6..ee62d61330d8 100644
--- a/drivers/scsi/AM53C974.c
+++ b/drivers/scsi/AM53C974.c
@@ -1,3 +1,5 @@
+#error 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 1b8c292e6854..c6ceeda9c11b 100644
--- a/drivers/scsi/BusLogic.c
+++ b/drivers/scsi/BusLogic.c
@@ -29,6 +29,7 @@
#define BusLogic_DriverVersion "2.1.15"
#define BusLogic_DriverDate "17 August 1998"
+#error 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 6b75605b352a..b4568351d1e3 100644
--- a/drivers/scsi/advansys.c
+++ b/drivers/scsi/advansys.c
@@ -752,6 +752,7 @@
*/
+#error Please convert me to Documentation/DMA-mapping.txt
/*
* --- Linux Version
diff --git a/drivers/scsi/aha1542.c b/drivers/scsi/aha1542.c
index 2198459e2bbc..a93ff6dd3d6a 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");
}
@@ -70,7 +71,7 @@ static void BAD_SG_DMA(Scsi_Cmnd * SCpnt,
printk(KERN_CRIT "sgpnt[%d:%d] page %p/0x%lx length %d\n",
badseg, nseg,
page_address(sgpnt[badseg].page) + sgpnt[badseg].offset,
- (unsigned long)page_to_bus(sgpnt[badseg].page) + sgpnt[badseg].offset,
+ SCSI_SG_PA(&sgpnt[badseg]),
sgpnt[badseg].length);
/*
@@ -511,7 +512,7 @@ static void aha1542_intr_handle(struct Scsi_Host *shost, void *dev_id, struct pt
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));
@@ -715,7 +716,8 @@ static int aha1542_queuecommand(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
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,
- page_address(sgpnt[i].page) + sgpnt[i].offset,
+ (page_address(sgpnt[i].page) +
+ sgpnt[i].offset),
sgpnt[i].length);
};
printk(KERN_CRIT "cptr %x: ", (unsigned int) cptr);
@@ -724,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, page_to_bus(sgpnt[i].page) + sgpnt[i].offset);
- if (page_to_bus(sgpnt[i].page) + sgpnt[i].offset + 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;
@@ -741,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;
@@ -803,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) {
@@ -1186,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;
}
@@ -1399,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 44c9d83eaec7..ad043e6020c8 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_old.c b/drivers/scsi/aic7xxx_old.c
index 6af87bc47153..0c64cd55f048 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]))
@@ -2841,17 +2835,9 @@ aic7xxx_done(struct aic7xxx_host *p, struct aic7xxx_scb *scb)
char *buffer;
if(cmd->use_sg)
- {
- struct scatterlist *sg;
-
- sg = (struct scatterlist *)cmd->request_buffer;
- buffer = (char *)sg[0].address;
- }
- else
- {
- buffer = (char *)cmd->request_buffer;
- }
+ BUG();
+ buffer = (char *)cmd->request_buffer;
if ( (buffer[7] & WIDE_INQUIRY_BITS) &&
(p->features & AHC_WIDE) )
diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index 7cf724157498..5ba17a3bc2ff 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 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 fc1c90a0ae4c..1d5c5172ef96 100644
--- a/drivers/scsi/dpt_i2o.c
+++ b/drivers/scsi/dpt_i2o.c
@@ -28,6 +28,8 @@
#define ADDR32 (0)
+#error 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 6b02eb9c97ec..50f1395efd95 100644
--- a/drivers/scsi/eata.c
+++ b/drivers/scsi/eata.c
@@ -401,6 +401,8 @@
* the driver sets host->wish_block = TRUE for all ISA boards.
*/
+#error 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 ca72457de7af..5fcd0b321b6c 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 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 28b8ea274682..8508b693f316 100644
--- a/drivers/scsi/gdth.c
+++ b/drivers/scsi/gdth.c
@@ -295,6 +295,8 @@
* phase: Service/parameter/return code special command
*/
+#error 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 0153b018ecc9..1b034e4e4e7f 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 1fba128f8e5b..c6c53caf11d3 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 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 82ffd13ac384..d636682b6b52 100644
--- a/drivers/scsi/inia100.c
+++ b/drivers/scsi/inia100.c
@@ -67,6 +67,8 @@
#include <linux/version.h>
#endif
+#error 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 258af5f19516..d428ece2c82e 100644
--- a/drivers/scsi/ips.c
+++ b/drivers/scsi/ips.c
@@ -140,6 +140,8 @@
* ioctlsize - Initial size of the IOCTL buffer
*/
+#error 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 d6d0d39da3ec..3e4bcaec167f 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 47820a3effb4..4c8d0a95e34b 100644
--- a/drivers/scsi/osst.c
+++ b/drivers/scsi/osst.c
@@ -479,7 +479,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");
}
return 1;
@@ -4375,12 +4376,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! */
@@ -4933,15 +4934,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;
}
@@ -4953,9 +4953,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 */
@@ -4985,7 +4985,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) {
@@ -5030,9 +5030,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--;
@@ -5080,7 +5080,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
@@ -5108,7 +5108,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;
@@ -5141,7 +5141,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;
@@ -5174,7 +5174,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;
}
@@ -5194,7 +5194,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;
}
@@ -5215,7 +5215,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 27607cd040d1..77f007e9d85a 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 d1ceb1d5193d..f081655aa5ba 100644
--- a/drivers/scsi/qla1280.c
+++ b/drivers/scsi/qla1280.c
@@ -182,6 +182,7 @@ END OF TERMS AND CONDITIONS
- Initial Beta Release.
*****************************************************************************/
+#error 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 94940c0d670d..e45098075934 100644
--- a/drivers/scsi/scsi.h
+++ b/drivers/scsi/scsi.h
@@ -734,7 +734,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_lib.c b/drivers/scsi/scsi_lib.c
index b23f616592db..66f21a37291e 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -450,18 +450,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)
@@ -525,24 +515,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 5d052023478c..24a7e0c38017 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 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 761dfc562709..4b0019793624 100644
--- a/drivers/scsi/seagate.c
+++ b/drivers/scsi/seagate.c
@@ -1061,8 +1061,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 aaffa09a5bf6..5aedd68301f7 100644
--- a/drivers/scsi/sgiwd93.c
+++ b/drivers/scsi/sgiwd93.c
@@ -120,9 +120,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
@@ -227,7 +231,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 e3be22e06095..84723470e17d 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:
@@ -944,7 +944,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
@@ -991,7 +991,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 */
}
@@ -1044,7 +1044,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);
}
@@ -1122,48 +1122,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;
@@ -1508,7 +1507,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;
@@ -1562,7 +1561,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++) {
@@ -1578,7 +1577,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 022f5caf1f8b..dde07870e33f 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -3404,15 +3404,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 */
@@ -3424,10 +3423,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
@@ -3443,7 +3441,6 @@ static ST_buffer *
tb = NULL;
break;
}
- tb->sg[segs].page = NULL;
tb->sg[segs].length = b_size;
got += b_size;
segs++;
@@ -3457,7 +3454,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",
@@ -3503,9 +3500,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--;
@@ -3517,7 +3514,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;
@@ -3541,13 +3537,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;
@@ -3570,7 +3566,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;
@@ -3603,7 +3599,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/ultrastor.c b/drivers/scsi/ultrastor.c
index 64f088ef9a44..4ef6ee13dcaf 100644
--- a/drivers/scsi/ultrastor.c
+++ b/drivers/scsi/ultrastor.c
@@ -667,12 +667,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. */
@@ -728,7 +728,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; /*???*/
@@ -738,7 +738,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;
@@ -796,7 +796,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) {
@@ -872,9 +872,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);
}
@@ -910,7 +910,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));
@@ -1043,7 +1043,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 d3a84ab0f6ad..3e1bafa68cb1 100644
--- a/drivers/scsi/wd7000.c
+++ b/drivers/scsi/wd7000.c
@@ -1111,7 +1111,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;
@@ -1187,13 +1187,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/hpusbscsi.c b/drivers/usb/hpusbscsi.c
index 37cae7f9ce42..71e60ef6aeeb 100644
--- a/drivers/usb/hpusbscsi.c
+++ b/drivers/usb/hpusbscsi.c
@@ -454,7 +454,8 @@ static void scatter_gather_callback(struct urb *u)
u,
hpusbscsi->dev,
hpusbscsi->current_data_pipe,
- sg[hpusbscsi->fragment].address,
+ page_address(sg[hpusbscsi->fragment].page) +
+ sg[hpusbscsi->fragment].offset,
sg[hpusbscsi->fragment++].length,
callback,
hpusbscsi
diff --git a/drivers/usb/microtek.c b/drivers/usb/microtek.c
index 83d325608f57..ff190dcd76ba 100644
--- a/drivers/usb/microtek.c
+++ b/drivers/usb/microtek.c
@@ -609,10 +609,11 @@ static void mts_do_sg (struct urb* transfer)
sg = context->srb->buffer;
context->fragment++;
mts_int_submit_urb(transfer,
- context->data_pipe,
- sg[context->fragment].address,
- sg[context->fragment].length,
- context->fragment + 1 == context->srb->use_sg ? mts_data_done : mts_do_sg);
+ context->data_pipe,
+ page_address(sg[context->fragment].page) +
+ sg[context->fragment].offset,
+ sg[context->fragment].length,
+ context->fragment + 1 == context->srb->use_sg ? mts_data_done : mts_do_sg);
return;
}
@@ -654,7 +655,7 @@ mts_build_transfer_context( Scsi_Cmnd *srb, struct mts_desc* desc )
} else {
MTS_DEBUG("Using scatter/gather\n");
sg = srb->buffer;
- desc->context.data = sg[0].address;
+ desc->context.data = page_address(sg[0].page) + sg[0].offset;
desc->context.data_length = sg[0].length;
}
diff --git a/drivers/usb/storage/freecom.c b/drivers/usb/storage/freecom.c
index 465af85d7b5f..f273ea54f635 100644
--- a/drivers/usb/storage/freecom.c
+++ b/drivers/usb/storage/freecom.c
@@ -144,11 +144,11 @@ static void us_transfer_freecom(Scsi_Cmnd *srb, struct us_data* us, int transfer
if (transfer_amount - total_transferred >=
sg[i].length) {
result = usb_stor_transfer_partial(us,
- sg[i].address, sg[i].length);
+ page_address(sg[i].page) + sg[i].offset, sg[i].length);
total_transferred += sg[i].length;
} else {
result = usb_stor_transfer_partial(us,
- sg[i].address,
+ page_address(sg[i].page) + sg[i].offset,
transfer_amount - total_transferred);
total_transferred += transfer_amount - total_transferred;
}
diff --git a/drivers/usb/storage/isd200.c b/drivers/usb/storage/isd200.c
index baab4d50d916..d7840dc8f349 100644
--- a/drivers/usb/storage/isd200.c
+++ b/drivers/usb/storage/isd200.c
@@ -518,13 +518,13 @@ static void isd200_transfer( struct us_data *us, Scsi_Cmnd *srb )
sg[i].length) {
result = isd200_transfer_partial(us,
srb->sc_data_direction,
- sg[i].address,
+ page_address(sg[i].page) + sg[i].offset,
sg[i].length);
total_transferred += sg[i].length;
} else
result = isd200_transfer_partial(us,
srb->sc_data_direction,
- sg[i].address,
+ page_address(sg[i].page) + sg[i].offset,
transfer_amount - total_transferred);
/* if we get an error, end the loop here */
@@ -1415,10 +1415,10 @@ void isd200_data_copy(Scsi_Cmnd *srb, char * src, int length)
/* transfer the lesser of the next buffer or the
* remaining data */
if (len - total >= sg[i].length) {
- memcpy(sg[i].address, src + total, sg[i].length);
+ memcpy(page_address(sg[i].page) + sg[i].offset, src + total, sg[i].length);
total += sg[i].length;
} else {
- memcpy(sg[i].address, src + total, len - total);
+ memcpy(page_address(sg[i].page) + sg[i].offset, src + total, len - total);
total = len;
}
}
diff --git a/drivers/usb/storage/protocol.c b/drivers/usb/storage/protocol.c
index c4e397cb970a..c2bc41be7357 100644
--- a/drivers/usb/storage/protocol.c
+++ b/drivers/usb/storage/protocol.c
@@ -67,13 +67,10 @@ void fix_inquiry_data(Scsi_Cmnd *srb)
US_DEBUGP("Fixing INQUIRY data to show SCSI rev 2\n");
/* find the location of the data */
- if (srb->use_sg) {
- struct scatterlist *sg;
+ if (srb->use_sg)
+ BUG();
- sg = (struct scatterlist *) srb->request_buffer;
- data_ptr = (unsigned char *) sg[0].address;
- } else
- data_ptr = (unsigned char *)srb->request_buffer;
+ data_ptr = (unsigned char *) srb->request_buffer;
/* Change the SCSI revision number */
data_ptr[2] = (data_ptr[2] & ~7) | 2;
diff --git a/drivers/usb/storage/scsiglue.c b/drivers/usb/storage/scsiglue.c
index 44e6cf0a9b7e..8611a366d937 100644
--- a/drivers/usb/storage/scsiglue.c
+++ b/drivers/usb/storage/scsiglue.c
@@ -564,7 +564,12 @@ int usb_stor_scsiSense10to6( Scsi_Cmnd* the10 )
}
/* copy one byte */
- sg[db].address[di] = sg[sb].address[si];
+ {
+ char *src = page_address(sg[sb].page) + sg[sb].offset + si;
+ char *dst = page_address(sg[db].page) + sg[db].offset + di;
+
+ *dst = *src;
+ }
/* get next destination */
if ( sg[db].length-1 == di )
@@ -602,7 +607,7 @@ int usb_stor_scsiSense10to6( Scsi_Cmnd* the10 )
break;
}
- sg[db].address[di] = 0;
+ *(char *)(page_address(sg[db].page) + sg[db].offset) = 0;
/* get next destination */
if ( sg[db].length-1 == di )
@@ -752,7 +757,12 @@ int usb_stor_scsiSense6to10( Scsi_Cmnd* the6 )
}
/* copy one byte */
- sg[db].address[di] = sg[sb].address[si];
+ {
+ char *src = page_address(sg[sb].page) + sg[sb].offset + si;
+ char *dst = page_address(sg[db].page) + sg[db].offset + di;
+
+ *dst = *src;
+ }
/* get next destination */
if ( di == 0 )
@@ -789,7 +799,11 @@ int usb_stor_scsiSense6to10( Scsi_Cmnd* the6 )
break;
}
- sg[db].address[di] = tempBuffer[element-USB_STOR_SCSI_SENSE_HDRSZ];
+ {
+ char *dst = page_address(sg[db].page) + sg[db].offset + di;
+
+ *dst = tempBuffer[element-USB_STOR_SCSI_SENSE_HDRSZ];
+ }
/* get next destination */
if ( di == 0 )
@@ -839,13 +853,19 @@ void usb_stor_scsiSenseParseBuffer( Scsi_Cmnd* srb, Usb_Stor_Scsi_Sense_Hdr_u* t
if ( element < USB_STOR_SCSI_SENSE_HDRSZ )
{
/* fill in the pointers for both header types */
- the6->array[element] = &(sg[i].address[j]);
- the10->array[element] = &(sg[i].address[j]);
+ the6->array[element] =
+ page_address(sg[i].page) +
+ sg[i].offset + j;
+ the10->array[element] =
+ page_address(sg[i].page) +
+ sg[i].offset + j;
}
else if ( element < USB_STOR_SCSI_SENSE_10_HDRSZ )
{
/* only the longer headers still cares now */
- the10->array[element] = &(sg[i].address[j]);
+ the10->array[element] =
+ page_address(sg[i].page) +
+ sg[i].offset + j;
}
/* increase element counter */
element++;
diff --git a/drivers/usb/storage/sddr09.c b/drivers/usb/storage/sddr09.c
index 10227ee44c16..bc14015ae97f 100644
--- a/drivers/usb/storage/sddr09.c
+++ b/drivers/usb/storage/sddr09.c
@@ -239,7 +239,7 @@ static int sddr09_bulk_transport(struct us_data *us,
sg = (struct scatterlist *)data;
for (i=0; i<use_sg && transferred<len; i++) {
result = sddr09_raw_bulk(us, direction,
- sg[i].address,
+ page_address(sg[i].page) + sg[i].offset,
len-transferred > sg[i].length ?
sg[i].length : len-transferred);
if (result!=US_BULK_TRANSFER_GOOD)
@@ -384,7 +384,7 @@ int sddr09_read_data(struct us_data *us,
if (use_sg) {
transferred = 0;
for (i=0; i<use_sg && transferred<len; i++) {
- memcpy(sg[i].address, buffer+transferred,
+ memcpy(page_address(sg[i].page) + sg[i].offset, buffer+transferred,
len-transferred > sg[i].length ?
sg[i].length : len-transferred);
transferred += sg[i].length;
@@ -636,21 +636,24 @@ int sddr09_read_map(struct us_data *us) {
for (i=0; i<alloc_blocks; i++) {
if (i<alloc_blocks-1) {
- sg[i].address = kmalloc( (1<<17), GFP_NOIO );
- sg[i].page = NULL;
+ char *vaddr = kmalloc(1 << 17, GFP_NOIO);
+ sg[i].page = virt_to_page(vaddr);
+ sg[i].offset = ((unsigned long)vaddr & ~PAGE_MASK);
sg[i].length = (1<<17);
} else {
- sg[i].address = kmalloc(alloc_len, GFP_NOIO);
- sg[i].page = NULL;
+ char *vaddr = kmalloc(alloc_len, GFP_NOIO);
+ sg[i].page = virt_to_page(vaddr);
+ sg[i].offset = ((unsigned long)vaddr & ~PAGE_MASK);
sg[i].length = alloc_len;
}
alloc_len -= sg[i].length;
}
+
for (i=0; i<alloc_blocks; i++)
- if (sg[i].address == NULL) {
+ if (sg[i].page == NULL) {
for (i=0; i<alloc_blocks; i++)
- if (sg[i].address != NULL)
- kfree(sg[i].address);
+ if (sg[i].page != NULL)
+ kfree(page_address(sg[i].page) + sg[i].offset);
kfree(sg);
return 0;
}
@@ -661,7 +664,7 @@ int sddr09_read_map(struct us_data *us) {
(unsigned char *)sg, alloc_blocks)) !=
USB_STOR_TRANSPORT_GOOD) {
for (i=0; i<alloc_blocks; i++)
- kfree(sg[i].address);
+ kfree(page_address(sg[i].page) + sg[i].offset);
kfree(sg);
return -1;
}
@@ -683,7 +686,7 @@ int sddr09_read_map(struct us_data *us) {
info->lba_to_pba = NULL;
info->pba_to_lba = NULL;
for (i=0; i<alloc_blocks; i++)
- kfree(sg[i].address);
+ kfree(page_address(sg[i].page) + sg[i].offset);
kfree(sg);
return 0;
}
@@ -695,7 +698,7 @@ int sddr09_read_map(struct us_data *us) {
// scatterlist block i*64/128k = i*(2^6)*(2^-17) = i*(2^-11)
for (i=0; i<numblocks; i++) {
- ptr = sg[i>>11].address+((i&0x7ff)<<6);
+ ptr = page_address(sg[i>>11].page)+sg[i>>11].offset+((i&0x7ff)<<6);
if (ptr[0]!=0xFF || ptr[1]!=0xFF || ptr[2]!=0xFF ||
ptr[3]!=0xFF || ptr[4]!=0xFF || ptr[5]!=0xFF) {
US_DEBUGP("PBA %04X has no logical mapping: reserved area = "
@@ -748,7 +751,7 @@ int sddr09_read_map(struct us_data *us) {
}
for (i=0; i<alloc_blocks; i++)
- kfree(sg[i].address);
+ kfree(page_address(sg[i].page)+sg[i].offset);
kfree(sg);
return 0;
}
diff --git a/drivers/usb/storage/shuttle_usbat.c b/drivers/usb/storage/shuttle_usbat.c
index 602b0f75f7de..9770f9103210 100644
--- a/drivers/usb/storage/shuttle_usbat.c
+++ b/drivers/usb/storage/shuttle_usbat.c
@@ -214,7 +214,7 @@ static int usbat_bulk_transport(struct us_data *us,
sg = (struct scatterlist *)data;
for (i=0; i<use_sg && transferred<len; i++) {
result = usbat_raw_bulk(us, direction,
- sg[i].address,
+ page_address(sg[i].page) + sg[i].offset,
len-transferred > sg[i].length ?
sg[i].length : len-transferred);
if (result!=US_BULK_TRANSFER_GOOD)
@@ -733,17 +733,19 @@ int usbat_handle_read10(struct us_data *us,
while (amount<len) {
if (len - amount >=
sg[sg_segment].length-sg_offset) {
- memcpy(sg[sg_segment].address + sg_offset,
- buffer + amount,
- sg[sg_segment].length - sg_offset);
+ memcpy(page_address(sg[sg_segment].page) +
+ sg[sg_segment].offset + sg_offset,
+ buffer + amount,
+ sg[sg_segment].length - sg_offset);
amount +=
sg[sg_segment].length-sg_offset;
sg_segment++;
sg_offset=0;
} else {
- memcpy(sg[sg_segment].address + sg_offset,
- buffer + amount,
- len - amount);
+ memcpy(page_address(sg[sg_segment].page) +
+ sg[sg_segment].offset + sg_offset,
+ buffer + amount,
+ len - amount);
sg_offset += (len - amount);
amount = len;
}
diff --git a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c
index 089672906f27..7b40983c7a99 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -584,11 +584,11 @@ void usb_stor_transfer(Scsi_Cmnd *srb, struct us_data* us)
if (transfer_amount - total_transferred >=
sg[i].length) {
result = usb_stor_transfer_partial(us,
- sg[i].address, sg[i].length);
+ page_address(sg[i].page) + sg[i].offset, sg[i].length);
total_transferred += sg[i].length;
} else
result = usb_stor_transfer_partial(us,
- sg[i].address,
+ page_address(sg[i].page) + sg[i].offset,
transfer_amount - total_transferred);
/* if we get an error, end the loop here */
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 6d93cbbe76bb..0932c1b27119 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -288,13 +288,13 @@ void fill_inquiry_response(struct us_data *us, unsigned char *data,
if (us->srb->use_sg) {
sg = (struct scatterlist *)us->srb->request_buffer;
for (i=0; i<us->srb->use_sg; i++)
- memset(sg[i].address, 0, sg[i].length);
+ memset(page_address(sg[i].page) + sg[i].offset, 0, sg[i].length);
for (i=0, transferred=0;
i<us->srb->use_sg && transferred < len;
i++) {
amt = sg[i].length > len-transferred ?
len-transferred : sg[i].length;
- memcpy(sg[i].address, data+transferred, amt);
+ memcpy(page_address(sg[i].page) + sg[i].offset, data+transferred, amt);
transferred -= amt;
}
} else {
diff --git a/drivers/usb/usb-uhci-debug.h b/drivers/usb/usb-uhci-debug.h
index c10ac3146c20..0fa124d8b020 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 71bb78350ef8..3c89ed98235c 100644
--- a/drivers/usb/usb-uhci.c
+++ b/drivers/usb/usb-uhci.c
@@ -685,7 +685,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;
@@ -800,7 +799,6 @@ _static int uhci_submit_control_urb (struct urb *urb)
qh->hw.qh.element &= cpu_to_le32(~UHCI_PTR_TERM);
- //uhci_show_queue(qh);
/* Start it up... put low speed first */
if (urb->dev->speed == USB_SPEED_LOW)
insert_qh (s, s->control_chain, qh, 0);
@@ -949,7 +947,6 @@ _static int uhci_submit_bulk_urb (struct urb *urb, struct urb *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 2ae48765cee2..1278f3a0ebd8 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>: