From: Grazvydas Ignotas Date: Sat, 24 Jan 2009 12:35:32 +0000 (+0200) Subject: Fix DMA_WORKAROUND X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f2f35aa2a1301782bc0c2ff23c7488e4842406b0;p=pandora-wifi.git Fix DMA_WORKAROUND Use better way to detect non direct-mapped RAM to prevent crashes later on. --- diff --git a/sta_dk_4_0_4_32/pform/linux/src/tnetw_sdio.c b/sta_dk_4_0_4_32/pform/linux/src/tnetw_sdio.c index bc88b9c..a8a535e 100755 --- a/sta_dk_4_0_4_32/pform/linux/src/tnetw_sdio.c +++ b/sta_dk_4_0_4_32/pform/linux/src/tnetw_sdio.c @@ -33,7 +33,6 @@ extern int sdio_reset_comm(struct mmc_card *card); static struct sdio_func *tiwlan_func = NULL; static int sdio_reset_flag = 0; #ifdef DM_DMA_WORKAROUND -#define DMA_THRESHOLD_SIZE 64 static void *sdio_dma_ptr = NULL; #endif /*-------------------------------------------------------------------*/ @@ -158,7 +157,7 @@ SDIO_Status SDIO_SyncRead(SDIO_Handle Handle, SDIO_Request_t *Req) while(retries) { if( retries > 2 ) #ifdef DM_DMA_WORKAROUND - if( Req->buffer_len < DMA_THRESHOLD_SIZE ) { + if( virt_addr_valid(Req->buffer) ) { rc = sdio_memcpy_fromio(func, Req->buffer, Req->peripheral_addr, Req->buffer_len); } else { @@ -203,7 +202,7 @@ SDIO_Status SDIO_SyncWrite(SDIO_Handle Handle, SDIO_Request_t *Req) while(retries) { if( retries > 2 ) { #ifdef DM_DMA_WORKAROUND - if( Req->buffer_len < DMA_THRESHOLD_SIZE ) { + if( virt_addr_valid(Req->buffer) ) { dma_ptr = Req->buffer; } else {