/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE * or http://www.opensolaris.org/os/licensing. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at usr/src/OPENSOLARIS.LICENSE. * If applicable, add the following below this CDDL HEADER, with the * fields enclosed by brackets "[]" replaced with your own identifying * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END */ /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" /* * * Defines for SCSI direct access devices modified for CDROM, based on sddef.h * */ /* * CDROM io controls type definitions */ struct cdrom_msf { unsigned char cdmsf_min0; /* starting minute */ unsigned char cdmsf_sec0; /* starting second */ unsigned char cdmsf_frame0; /* starting frame */ unsigned char cdmsf_min1; /* ending minute */ unsigned char cdmsf_sec1; /* ending second */ unsigned char cdmsf_frame1; /* ending frame */ }; struct cdrom_ti { unsigned char cdti_trk0; /* starting track */ unsigned char cdti_ind0; /* starting index */ unsigned char cdti_trk1; /* ending track */ unsigned char cdti_ind1; /* ending index */ }; struct cdrom_tochdr { unsigned char cdth_trk0; /* starting track */ unsigned char cdth_trk1; /* ending track */ }; struct cdrom_tocentry { unsigned char cdte_track; unsigned char cdte_adr :4; unsigned char cdte_ctrl :4; unsigned char cdte_format; union { struct { unsigned char minute; unsigned char second; unsigned char frame; } msf; int lba; } cdte_addr; unsigned char cdte_datamode; }; struct cdrom_subchnl { unsigned char cdsc_format; unsigned char cdsc_audiostatus; unsigned char cdsc_adr: 4; unsigned char cdsc_ctrl: 4; unsigned char cdsc_trk; unsigned char cdsc_ind; union { struct { unsigned char minute; unsigned char second; unsigned char frame; } msf; int lba; } cdsc_absaddr; union { struct { unsigned char minute; unsigned char second; unsigned char frame; } msf; int lba; } cdsc_reladdr; }; /* * definition of audio volume control structure */ struct cdrom_volctrl { unsigned char channel0; unsigned char channel1; unsigned char channel2; unsigned char channel3; }; struct cdrom_read { int cdread_lba; caddr_t cdread_bufaddr; int cdread_buflen; }; /* * CDROM io control commands */ #define CDROMPAUSE _IO('c', 10) /* Pause Audio Operation */ #define CDROMRESUME _IO('c', 11) /* Resume paused Audio Operation */ #define CDROMPLAYMSF _IOW('c', 12, struct cdrom_msf) /* Play Audio MSF */ #define CDROMPLAYTRKIND _IOW('c', 13, struct cdrom_ti) /* * Play Audio ` * Track/index */ #define CDROMREADTOCHDR \ _IOR('c', 103, struct cdrom_tochdr) /* Read TOC header */ #define CDROMREADTOCENTRY \ _IOWR('c', 104, struct cdrom_tocentry) /* Read a TOC entry */ #define CDROMSTOP _IO('c', 105) /* Stop the cdrom drive */ #define CDROMSTART _IO('c', 106) /* Start the cdrom drive */ #define CDROMEJECT _IO('c', 107) /* Ejects the cdrom caddy */ #define CDROMVOLCTRL \ _IOW('c', 14, struct cdrom_volctrl) /* control output volume */ #define CDROMSUBCHNL \ _IOWR('c', 108, struct cdrom_subchnl) /* read the subchannel data */ #define CDROMREADMODE2 \ _IOW('c', 110, struct cdrom_read) /* read CDROM mode 2 data */ #define CDROMREADMODE1 \ _IOW('c', 111, struct cdrom_read) /* read CDROM mode 1 data */