aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/libata.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/libata.h')
-rw-r--r--include/linux/libata.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index cc4eaef6f889..03afcd63202d 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -35,6 +35,7 @@
35#include <linux/workqueue.h> 35#include <linux/workqueue.h>
36#include <scsi/scsi_host.h> 36#include <scsi/scsi_host.h>
37#include <linux/acpi.h> 37#include <linux/acpi.h>
38#include <linux/cdrom.h>
38 39
39/* 40/*
40 * Define if arch has non-standard setup. This is a _PCI_ standard 41 * Define if arch has non-standard setup. This is a _PCI_ standard
@@ -346,6 +347,12 @@ enum {
346 ATA_DMA_MASK_ATA = (1 << 0), /* DMA on ATA Disk */ 347 ATA_DMA_MASK_ATA = (1 << 0), /* DMA on ATA Disk */
347 ATA_DMA_MASK_ATAPI = (1 << 1), /* DMA on ATAPI */ 348 ATA_DMA_MASK_ATAPI = (1 << 1), /* DMA on ATAPI */
348 ATA_DMA_MASK_CFA = (1 << 2), /* DMA on CF Card */ 349 ATA_DMA_MASK_CFA = (1 << 2), /* DMA on CF Card */
350
351 /* ATAPI command types */
352 ATAPI_READ = 0, /* READs */
353 ATAPI_WRITE = 1, /* WRITEs */
354 ATAPI_READ_CD = 2, /* READ CD [MSF] */
355 ATAPI_MISC = 3, /* the rest */
349}; 356};
350 357
351enum ata_xfer_mask { 358enum ata_xfer_mask {
@@ -1408,6 +1415,27 @@ static inline int ata_try_flush_cache(const struct ata_device *dev)
1408 ata_id_has_flush_ext(dev->id); 1415 ata_id_has_flush_ext(dev->id);
1409} 1416}
1410 1417
1418static inline int atapi_cmd_type(u8 opcode)
1419{
1420 switch (opcode) {
1421 case GPCMD_READ_10:
1422 case GPCMD_READ_12:
1423 return ATAPI_READ;
1424
1425 case GPCMD_WRITE_10:
1426 case GPCMD_WRITE_12:
1427 case GPCMD_WRITE_AND_VERIFY_10:
1428 return ATAPI_WRITE;
1429
1430 case GPCMD_READ_CD:
1431 case GPCMD_READ_CD_MSF:
1432 return ATAPI_READ_CD;
1433
1434 default:
1435 return ATAPI_MISC;
1436 }
1437}
1438
1411static inline unsigned int ac_err_mask(u8 status) 1439static inline unsigned int ac_err_mask(u8 status)
1412{ 1440{
1413 if (status & (ATA_BUSY | ATA_DRQ)) 1441 if (status & (ATA_BUSY | ATA_DRQ))