1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 24*7c478bd9Sstevel@tonic-gate * Use is subject to license terms. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate #ifndef _SYS_CDIO_H 28*7c478bd9Sstevel@tonic-gate #define _SYS_CDIO_H 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*7c478bd9Sstevel@tonic-gate 32*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 33*7c478bd9Sstevel@tonic-gate extern "C" { 34*7c478bd9Sstevel@tonic-gate #endif 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate /* 37*7c478bd9Sstevel@tonic-gate * CDROM io controls type definitions 38*7c478bd9Sstevel@tonic-gate */ 39*7c478bd9Sstevel@tonic-gate struct cdrom_msf { 40*7c478bd9Sstevel@tonic-gate unsigned char cdmsf_min0; /* starting minute */ 41*7c478bd9Sstevel@tonic-gate unsigned char cdmsf_sec0; /* starting second */ 42*7c478bd9Sstevel@tonic-gate unsigned char cdmsf_frame0; /* starting frame */ 43*7c478bd9Sstevel@tonic-gate unsigned char cdmsf_min1; /* ending minute */ 44*7c478bd9Sstevel@tonic-gate unsigned char cdmsf_sec1; /* ending second */ 45*7c478bd9Sstevel@tonic-gate unsigned char cdmsf_frame1; /* ending frame */ 46*7c478bd9Sstevel@tonic-gate }; 47*7c478bd9Sstevel@tonic-gate 48*7c478bd9Sstevel@tonic-gate struct cdrom_ti { 49*7c478bd9Sstevel@tonic-gate unsigned char cdti_trk0; /* starting track */ 50*7c478bd9Sstevel@tonic-gate unsigned char cdti_ind0; /* starting index */ 51*7c478bd9Sstevel@tonic-gate unsigned char cdti_trk1; /* ending track */ 52*7c478bd9Sstevel@tonic-gate unsigned char cdti_ind1; /* ending index */ 53*7c478bd9Sstevel@tonic-gate }; 54*7c478bd9Sstevel@tonic-gate 55*7c478bd9Sstevel@tonic-gate struct cdrom_tochdr { 56*7c478bd9Sstevel@tonic-gate unsigned char cdth_trk0; /* starting track */ 57*7c478bd9Sstevel@tonic-gate unsigned char cdth_trk1; /* ending track */ 58*7c478bd9Sstevel@tonic-gate }; 59*7c478bd9Sstevel@tonic-gate 60*7c478bd9Sstevel@tonic-gate struct cdrom_tocentry { 61*7c478bd9Sstevel@tonic-gate unsigned char cdte_track; 62*7c478bd9Sstevel@tonic-gate unsigned cdte_adr :4; 63*7c478bd9Sstevel@tonic-gate unsigned cdte_ctrl :4; 64*7c478bd9Sstevel@tonic-gate unsigned char cdte_format; 65*7c478bd9Sstevel@tonic-gate union { 66*7c478bd9Sstevel@tonic-gate struct { 67*7c478bd9Sstevel@tonic-gate unsigned char minute; 68*7c478bd9Sstevel@tonic-gate unsigned char second; 69*7c478bd9Sstevel@tonic-gate unsigned char frame; 70*7c478bd9Sstevel@tonic-gate } msf; 71*7c478bd9Sstevel@tonic-gate int lba; 72*7c478bd9Sstevel@tonic-gate } cdte_addr; 73*7c478bd9Sstevel@tonic-gate unsigned char cdte_datamode; 74*7c478bd9Sstevel@tonic-gate }; 75*7c478bd9Sstevel@tonic-gate 76*7c478bd9Sstevel@tonic-gate /* 77*7c478bd9Sstevel@tonic-gate * CDROM address format definition, for use with struct cdrom_tocentry 78*7c478bd9Sstevel@tonic-gate */ 79*7c478bd9Sstevel@tonic-gate #define CDROM_LBA 0x01 80*7c478bd9Sstevel@tonic-gate #define CDROM_MSF 0x02 81*7c478bd9Sstevel@tonic-gate 82*7c478bd9Sstevel@tonic-gate /* 83*7c478bd9Sstevel@tonic-gate * Bitmask for CD-ROM data track in the cdte_ctrl field 84*7c478bd9Sstevel@tonic-gate * A track is either data or audio. 85*7c478bd9Sstevel@tonic-gate */ 86*7c478bd9Sstevel@tonic-gate #define CDROM_DATA_TRACK 0x04 87*7c478bd9Sstevel@tonic-gate 88*7c478bd9Sstevel@tonic-gate /* 89*7c478bd9Sstevel@tonic-gate * For CDROMREADTOCENTRY, set the cdte_track to CDROM_LEADOUT to get 90*7c478bd9Sstevel@tonic-gate * the information for the leadout track. 91*7c478bd9Sstevel@tonic-gate */ 92*7c478bd9Sstevel@tonic-gate #define CDROM_LEADOUT 0xAA 93*7c478bd9Sstevel@tonic-gate 94*7c478bd9Sstevel@tonic-gate struct cdrom_subchnl { 95*7c478bd9Sstevel@tonic-gate unsigned char cdsc_format; 96*7c478bd9Sstevel@tonic-gate unsigned char cdsc_audiostatus; 97*7c478bd9Sstevel@tonic-gate unsigned cdsc_adr: 4; 98*7c478bd9Sstevel@tonic-gate unsigned cdsc_ctrl: 4; 99*7c478bd9Sstevel@tonic-gate unsigned char cdsc_trk; 100*7c478bd9Sstevel@tonic-gate unsigned char cdsc_ind; 101*7c478bd9Sstevel@tonic-gate union { 102*7c478bd9Sstevel@tonic-gate struct { 103*7c478bd9Sstevel@tonic-gate unsigned char minute; 104*7c478bd9Sstevel@tonic-gate unsigned char second; 105*7c478bd9Sstevel@tonic-gate unsigned char frame; 106*7c478bd9Sstevel@tonic-gate } msf; 107*7c478bd9Sstevel@tonic-gate int lba; 108*7c478bd9Sstevel@tonic-gate } cdsc_absaddr; 109*7c478bd9Sstevel@tonic-gate union { 110*7c478bd9Sstevel@tonic-gate struct { 111*7c478bd9Sstevel@tonic-gate unsigned char minute; 112*7c478bd9Sstevel@tonic-gate unsigned char second; 113*7c478bd9Sstevel@tonic-gate unsigned char frame; 114*7c478bd9Sstevel@tonic-gate } msf; 115*7c478bd9Sstevel@tonic-gate int lba; 116*7c478bd9Sstevel@tonic-gate } cdsc_reladdr; 117*7c478bd9Sstevel@tonic-gate }; 118*7c478bd9Sstevel@tonic-gate 119*7c478bd9Sstevel@tonic-gate /* 120*7c478bd9Sstevel@tonic-gate * Definition for audio status returned from Read Sub-channel 121*7c478bd9Sstevel@tonic-gate */ 122*7c478bd9Sstevel@tonic-gate #define CDROM_AUDIO_INVALID 0x00 /* audio status not supported */ 123*7c478bd9Sstevel@tonic-gate #define CDROM_AUDIO_PLAY 0x11 /* audio play operation in progress */ 124*7c478bd9Sstevel@tonic-gate #define CDROM_AUDIO_PAUSED 0x12 /* audio play operation paused */ 125*7c478bd9Sstevel@tonic-gate #define CDROM_AUDIO_COMPLETED 0x13 /* audio play successfully completed */ 126*7c478bd9Sstevel@tonic-gate #define CDROM_AUDIO_ERROR 0x14 /* audio play stopped due to error */ 127*7c478bd9Sstevel@tonic-gate #define CDROM_AUDIO_NO_STATUS 0x15 /* no current audio status to return */ 128*7c478bd9Sstevel@tonic-gate 129*7c478bd9Sstevel@tonic-gate /* 130*7c478bd9Sstevel@tonic-gate * definition of audio volume control structure 131*7c478bd9Sstevel@tonic-gate */ 132*7c478bd9Sstevel@tonic-gate struct cdrom_volctrl { 133*7c478bd9Sstevel@tonic-gate unsigned char channel0; 134*7c478bd9Sstevel@tonic-gate unsigned char channel1; 135*7c478bd9Sstevel@tonic-gate unsigned char channel2; 136*7c478bd9Sstevel@tonic-gate unsigned char channel3; 137*7c478bd9Sstevel@tonic-gate }; 138*7c478bd9Sstevel@tonic-gate 139*7c478bd9Sstevel@tonic-gate struct cdrom_read { 140*7c478bd9Sstevel@tonic-gate int cdread_lba; 141*7c478bd9Sstevel@tonic-gate caddr_t cdread_bufaddr; 142*7c478bd9Sstevel@tonic-gate int cdread_buflen; 143*7c478bd9Sstevel@tonic-gate }; 144*7c478bd9Sstevel@tonic-gate 145*7c478bd9Sstevel@tonic-gate #if defined(_SYSCALL32) 146*7c478bd9Sstevel@tonic-gate 147*7c478bd9Sstevel@tonic-gate struct cdrom_read32 { 148*7c478bd9Sstevel@tonic-gate int cdread_lba; 149*7c478bd9Sstevel@tonic-gate caddr32_t cdread_bufaddr; 150*7c478bd9Sstevel@tonic-gate int cdread_buflen; 151*7c478bd9Sstevel@tonic-gate }; 152*7c478bd9Sstevel@tonic-gate 153*7c478bd9Sstevel@tonic-gate #define cdrom_read32tocdrom_read(cdrd32, cdrd) \ 154*7c478bd9Sstevel@tonic-gate cdrd->cdread_lba = cdrd32->cdread_lba; \ 155*7c478bd9Sstevel@tonic-gate cdrd->cdread_bufaddr = (caddr_t)(uintptr_t)cdrd32->cdread_bufaddr; \ 156*7c478bd9Sstevel@tonic-gate cdrd->cdread_buflen = cdrd32->cdread_buflen 157*7c478bd9Sstevel@tonic-gate 158*7c478bd9Sstevel@tonic-gate #define cdrom_readtocdrom_read32(cdrd, cdrd32) \ 159*7c478bd9Sstevel@tonic-gate cdrd32->cdread_lba = cdrd->cdread_lba; \ 160*7c478bd9Sstevel@tonic-gate cdrd32->cdread_bufaddr = (caddr32_t)(uintptr_t)cdrd->cdread_bufaddr; \ 161*7c478bd9Sstevel@tonic-gate cdrd32->cdread_buflen = cdrd->cdread_buflen 162*7c478bd9Sstevel@tonic-gate 163*7c478bd9Sstevel@tonic-gate #endif /* _SYSCALL32 */ 164*7c478bd9Sstevel@tonic-gate 165*7c478bd9Sstevel@tonic-gate /* 166*7c478bd9Sstevel@tonic-gate * Definition of CD/DA structure 167*7c478bd9Sstevel@tonic-gate */ 168*7c478bd9Sstevel@tonic-gate struct cdrom_cdda { 169*7c478bd9Sstevel@tonic-gate unsigned int cdda_addr; 170*7c478bd9Sstevel@tonic-gate unsigned int cdda_length; 171*7c478bd9Sstevel@tonic-gate caddr_t cdda_data; 172*7c478bd9Sstevel@tonic-gate unsigned char cdda_subcode; 173*7c478bd9Sstevel@tonic-gate }; 174*7c478bd9Sstevel@tonic-gate 175*7c478bd9Sstevel@tonic-gate #if defined(_SYSCALL32) 176*7c478bd9Sstevel@tonic-gate struct cdrom_cdda32 { 177*7c478bd9Sstevel@tonic-gate unsigned int cdda_addr; 178*7c478bd9Sstevel@tonic-gate unsigned int cdda_length; 179*7c478bd9Sstevel@tonic-gate caddr32_t cdda_data; 180*7c478bd9Sstevel@tonic-gate unsigned char cdda_subcode; 181*7c478bd9Sstevel@tonic-gate }; 182*7c478bd9Sstevel@tonic-gate 183*7c478bd9Sstevel@tonic-gate #define cdrom_cdda32tocdrom_cdda(cdda32, cdda) \ 184*7c478bd9Sstevel@tonic-gate cdda->cdda_addr = cdda32->cdda_addr; \ 185*7c478bd9Sstevel@tonic-gate cdda->cdda_length = cdda32->cdda_length; \ 186*7c478bd9Sstevel@tonic-gate cdda->cdda_data = (caddr_t)(uintptr_t)cdda32->cdda_data; \ 187*7c478bd9Sstevel@tonic-gate cdda->cdda_subcode = cdda32->cdda_subcode 188*7c478bd9Sstevel@tonic-gate 189*7c478bd9Sstevel@tonic-gate #define cdrom_cddatocdrom_cdda32(cdda, cdda32) \ 190*7c478bd9Sstevel@tonic-gate cdda32->cdda_addr = cdda->cdda_addr; \ 191*7c478bd9Sstevel@tonic-gate cdda32->cdda_length = cdda->cdda_length; \ 192*7c478bd9Sstevel@tonic-gate cdda32->cdda_data = (caddr32_t)(uintptr_t)cdda->cdda_data; \ 193*7c478bd9Sstevel@tonic-gate cdda32->cdda_subcode = cdda->cdda_subcode 194*7c478bd9Sstevel@tonic-gate 195*7c478bd9Sstevel@tonic-gate #endif /* _SYSCALL32 */ 196*7c478bd9Sstevel@tonic-gate 197*7c478bd9Sstevel@tonic-gate /* 198*7c478bd9Sstevel@tonic-gate * Definitions for cdda_subcode field 199*7c478bd9Sstevel@tonic-gate */ 200*7c478bd9Sstevel@tonic-gate #define CDROM_DA_NO_SUBCODE 0x00 /* CD/DA data with no subcode */ 201*7c478bd9Sstevel@tonic-gate #define CDROM_DA_SUBQ 0x01 /* CD/DA data with sub Q code */ 202*7c478bd9Sstevel@tonic-gate #define CDROM_DA_ALL_SUBCODE 0x02 /* CD/DA data with all subcode */ 203*7c478bd9Sstevel@tonic-gate #define CDROM_DA_SUBCODE_ONLY 0x03 /* All subcode only */ 204*7c478bd9Sstevel@tonic-gate 205*7c478bd9Sstevel@tonic-gate /* 206*7c478bd9Sstevel@tonic-gate * Definition of CD/XA structure 207*7c478bd9Sstevel@tonic-gate */ 208*7c478bd9Sstevel@tonic-gate struct cdrom_cdxa { 209*7c478bd9Sstevel@tonic-gate unsigned int cdxa_addr; 210*7c478bd9Sstevel@tonic-gate unsigned int cdxa_length; 211*7c478bd9Sstevel@tonic-gate caddr_t cdxa_data; 212*7c478bd9Sstevel@tonic-gate unsigned char cdxa_format; 213*7c478bd9Sstevel@tonic-gate }; 214*7c478bd9Sstevel@tonic-gate 215*7c478bd9Sstevel@tonic-gate #if defined(_SYSCALL32) 216*7c478bd9Sstevel@tonic-gate 217*7c478bd9Sstevel@tonic-gate struct cdrom_cdxa32 { 218*7c478bd9Sstevel@tonic-gate unsigned int cdxa_addr; 219*7c478bd9Sstevel@tonic-gate unsigned int cdxa_length; 220*7c478bd9Sstevel@tonic-gate caddr32_t cdxa_data; 221*7c478bd9Sstevel@tonic-gate unsigned char cdxa_format; 222*7c478bd9Sstevel@tonic-gate }; 223*7c478bd9Sstevel@tonic-gate 224*7c478bd9Sstevel@tonic-gate #define cdrom_cdxa32tocdrom_cdxa(cdxa32, cdxa) \ 225*7c478bd9Sstevel@tonic-gate cdxa->cdxa_addr = cdxa32->cdxa_addr; \ 226*7c478bd9Sstevel@tonic-gate cdxa->cdxa_length = cdxa32->cdxa_length; \ 227*7c478bd9Sstevel@tonic-gate cdxa->cdxa_data = (caddr_t)(uintptr_t)cdxa32->cdxa_data; \ 228*7c478bd9Sstevel@tonic-gate cdxa->cdxa_format = cdxa32->cdxa_format 229*7c478bd9Sstevel@tonic-gate 230*7c478bd9Sstevel@tonic-gate #define cdrom_cdxatocdrom_cdxa32(cdxa, cdxa32) \ 231*7c478bd9Sstevel@tonic-gate cdxa32->cdxa_addr = cdxa->cdxa_addr; \ 232*7c478bd9Sstevel@tonic-gate cdxa32->cdxa_length = cdxa->cdxa_length; \ 233*7c478bd9Sstevel@tonic-gate cdxa32->cdxa_data = (caddr32_t)(uintptr_t)cdxa->cdxa_data; \ 234*7c478bd9Sstevel@tonic-gate cdxa32->cdxa_format = cdxa->cdxa_format 235*7c478bd9Sstevel@tonic-gate 236*7c478bd9Sstevel@tonic-gate #endif /* _SYSCALL32 */ 237*7c478bd9Sstevel@tonic-gate 238*7c478bd9Sstevel@tonic-gate /* 239*7c478bd9Sstevel@tonic-gate * Definitions for cdxa_format field 240*7c478bd9Sstevel@tonic-gate */ 241*7c478bd9Sstevel@tonic-gate #define CDROM_XA_DATA 0x00 /* CD/XA data only */ 242*7c478bd9Sstevel@tonic-gate #define CDROM_XA_SECTOR_DATA 0x01 /* CD/XA all sector data */ 243*7c478bd9Sstevel@tonic-gate #define CDROM_XA_DATA_W_ERROR 0x02 /* CD/XA data with error flags data */ 244*7c478bd9Sstevel@tonic-gate 245*7c478bd9Sstevel@tonic-gate /* 246*7c478bd9Sstevel@tonic-gate * Definition of subcode structure 247*7c478bd9Sstevel@tonic-gate */ 248*7c478bd9Sstevel@tonic-gate struct cdrom_subcode { 249*7c478bd9Sstevel@tonic-gate unsigned int cdsc_length; 250*7c478bd9Sstevel@tonic-gate caddr_t cdsc_addr; 251*7c478bd9Sstevel@tonic-gate }; 252*7c478bd9Sstevel@tonic-gate 253*7c478bd9Sstevel@tonic-gate #if defined(_SYSCALL32) 254*7c478bd9Sstevel@tonic-gate 255*7c478bd9Sstevel@tonic-gate struct cdrom_subcode32 { 256*7c478bd9Sstevel@tonic-gate unsigned int cdsc_length; 257*7c478bd9Sstevel@tonic-gate caddr32_t cdsc_addr; 258*7c478bd9Sstevel@tonic-gate }; 259*7c478bd9Sstevel@tonic-gate 260*7c478bd9Sstevel@tonic-gate #define cdrom_subcode32tocdrom_subcode(cdsc32, cdsc) \ 261*7c478bd9Sstevel@tonic-gate cdsc->cdsc_length = cdsc32->cdsc_length; \ 262*7c478bd9Sstevel@tonic-gate cdsc->cdsc_addr = (caddr_t)(uintptr_t)cdsc32->cdsc_addr 263*7c478bd9Sstevel@tonic-gate 264*7c478bd9Sstevel@tonic-gate #define cdrom_subcodetocdrom_subcode32(cdsc, cdsc32) \ 265*7c478bd9Sstevel@tonic-gate cdsc32->cdsc_length = cdsc->cdsc_length; \ 266*7c478bd9Sstevel@tonic-gate cdsc32->cdsc_addr = (caddr32_t)(uintptr_t)cdsc->cdsc_addr 267*7c478bd9Sstevel@tonic-gate 268*7c478bd9Sstevel@tonic-gate #endif /* _SYSCALL32 */ 269*7c478bd9Sstevel@tonic-gate 270*7c478bd9Sstevel@tonic-gate /* 271*7c478bd9Sstevel@tonic-gate * Definitions for block size supported 272*7c478bd9Sstevel@tonic-gate */ 273*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_512 512 274*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_1024 1024 275*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2048 2048 276*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2056 2056 277*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2324 2324 278*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2336 2336 279*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2340 2340 280*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2352 2352 281*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2368 2368 282*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2448 2448 283*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2646 2646 284*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_2647 2647 285*7c478bd9Sstevel@tonic-gate #define CDROM_BLK_SUBCODE 96 286*7c478bd9Sstevel@tonic-gate 287*7c478bd9Sstevel@tonic-gate /* 288*7c478bd9Sstevel@tonic-gate * Definitions for drive speed supported 289*7c478bd9Sstevel@tonic-gate */ 290*7c478bd9Sstevel@tonic-gate #define CDROM_NORMAL_SPEED 0x00 291*7c478bd9Sstevel@tonic-gate #define CDROM_DOUBLE_SPEED 0x01 292*7c478bd9Sstevel@tonic-gate #define CDROM_QUAD_SPEED 0x03 293*7c478bd9Sstevel@tonic-gate #define CDROM_TWELVE_SPEED 0x0C 294*7c478bd9Sstevel@tonic-gate #define CDROM_MAXIMUM_SPEED 0xff 295*7c478bd9Sstevel@tonic-gate 296*7c478bd9Sstevel@tonic-gate /* 297*7c478bd9Sstevel@tonic-gate * CDROM io control commands 298*7c478bd9Sstevel@tonic-gate */ 299*7c478bd9Sstevel@tonic-gate #define CDIOC (0x04 << 8) 300*7c478bd9Sstevel@tonic-gate #define CDROMPAUSE (CDIOC|151) /* Pause Audio Operation */ 301*7c478bd9Sstevel@tonic-gate #define CDROMRESUME (CDIOC|152) /* Resume paused Audio Operation */ 302*7c478bd9Sstevel@tonic-gate #define CDROMPLAYMSF (CDIOC|153) /* Play Audio MSF */ 303*7c478bd9Sstevel@tonic-gate #define CDROMPLAYTRKIND (CDIOC|154) /* Play Audio Track/index */ 304*7c478bd9Sstevel@tonic-gate #define CDROMREADTOCHDR (CDIOC|155) /* Read TOC header */ 305*7c478bd9Sstevel@tonic-gate #define CDROMREADTOCENTRY (CDIOC|156) /* Read a TOC entry */ 306*7c478bd9Sstevel@tonic-gate #define CDROMSTOP (CDIOC|157) /* Stop the cdrom drive */ 307*7c478bd9Sstevel@tonic-gate #define CDROMSTART (CDIOC|158) /* Start the cdrom drive */ 308*7c478bd9Sstevel@tonic-gate #define CDROMEJECT (CDIOC|159) /* Ejects the cdrom caddy */ 309*7c478bd9Sstevel@tonic-gate #define CDROMVOLCTRL (CDIOC|160) /* control output volume */ 310*7c478bd9Sstevel@tonic-gate #define CDROMSUBCHNL (CDIOC|161) /* read the subchannel data */ 311*7c478bd9Sstevel@tonic-gate #define CDROMREADMODE2 (CDIOC|162) /* read CDROM mode 2 data */ 312*7c478bd9Sstevel@tonic-gate #define CDROMREADMODE1 (CDIOC|163) /* read CDROM mode 1 data */ 313*7c478bd9Sstevel@tonic-gate 314*7c478bd9Sstevel@tonic-gate #define CDROMREADOFFSET (CDIOC|164) /* read multi-session offset */ 315*7c478bd9Sstevel@tonic-gate 316*7c478bd9Sstevel@tonic-gate #define CDROMGBLKMODE (CDIOC|165) /* get current block mode */ 317*7c478bd9Sstevel@tonic-gate #define CDROMSBLKMODE (CDIOC|166) /* set current block mode */ 318*7c478bd9Sstevel@tonic-gate #define CDROMCDDA (CDIOC|167) /* read CD/DA data */ 319*7c478bd9Sstevel@tonic-gate #define CDROMCDXA (CDIOC|168) /* read CD/XA data */ 320*7c478bd9Sstevel@tonic-gate #define CDROMSUBCODE (CDIOC|169) /* read subcode */ 321*7c478bd9Sstevel@tonic-gate #define CDROMGDRVSPEED (CDIOC|170) /* get current drive speed */ 322*7c478bd9Sstevel@tonic-gate #define CDROMSDRVSPEED (CDIOC|171) /* set current drive speed */ 323*7c478bd9Sstevel@tonic-gate 324*7c478bd9Sstevel@tonic-gate #define CDROMCLOSETRAY (CDIOC|172) /* close cd tray,load media */ 325*7c478bd9Sstevel@tonic-gate 326*7c478bd9Sstevel@tonic-gate /* 327*7c478bd9Sstevel@tonic-gate * Additional commands for CD-ROM 328*7c478bd9Sstevel@tonic-gate */ 329*7c478bd9Sstevel@tonic-gate /* 330*7c478bd9Sstevel@tonic-gate * 331*7c478bd9Sstevel@tonic-gate * Group 2 Commands 332*7c478bd9Sstevel@tonic-gate * 333*7c478bd9Sstevel@tonic-gate */ 334*7c478bd9Sstevel@tonic-gate 335*7c478bd9Sstevel@tonic-gate #define SCMD_READ_TOC 0x43 /* optional SCSI command */ 336*7c478bd9Sstevel@tonic-gate #define SCMD_PLAYAUDIO_MSF 0x47 /* optional SCSI command */ 337*7c478bd9Sstevel@tonic-gate #define SCMD_PLAYAUDIO_TI 0x48 /* optional SCSI command */ 338*7c478bd9Sstevel@tonic-gate #define SCMD_PAUSE_RESUME 0x4B /* optional SCSI command */ 339*7c478bd9Sstevel@tonic-gate #define SCMD_READ_SUBCHANNEL 0x42 /* optional SCSI command */ 340*7c478bd9Sstevel@tonic-gate #define SCMD_PLAYAUDIO10 0x45 /* optional SCSI command */ 341*7c478bd9Sstevel@tonic-gate #define SCMD_PLAYTRACK_REL10 0x49 /* optional SCSI command */ 342*7c478bd9Sstevel@tonic-gate #define SCMD_READ_HEADER 0x44 /* optional SCSI command */ 343*7c478bd9Sstevel@tonic-gate 344*7c478bd9Sstevel@tonic-gate /* 345*7c478bd9Sstevel@tonic-gate * 346*7c478bd9Sstevel@tonic-gate * Group 5 Commands 347*7c478bd9Sstevel@tonic-gate * 348*7c478bd9Sstevel@tonic-gate */ 349*7c478bd9Sstevel@tonic-gate #define SCMD_PLAYAUDIO12 0xA5 /* optional SCSI command */ 350*7c478bd9Sstevel@tonic-gate #define SCMD_PLAYTRACK_REL12 0xA9 /* optional SCSI command */ 351*7c478bd9Sstevel@tonic-gate #define SCMD_READ_CD 0xBE /* Universal way of accessing CD data */ 352*7c478bd9Sstevel@tonic-gate 353*7c478bd9Sstevel@tonic-gate /* 354*7c478bd9Sstevel@tonic-gate * These defines are for SCMD_READ_CD command. 355*7c478bd9Sstevel@tonic-gate * See Expected Sector Type Field Definition (SCSI MMC-2 Spec section 6.1.15) 356*7c478bd9Sstevel@tonic-gate * This information is used to figure out which block size to use. 357*7c478bd9Sstevel@tonic-gate */ 358*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_ALLTYPE 0x0 /* All Types */ 359*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_CDDA 0x1 /* Only CD-DA */ 360*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_MODE1 0x2 /* Only Yellow Book 2048 bytes */ 361*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_MODE2 0x3 /* Only Yellow Book 2336 byte sectors */ 362*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_MODE2FORM1 0x4 /* Only sectors with 2048 bytes */ 363*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_MODE2FORM2 0x5 /* Only sectors with 2324 bytes */ 364*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_RSVD1 0x6 /* reserved */ 365*7c478bd9Sstevel@tonic-gate #define READ_CD_EST_RSVD2 0x7 /* reserved */ 366*7c478bd9Sstevel@tonic-gate 367*7c478bd9Sstevel@tonic-gate 368*7c478bd9Sstevel@tonic-gate /* 369*7c478bd9Sstevel@tonic-gate * 370*7c478bd9Sstevel@tonic-gate * Group 6 Commands 371*7c478bd9Sstevel@tonic-gate * 372*7c478bd9Sstevel@tonic-gate */ 373*7c478bd9Sstevel@tonic-gate 374*7c478bd9Sstevel@tonic-gate #define SCMD_CD_PLAYBACK_CONTROL 0xC9 /* SONY unique SCSI command */ 375*7c478bd9Sstevel@tonic-gate #define SCMD_CD_PLAYBACK_STATUS 0xC4 /* SONY unique SCSI command */ 376*7c478bd9Sstevel@tonic-gate #define SCMD_READ_CDDA 0xD8 /* Vendor unique SCSI command */ 377*7c478bd9Sstevel@tonic-gate #define SCMD_READ_CDXA 0xDB /* Vendor unique SCSI command */ 378*7c478bd9Sstevel@tonic-gate #define SCMD_READ_ALL_SUBCODES 0xDF /* Vendor unique SCSI command */ 379*7c478bd9Sstevel@tonic-gate 380*7c478bd9Sstevel@tonic-gate #define CDROM_MODE2_SIZE 2336 381*7c478bd9Sstevel@tonic-gate 382*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 383*7c478bd9Sstevel@tonic-gate } 384*7c478bd9Sstevel@tonic-gate #endif 385*7c478bd9Sstevel@tonic-gate 386*7c478bd9Sstevel@tonic-gate #endif /* _SYS_CDIO_H */ 387