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