diff options
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.c | 11 |
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; |