diff options
Diffstat (limited to 'include/linux/cdrom.h')
-rw-r--r-- | include/linux/cdrom.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/linux/cdrom.h b/include/linux/cdrom.h index c6d3e22c0624..a5cd2047624e 100644 --- a/include/linux/cdrom.h +++ b/include/linux/cdrom.h | |||
@@ -451,6 +451,7 @@ struct cdrom_generic_command | |||
451 | #define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e | 451 | #define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e |
452 | #define GPCMD_READ_10 0x28 | 452 | #define GPCMD_READ_10 0x28 |
453 | #define GPCMD_READ_12 0xa8 | 453 | #define GPCMD_READ_12 0xa8 |
454 | #define GPCMD_READ_BUFFER 0x3c | ||
454 | #define GPCMD_READ_BUFFER_CAPACITY 0x5c | 455 | #define GPCMD_READ_BUFFER_CAPACITY 0x5c |
455 | #define GPCMD_READ_CDVD_CAPACITY 0x25 | 456 | #define GPCMD_READ_CDVD_CAPACITY 0x25 |
456 | #define GPCMD_READ_CD 0xbe | 457 | #define GPCMD_READ_CD 0xbe |
@@ -480,7 +481,9 @@ struct cdrom_generic_command | |||
480 | #define GPCMD_TEST_UNIT_READY 0x00 | 481 | #define GPCMD_TEST_UNIT_READY 0x00 |
481 | #define GPCMD_VERIFY_10 0x2f | 482 | #define GPCMD_VERIFY_10 0x2f |
482 | #define GPCMD_WRITE_10 0x2a | 483 | #define GPCMD_WRITE_10 0x2a |
484 | #define GPCMD_WRITE_12 0xaa | ||
483 | #define GPCMD_WRITE_AND_VERIFY_10 0x2e | 485 | #define GPCMD_WRITE_AND_VERIFY_10 0x2e |
486 | #define GPCMD_WRITE_BUFFER 0x3b | ||
484 | /* This is listed as optional in ATAPI 2.6, but is (curiously) | 487 | /* This is listed as optional in ATAPI 2.6, but is (curiously) |
485 | * missing from Mt. Fuji, Table 57. It _is_ mentioned in Mt. Fuji | 488 | * missing from Mt. Fuji, Table 57. It _is_ mentioned in Mt. Fuji |
486 | * Table 377 as an MMC command for SCSi devices though... Most ATAPI | 489 | * Table 377 as an MMC command for SCSi devices though... Most ATAPI |
@@ -1184,6 +1187,20 @@ struct media_event_desc { | |||
1184 | 1187 | ||
1185 | extern int cdrom_get_media_event(struct cdrom_device_info *cdi, struct media_event_desc *med); | 1188 | extern int cdrom_get_media_event(struct cdrom_device_info *cdi, struct media_event_desc *med); |
1186 | 1189 | ||
1190 | static inline void lba_to_msf(int lba, u8 *m, u8 *s, u8 *f) | ||
1191 | { | ||
1192 | lba += CD_MSF_OFFSET; | ||
1193 | lba &= 0xffffff; /* negative lbas use only 24 bits */ | ||
1194 | *m = lba / (CD_SECS * CD_FRAMES); | ||
1195 | lba %= (CD_SECS * CD_FRAMES); | ||
1196 | *s = lba / CD_FRAMES; | ||
1197 | *f = lba % CD_FRAMES; | ||
1198 | } | ||
1199 | |||
1200 | static inline int msf_to_lba(u8 m, u8 s, u8 f) | ||
1201 | { | ||
1202 | return (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET; | ||
1203 | } | ||
1187 | #endif /* End of kernel only stuff */ | 1204 | #endif /* End of kernel only stuff */ |
1188 | 1205 | ||
1189 | #endif /* _LINUX_CDROM_H */ | 1206 | #endif /* _LINUX_CDROM_H */ |