|
Lines 52-57
Link Here
|
| 52 |
#include <scsi/scsi.h> |
52 |
#include <scsi/scsi.h> |
| 53 |
#include <scsi/scsi_cmnd.h> |
53 |
#include <scsi/scsi_cmnd.h> |
| 54 |
#include <scsi/scsi_host.h> |
54 |
#include <scsi/scsi_host.h> |
|
|
55 |
#include <linux/cdrom.h> |
| 55 |
#include <linux/libata.h> |
56 |
#include <linux/libata.h> |
| 56 |
#include <asm/io.h> |
57 |
#include <asm/io.h> |
| 57 |
#include <asm/semaphore.h> |
58 |
#include <asm/semaphore.h> |
|
Lines 4446-4457
static void ata_fill_sg_dumb(struct ata_queued_cmd *qc)
Link Here
|
| 4446 |
int ata_check_atapi_dma(struct ata_queued_cmd *qc) |
4447 |
int ata_check_atapi_dma(struct ata_queued_cmd *qc) |
| 4447 |
{ |
4448 |
{ |
| 4448 |
struct ata_port *ap = qc->ap; |
4449 |
struct ata_port *ap = qc->ap; |
| 4449 |
|
4450 |
struct scsi_cmnd *cmd = qc->scsicmd; |
| 4450 |
/* Don't allow DMA if it isn't multiple of 16 bytes. Quite a |
4451 |
u8 *cdb = cmd->cmnd; |
| 4451 |
* few ATAPI devices choke on such DMA requests. |
4452 |
|
| 4452 |
*/ |
4453 |
/* some drives can only do ATAPI DMA on read/write */ |
| 4453 |
if (unlikely(qc->nbytes & 15)) |
4454 |
switch (cdb[0]) { |
|
|
4455 |
case READ_10: |
| 4456 |
case WRITE_10: |
| 4457 |
case READ_12: |
| 4458 |
case WRITE_12: |
| 4459 |
case READ_6: |
| 4460 |
case WRITE_6: |
| 4461 |
case GPCMD_READ_CD: |
| 4462 |
case GPCMD_READ_CD_MSF: |
| 4463 |
case GPCMD_WRITE_AND_VERIFY_10: |
| 4464 |
/* atapi dma maybe ok */ |
| 4465 |
break; |
| 4466 |
default: |
| 4467 |
/* turn off atapi dma */ |
| 4454 |
return 1; |
4468 |
return 1; |
|
|
4469 |
} |
| 4455 |
|
4470 |
|
| 4456 |
if (ap->ops->check_atapi_dma) |
4471 |
if (ap->ops->check_atapi_dma) |
| 4457 |
return ap->ops->check_atapi_dma(qc); |
4472 |
return ap->ops->check_atapi_dma(qc); |