summaryrefslogtreecommitdiffstats
path: root/uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c
diff options
context:
space:
mode:
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c')
-rw-r--r--uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c b/uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c
index a76f2de..ad23aee 100644
--- a/uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c
+++ b/uClinux-2.4.20-uc1/drivers/scsi/scsi_scan.c
@@ -327,14 +327,21 @@ void scan_scsis(struct Scsi_Host *shpnt,
scsi_initialize_queue(SDpnt, shpnt);
SDpnt->request_queue.queuedata = (void *) SDpnt;
/* Make sure we have something that is valid for DMA purposes */
+#ifndef CONFIG_BOARD_W90N745
scsi_result = ((!shpnt->unchecked_isa_dma)
? &scsi_result0[0] : kmalloc(512, GFP_DMA));
+#else
+ scsi_result = (unsigned char *)kmalloc(sizeof(unsigned char) * 256, GFP_ATOMIC);
+#endif
}
if (scsi_result == NULL) {
printk("Unable to obtain scsi_result buffer\n");
goto leave;
}
+#ifdef CONFIG_BOARD_W90N745
+ scsi_result = (unsigned char *)((unsigned long)scsi_result | 0x80000000);
+#endif
/*
* We must chain ourself in the host_queue, so commands can time out
*/
@@ -492,7 +499,11 @@ void scan_scsis(struct Scsi_Host *shpnt,
}
/* If we allocated a buffer so we could do DMA, free it now */
+#ifndef CONFIG_BOARD_W90N745
if (scsi_result != &scsi_result0[0] && scsi_result != NULL) {
+#else
+ if(scsi_result != NULL) {
+#endif
kfree(scsi_result);
} {
Scsi_Device *sdev;