1*0Sstevel@tonic-gate /* 2*0Sstevel@tonic-gate * CDDL HEADER START 3*0Sstevel@tonic-gate * 4*0Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*0Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*0Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*0Sstevel@tonic-gate * with the License. 8*0Sstevel@tonic-gate * 9*0Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*0Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*0Sstevel@tonic-gate * See the License for the specific language governing permissions 12*0Sstevel@tonic-gate * and limitations under the License. 13*0Sstevel@tonic-gate * 14*0Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*0Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*0Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*0Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*0Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*0Sstevel@tonic-gate * 20*0Sstevel@tonic-gate * CDDL HEADER END 21*0Sstevel@tonic-gate */ 22*0Sstevel@tonic-gate /* 23*0Sstevel@tonic-gate * Copyright (c) 1989 Sun Microsystems, Inc. 24*0Sstevel@tonic-gate */ 25*0Sstevel@tonic-gate 26*0Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 27*0Sstevel@tonic-gate 28*0Sstevel@tonic-gate /* 29*0Sstevel@tonic-gate * 30*0Sstevel@tonic-gate * Defines for SCSI direct access devices modified for CDROM, based on sddef.h 31*0Sstevel@tonic-gate * 32*0Sstevel@tonic-gate */ 33*0Sstevel@tonic-gate 34*0Sstevel@tonic-gate /* 35*0Sstevel@tonic-gate * CDROM io controls type definitions 36*0Sstevel@tonic-gate */ 37*0Sstevel@tonic-gate struct cdrom_msf { 38*0Sstevel@tonic-gate unsigned char cdmsf_min0; /* starting minute */ 39*0Sstevel@tonic-gate unsigned char cdmsf_sec0; /* starting second */ 40*0Sstevel@tonic-gate unsigned char cdmsf_frame0; /* starting frame */ 41*0Sstevel@tonic-gate unsigned char cdmsf_min1; /* ending minute */ 42*0Sstevel@tonic-gate unsigned char cdmsf_sec1; /* ending second */ 43*0Sstevel@tonic-gate unsigned char cdmsf_frame1; /* ending frame */ 44*0Sstevel@tonic-gate }; 45*0Sstevel@tonic-gate 46*0Sstevel@tonic-gate struct cdrom_ti { 47*0Sstevel@tonic-gate unsigned char cdti_trk0; /* starting track */ 48*0Sstevel@tonic-gate unsigned char cdti_ind0; /* starting index */ 49*0Sstevel@tonic-gate unsigned char cdti_trk1; /* ending track */ 50*0Sstevel@tonic-gate unsigned char cdti_ind1; /* ending index */ 51*0Sstevel@tonic-gate }; 52*0Sstevel@tonic-gate 53*0Sstevel@tonic-gate struct cdrom_tochdr { 54*0Sstevel@tonic-gate unsigned char cdth_trk0; /* starting track */ 55*0Sstevel@tonic-gate unsigned char cdth_trk1; /* ending track */ 56*0Sstevel@tonic-gate }; 57*0Sstevel@tonic-gate 58*0Sstevel@tonic-gate struct cdrom_tocentry { 59*0Sstevel@tonic-gate unsigned char cdte_track; 60*0Sstevel@tonic-gate unsigned char cdte_adr :4; 61*0Sstevel@tonic-gate unsigned char cdte_ctrl :4; 62*0Sstevel@tonic-gate unsigned char cdte_format; 63*0Sstevel@tonic-gate union { 64*0Sstevel@tonic-gate struct { 65*0Sstevel@tonic-gate unsigned char minute; 66*0Sstevel@tonic-gate unsigned char second; 67*0Sstevel@tonic-gate unsigned char frame; 68*0Sstevel@tonic-gate } msf; 69*0Sstevel@tonic-gate int lba; 70*0Sstevel@tonic-gate } cdte_addr; 71*0Sstevel@tonic-gate unsigned char cdte_datamode; 72*0Sstevel@tonic-gate }; 73*0Sstevel@tonic-gate 74*0Sstevel@tonic-gate struct cdrom_subchnl { 75*0Sstevel@tonic-gate unsigned char cdsc_format; 76*0Sstevel@tonic-gate unsigned char cdsc_audiostatus; 77*0Sstevel@tonic-gate unsigned char cdsc_adr: 4; 78*0Sstevel@tonic-gate unsigned char cdsc_ctrl: 4; 79*0Sstevel@tonic-gate unsigned char cdsc_trk; 80*0Sstevel@tonic-gate unsigned char cdsc_ind; 81*0Sstevel@tonic-gate union { 82*0Sstevel@tonic-gate struct { 83*0Sstevel@tonic-gate unsigned char minute; 84*0Sstevel@tonic-gate unsigned char second; 85*0Sstevel@tonic-gate unsigned char frame; 86*0Sstevel@tonic-gate } msf; 87*0Sstevel@tonic-gate int lba; 88*0Sstevel@tonic-gate } cdsc_absaddr; 89*0Sstevel@tonic-gate union { 90*0Sstevel@tonic-gate struct { 91*0Sstevel@tonic-gate unsigned char minute; 92*0Sstevel@tonic-gate unsigned char second; 93*0Sstevel@tonic-gate unsigned char frame; 94*0Sstevel@tonic-gate } msf; 95*0Sstevel@tonic-gate int lba; 96*0Sstevel@tonic-gate } cdsc_reladdr; 97*0Sstevel@tonic-gate }; 98*0Sstevel@tonic-gate 99*0Sstevel@tonic-gate /* 100*0Sstevel@tonic-gate * definition of audio volume control structure 101*0Sstevel@tonic-gate */ 102*0Sstevel@tonic-gate struct cdrom_volctrl { 103*0Sstevel@tonic-gate unsigned char channel0; 104*0Sstevel@tonic-gate unsigned char channel1; 105*0Sstevel@tonic-gate unsigned char channel2; 106*0Sstevel@tonic-gate unsigned char channel3; 107*0Sstevel@tonic-gate }; 108*0Sstevel@tonic-gate 109*0Sstevel@tonic-gate struct cdrom_read { 110*0Sstevel@tonic-gate int cdread_lba; 111*0Sstevel@tonic-gate caddr_t cdread_bufaddr; 112*0Sstevel@tonic-gate int cdread_buflen; 113*0Sstevel@tonic-gate }; 114*0Sstevel@tonic-gate 115*0Sstevel@tonic-gate /* 116*0Sstevel@tonic-gate * CDROM io control commands 117*0Sstevel@tonic-gate */ 118*0Sstevel@tonic-gate #define CDROMPAUSE _IO(c, 10) /* Pause Audio Operation */ 119*0Sstevel@tonic-gate 120*0Sstevel@tonic-gate #define CDROMRESUME _IO(c, 11) /* Resume paused Audio Operation */ 121*0Sstevel@tonic-gate 122*0Sstevel@tonic-gate #define CDROMPLAYMSF _IOW(c, 12, struct cdrom_msf) /* Play Audio MSF */ 123*0Sstevel@tonic-gate #define CDROMPLAYTRKIND _IOW(c, 13, struct cdrom_ti) /* 124*0Sstevel@tonic-gate * Play Audio 125*0Sstevel@tonic-gate ` * Track/index 126*0Sstevel@tonic-gate */ 127*0Sstevel@tonic-gate #define CDROMREADTOCHDR \ 128*0Sstevel@tonic-gate _IOR(c, 103, struct cdrom_tochdr) /* Read TOC header */ 129*0Sstevel@tonic-gate #define CDROMREADTOCENTRY \ 130*0Sstevel@tonic-gate _IOWR(c, 104, struct cdrom_tocentry) /* Read a TOC entry */ 131*0Sstevel@tonic-gate 132*0Sstevel@tonic-gate #define CDROMSTOP _IO(c, 105) /* Stop the cdrom drive */ 133*0Sstevel@tonic-gate 134*0Sstevel@tonic-gate #define CDROMSTART _IO(c, 106) /* Start the cdrom drive */ 135*0Sstevel@tonic-gate 136*0Sstevel@tonic-gate #define CDROMEJECT _IO(c, 107) /* Ejects the cdrom caddy */ 137*0Sstevel@tonic-gate 138*0Sstevel@tonic-gate #define CDROMVOLCTRL \ 139*0Sstevel@tonic-gate _IOW(c, 14, struct cdrom_volctrl) /* control output volume */ 140*0Sstevel@tonic-gate 141*0Sstevel@tonic-gate #define CDROMSUBCHNL \ 142*0Sstevel@tonic-gate _IOWR(c, 108, struct cdrom_subchnl) /* read the subchannel data */ 143*0Sstevel@tonic-gate 144*0Sstevel@tonic-gate #define CDROMREADMODE2 \ 145*0Sstevel@tonic-gate _IOW(c, 110, struct cdrom_read) /* read CDROM mode 2 data */ 146*0Sstevel@tonic-gate 147*0Sstevel@tonic-gate #define CDROMREADMODE1 \ 148*0Sstevel@tonic-gate _IOW(c, 111, struct cdrom_read) /* read CDROM mode 1 data */ 149*0Sstevel@tonic-gate 150