|
@@ -335,6 +335,7 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
|
|
|
int sg_cnt, i, resid;
|
|
|
int err = 0;
|
|
|
long timeleft;
|
|
|
+ struct scatterlist *sg_ptr;
|
|
|
u32 val = TRIG_DMA;
|
|
|
|
|
|
if ((sg == NULL) || (num_sg <= 0) || !offset || !index)
|
|
@@ -371,7 +372,7 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
|
|
|
sg_cnt = dma_map_sg(&(rtsx->pci->dev), sg, num_sg, dma_dir);
|
|
|
|
|
|
resid = size;
|
|
|
-
|
|
|
+ sg_ptr = sg;
|
|
|
chip->sgi = 0;
|
|
|
/* Usually the next entry will be @sg@ + 1, but if this sg element
|
|
|
* is part of a chained scatterlist, it could jump to the start of
|
|
@@ -379,14 +380,14 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
|
|
|
* the proper sg
|
|
|
*/
|
|
|
for (i = 0; i < *index; i++)
|
|
|
- sg = sg_next(sg);
|
|
|
+ sg_ptr = sg_next(sg_ptr);
|
|
|
for (i = *index; i < sg_cnt; i++) {
|
|
|
dma_addr_t addr;
|
|
|
unsigned int len;
|
|
|
u8 option;
|
|
|
|
|
|
- addr = sg_dma_address(sg);
|
|
|
- len = sg_dma_len(sg);
|
|
|
+ addr = sg_dma_address(sg_ptr);
|
|
|
+ len = sg_dma_len(sg_ptr);
|
|
|
|
|
|
RTSX_DEBUGP("DMA addr: 0x%x, Len: 0x%x\n",
|
|
|
(unsigned int)addr, len);
|
|
@@ -415,7 +416,7 @@ static int rtsx_transfer_sglist_adma_partial(struct rtsx_chip *chip, u8 card,
|
|
|
if (!resid)
|
|
|
break;
|
|
|
|
|
|
- sg = sg_next(sg);
|
|
|
+ sg_ptr = sg_next(sg_ptr);
|
|
|
}
|
|
|
|
|
|
RTSX_DEBUGP("SG table count = %d\n", chip->sgi);
|