--- linux-2.6.5-SLES9_SP2_BRANCH_20050418161416/drivers/scsi/pata_pdc2027x.c.ori 2005-04-19 15:34:15.000000000 +0800 +++ linux-2.6.5-SLES9_SP2_BRANCH_20050418161416/drivers/scsi/pata_pdc2027x.c 2005-04-26 21:44:18.849971712 +0800 @@ -29,7 +29,7 @@ #include #define DRV_NAME "pata_pdc2027x" -#define DRV_VERSION "0.60" +#define DRV_VERSION "0.61" #undef PDC_DEBUG #ifdef PDC_DEBUG @@ -445,11 +445,24 @@ static int pdc2027x_check_atapi_dma(struct ata_queued_cmd *qc) { struct scsi_cmnd *cmd = qc->scsicmd; - int rc = 0; + u8 *scsicmd = cmd->cmnd; + int rc = 1; /* atapi dma off by default */ - /* pdc2027x can only do ATAPI DMA for specific buffer size */ - if (cmd->request_bufflen % 256) - rc = 1; + switch (scsicmd[0]) { + case READ_6: + case READ_10: + case READ_12: + case READ_16: + + case WRITE_6: + case WRITE_10: + case WRITE_12: + case WRITE_16: + rc = 0; + break; + default: + ; + } return rc; }