Fix DMA_WORKAROUND
authorGrazvydas Ignotas <notasas@gmail.com>
Sat, 24 Jan 2009 12:35:32 +0000 (14:35 +0200)
committerGrazvydas Ignotas <notasas@gmail.com>
Sat, 24 Jan 2009 21:55:36 +0000 (23:55 +0200)
Use better way to detect non direct-mapped RAM to prevent
crashes later on.

sta_dk_4_0_4_32/pform/linux/src/tnetw_sdio.c

index bc88b9c..a8a535e 100755 (executable)
@@ -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 {