xref: /openbsd-src/sys/sys/cdio.h (revision f18801055812e68bacbd27bc23c139431ce8c29b)
1*f1880105Sjsg /*	$OpenBSD: cdio.h,v 1.17 2017/10/24 09:36:13 jsg Exp $	*/
261c17101Sbriggs /*	$NetBSD: cdio.h,v 1.11 1996/02/19 18:29:04 scottr Exp $	*/
3df930be7Sderaadt 
4df930be7Sderaadt #ifndef _SYS_CDIO_H_
5df930be7Sderaadt #define _SYS_CDIO_H_
6df930be7Sderaadt 
771b3c6bbSangelos #include <sys/types.h>
871b3c6bbSangelos #include <sys/ioccom.h>
971b3c6bbSangelos 
10df930be7Sderaadt /* Shared between kernel & process */
11df930be7Sderaadt 
1244470ae7Sderaadt union msf_lba {
1344470ae7Sderaadt 	struct {
1444470ae7Sderaadt 		u_char unused;
1544470ae7Sderaadt 		u_char minute;
1644470ae7Sderaadt 		u_char second;
1744470ae7Sderaadt 		u_char frame;
1844470ae7Sderaadt 	} msf;
1976fd3256Scsapuntz 	u_int32_t	lba;
2044470ae7Sderaadt 	u_char		addr[4];
2144470ae7Sderaadt };
2244470ae7Sderaadt 
23df930be7Sderaadt struct cd_toc_entry {
24df930be7Sderaadt 	u_char	nothing1;
25e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
269e04eb1aSderaadt 	u_int	control:4;
279e04eb1aSderaadt 	u_int	addr_type:4;
2861c17101Sbriggs #endif
29e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
309e04eb1aSderaadt 	u_int	addr_type:4;
319e04eb1aSderaadt 	u_int	control:4;
3261c17101Sbriggs #endif
33df930be7Sderaadt 	u_char	track;
34df930be7Sderaadt 	u_char	nothing2;
3544470ae7Sderaadt 	union msf_lba addr;
36df930be7Sderaadt };
37df930be7Sderaadt 
38df930be7Sderaadt struct cd_sub_channel_header {
39df930be7Sderaadt 	u_char	nothing1;
40df930be7Sderaadt 	u_char	audio_status;
41df930be7Sderaadt #define CD_AS_AUDIO_INVALID	0x00
42df930be7Sderaadt #define CD_AS_PLAY_IN_PROGRESS	0x11
43df930be7Sderaadt #define CD_AS_PLAY_PAUSED	0x12
44df930be7Sderaadt #define CD_AS_PLAY_COMPLETED	0x13
45df930be7Sderaadt #define CD_AS_PLAY_ERROR	0x14
46df930be7Sderaadt #define CD_AS_NO_STATUS		0x15
47df930be7Sderaadt 	u_char	data_len[2];
48df930be7Sderaadt };
49df930be7Sderaadt 
509881dce0Sderaadt struct cd_sub_channel_q_data {
519881dce0Sderaadt 	u_char	data_format;
52e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
539e04eb1aSderaadt 	u_int	control:4;
549e04eb1aSderaadt 	u_int	addr_type:4;
559881dce0Sderaadt #endif
56e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
579e04eb1aSderaadt 	u_int	addr_type:4;
589e04eb1aSderaadt 	u_int	control:4;
599881dce0Sderaadt #endif
609881dce0Sderaadt 	u_char	track_number;
619881dce0Sderaadt 	u_char	index_number;
629881dce0Sderaadt 	u_char	absaddr[4];
639881dce0Sderaadt 	u_char	reladdr[4];
64e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
659e04eb1aSderaadt 	u_int	:7;
669e04eb1aSderaadt 	u_int	mc_valid:1;
679881dce0Sderaadt #endif
68e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
699e04eb1aSderaadt 	u_int	mc_valid:1;
709e04eb1aSderaadt 	u_int	:7;
719881dce0Sderaadt #endif
729881dce0Sderaadt 	u_char	mc_number[15];
73e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
749e04eb1aSderaadt 	u_int	:7;
759e04eb1aSderaadt 	u_int	ti_valid:1;
769881dce0Sderaadt #endif
77e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
789e04eb1aSderaadt 	u_int	ti_valid:1;
799e04eb1aSderaadt 	u_int	:7;
809881dce0Sderaadt #endif
819881dce0Sderaadt 	u_char	ti_number[15];
829881dce0Sderaadt };
839881dce0Sderaadt 
84df930be7Sderaadt struct cd_sub_channel_position_data {
85df930be7Sderaadt 	u_char	data_format;
86e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
879e04eb1aSderaadt 	u_int	control:4;
889e04eb1aSderaadt 	u_int	addr_type:4;
8961c17101Sbriggs #endif
90e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
919e04eb1aSderaadt 	u_int	addr_type:4;
929e04eb1aSderaadt 	u_int	control:4;
9361c17101Sbriggs #endif
94df930be7Sderaadt 	u_char	track_number;
95df930be7Sderaadt 	u_char	index_number;
9644470ae7Sderaadt 	union msf_lba absaddr;
9744470ae7Sderaadt 	union msf_lba reladdr;
98df930be7Sderaadt };
99df930be7Sderaadt 
100df930be7Sderaadt struct cd_sub_channel_media_catalog {
101df930be7Sderaadt 	u_char	data_format;
102df930be7Sderaadt 	u_char	nothing1;
103df930be7Sderaadt 	u_char	nothing2;
104df930be7Sderaadt 	u_char	nothing3;
105e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
1069e04eb1aSderaadt 	u_int	:7;
1079e04eb1aSderaadt 	u_int	mc_valid:1;
10861c17101Sbriggs #endif
109e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
1109e04eb1aSderaadt 	u_int	mc_valid:1;
1119e04eb1aSderaadt 	u_int	:7;
11261c17101Sbriggs #endif
113df930be7Sderaadt 	u_char	mc_number[15];
114df930be7Sderaadt };
115df930be7Sderaadt 
116df930be7Sderaadt struct cd_sub_channel_track_info {
117df930be7Sderaadt 	u_char	data_format;
118df930be7Sderaadt 	u_char	nothing1;
119df930be7Sderaadt 	u_char	track_number;
120df930be7Sderaadt 	u_char	nothing2;
121e9bf9556Stedu #if _BYTE_ORDER == _LITTLE_ENDIAN
1229e04eb1aSderaadt 	u_int	:7;
1239e04eb1aSderaadt 	u_int	ti_valid:1;
12461c17101Sbriggs #endif
125e9bf9556Stedu #if _BYTE_ORDER == _BIG_ENDIAN
1269e04eb1aSderaadt 	u_int	ti_valid:1;
1279e04eb1aSderaadt 	u_int	:7;
12861c17101Sbriggs #endif
129df930be7Sderaadt 	u_char	ti_number[15];
130df930be7Sderaadt };
131df930be7Sderaadt 
132df930be7Sderaadt struct cd_sub_channel_info {
133df930be7Sderaadt 	struct cd_sub_channel_header header;
134df930be7Sderaadt 	union {
13576fd3256Scsapuntz 		struct cd_sub_channel_q_data q_data;
136df930be7Sderaadt 		struct cd_sub_channel_position_data position;
137df930be7Sderaadt 		struct cd_sub_channel_media_catalog media_catalog;
138df930be7Sderaadt 		struct cd_sub_channel_track_info track_info;
139df930be7Sderaadt 	} what;
140df930be7Sderaadt };
141df930be7Sderaadt 
142df930be7Sderaadt /*
143df930be7Sderaadt  * Ioctls for the CD drive
144df930be7Sderaadt  */
145df930be7Sderaadt struct ioc_play_track {
146df930be7Sderaadt 	u_char	start_track;
147df930be7Sderaadt 	u_char	start_index;
148df930be7Sderaadt 	u_char	end_track;
149df930be7Sderaadt 	u_char	end_index;
150df930be7Sderaadt };
151df930be7Sderaadt 
152df930be7Sderaadt #define	CDIOCPLAYTRACKS	_IOW('c', 1, struct ioc_play_track)
153df930be7Sderaadt struct ioc_play_blocks {
154df930be7Sderaadt 	int	blk;
155df930be7Sderaadt 	int	len;
156df930be7Sderaadt };
157df930be7Sderaadt #define	CDIOCPLAYBLOCKS	_IOW('c', 2, struct ioc_play_blocks)
158df930be7Sderaadt 
159df930be7Sderaadt struct ioc_read_subchannel {
160df930be7Sderaadt 	u_char	address_format;
161df930be7Sderaadt #define CD_LBA_FORMAT		1
162df930be7Sderaadt #define CD_MSF_FORMAT		2
163df930be7Sderaadt 	u_char	data_format;
164df930be7Sderaadt #define CD_SUBQ_DATA		0
165df930be7Sderaadt #define CD_CURRENT_POSITION	1
166df930be7Sderaadt #define CD_MEDIA_CATALOG	2
167df930be7Sderaadt #define CD_TRACK_INFO		3
168df930be7Sderaadt 	u_char	track;
169df930be7Sderaadt 	int	data_len;
170df930be7Sderaadt 	struct	cd_sub_channel_info *data;
171df930be7Sderaadt };
172df930be7Sderaadt #define CDIOCREADSUBCHANNEL _IOWR('c', 3, struct ioc_read_subchannel)
173df930be7Sderaadt 
174df930be7Sderaadt struct ioc_toc_header {
175df930be7Sderaadt 	u_short	len;
176df930be7Sderaadt 	u_char	starting_track;
177df930be7Sderaadt 	u_char	ending_track;
178df930be7Sderaadt };
179df930be7Sderaadt 
180df930be7Sderaadt #define CDIOREADTOCHEADER _IOR('c', 4, struct ioc_toc_header)
181df930be7Sderaadt 
182df930be7Sderaadt struct ioc_read_toc_entry {
183df930be7Sderaadt 	u_char	address_format;
184df930be7Sderaadt 	u_char	starting_track;
185b3ca5396Spedro #define CD_TRACK_LEADOUT	0xaa
186df930be7Sderaadt 	u_short	data_len;
187df930be7Sderaadt 	struct	cd_toc_entry *data;
188df930be7Sderaadt };
18976fd3256Scsapuntz #define CDIOREADTOCENTRIES _IOWR('c', 5, struct ioc_read_toc_entry)
1909a150b5fSmickey #define CDIOREADTOCENTRYS CDIOREADTOCENTRIES
191df930be7Sderaadt 
19276fd3256Scsapuntz /* read LBA start of a given session; 0=last, others not yet supported */
19376fd3256Scsapuntz #define CDIOREADMSADDR _IOWR('c', 6, int)
19476fd3256Scsapuntz 
195df930be7Sderaadt struct	ioc_patch {
196df930be7Sderaadt 	u_char	patch[4];	/* one for each channel */
197df930be7Sderaadt };
198df930be7Sderaadt #define	CDIOCSETPATCH	_IOW('c', 9, struct ioc_patch)
199df930be7Sderaadt 
200df930be7Sderaadt struct	ioc_vol {
201df930be7Sderaadt 	u_char	vol[4];	/* one for each channel */
202df930be7Sderaadt };
203df930be7Sderaadt #define	CDIOCGETVOL	_IOR('c', 10, struct ioc_vol)
204df930be7Sderaadt #define	CDIOCSETVOL	_IOW('c', 11, struct ioc_vol)
205df930be7Sderaadt #define	CDIOCSETMONO	_IO('c', 12)
206df930be7Sderaadt #define	CDIOCSETSTEREO	_IO('c', 13)
207df930be7Sderaadt #define	CDIOCSETMUTE	_IO('c', 14)
208df930be7Sderaadt #define	CDIOCSETLEFT	_IO('c', 15)
209df930be7Sderaadt #define	CDIOCSETRIGHT	_IO('c', 16)
210df930be7Sderaadt #define	CDIOCSETDEBUG	_IO('c', 17)
211df930be7Sderaadt #define	CDIOCCLRDEBUG	_IO('c', 18)
212df930be7Sderaadt #define	CDIOCPAUSE	_IO('c', 19)
213df930be7Sderaadt #define	CDIOCRESUME	_IO('c', 20)
214df930be7Sderaadt #define	CDIOCRESET	_IO('c', 21)
215df930be7Sderaadt #define	CDIOCSTART	_IO('c', 22)
216df930be7Sderaadt #define	CDIOCSTOP	_IO('c', 23)
217df930be7Sderaadt #define	CDIOCEJECT	_IO('c', 24)
218df930be7Sderaadt #define	CDIOCALLOW	_IO('c', 25)
219df930be7Sderaadt #define	CDIOCPREVENT	_IO('c', 26)
22076fd3256Scsapuntz #define	CDIOCCLOSE	_IO('c', 27)
221df930be7Sderaadt 
222df930be7Sderaadt struct ioc_play_msf {
223df930be7Sderaadt 	u_char	start_m;
224df930be7Sderaadt 	u_char	start_s;
225df930be7Sderaadt 	u_char	start_f;
226df930be7Sderaadt 	u_char	end_m;
227df930be7Sderaadt 	u_char	end_s;
228df930be7Sderaadt 	u_char	end_f;
229df930be7Sderaadt };
230df930be7Sderaadt #define	CDIOCPLAYMSF	_IOW('c', 25, struct ioc_play_msf)
231df930be7Sderaadt 
23276fd3256Scsapuntz struct ioc_load_unload {
23376fd3256Scsapuntz 	u_char options;
23476fd3256Scsapuntz #define	CD_LU_ABORT	0x1	/* NOTE: These are the same as the ATAPI */
23576fd3256Scsapuntz #define	CD_LU_UNLOAD	0x2	/* op values for the LOAD_UNLOAD command */
23676fd3256Scsapuntz #define	CD_LU_LOAD	0x3
23776fd3256Scsapuntz 	u_char slot;
23876fd3256Scsapuntz };
23976fd3256Scsapuntz #define		CDIOCLOADUNLOAD	_IOW('c', 26, struct ioc_load_unload)
24076fd3256Scsapuntz 
24171b3c6bbSangelos /* DVD definitions */
24271b3c6bbSangelos 
24371b3c6bbSangelos /* DVD-ROM Specific ioctls */
24471b3c6bbSangelos #define DVD_READ_STRUCT		_IOWR('d', 0, union dvd_struct)
24571b3c6bbSangelos #define DVD_WRITE_STRUCT	_IOWR('d', 1, union dvd_struct)
24671b3c6bbSangelos #define DVD_AUTH		_IOWR('d', 2, union dvd_authinfo)
24771b3c6bbSangelos 
24871b3c6bbSangelos #define GPCMD_READ_DVD_STRUCTURE	0xad
24971b3c6bbSangelos #define GPCMD_SEND_DVD_STRUCTURE	0xad
25071b3c6bbSangelos #define GPCMD_REPORT_KEY		0xa4
25171b3c6bbSangelos #define GPCMD_SEND_KEY			0xa3
25271b3c6bbSangelos 
25371b3c6bbSangelos /* DVD struct types */
25471b3c6bbSangelos #define DVD_STRUCT_PHYSICAL		0x00
25571b3c6bbSangelos #define DVD_STRUCT_COPYRIGHT		0x01
25671b3c6bbSangelos #define DVD_STRUCT_DISCKEY		0x02
25771b3c6bbSangelos #define DVD_STRUCT_BCA			0x03
25871b3c6bbSangelos #define DVD_STRUCT_MANUFACT		0x04
25971b3c6bbSangelos 
26071b3c6bbSangelos struct dvd_layer {
26171b3c6bbSangelos 	u_int8_t book_version;
26271b3c6bbSangelos 	u_int8_t book_type;
26371b3c6bbSangelos 	u_int8_t min_rate;
26471b3c6bbSangelos 	u_int8_t disc_size;
26571b3c6bbSangelos 	u_int8_t layer_type;
26671b3c6bbSangelos 	u_int8_t track_path;
26771b3c6bbSangelos 	u_int8_t nlayers;
26871b3c6bbSangelos 	u_int8_t track_density;
26971b3c6bbSangelos 	u_int8_t linear_density;
27071b3c6bbSangelos 	u_int8_t bca;
27171b3c6bbSangelos 	u_int32_t start_sector;
27271b3c6bbSangelos 	u_int32_t end_sector;
27371b3c6bbSangelos 	u_int32_t end_sector_l0;
27471b3c6bbSangelos };
27571b3c6bbSangelos 
27671b3c6bbSangelos struct dvd_physical {
27771b3c6bbSangelos 	u_int8_t type;
27871b3c6bbSangelos 
27971b3c6bbSangelos 	u_int8_t layer_num;
28071b3c6bbSangelos 	struct dvd_layer layer[4];
28171b3c6bbSangelos };
28271b3c6bbSangelos 
28371b3c6bbSangelos struct dvd_copyright {
28471b3c6bbSangelos 	u_int8_t type;
28571b3c6bbSangelos 
28671b3c6bbSangelos 	u_int8_t layer_num;
28771b3c6bbSangelos 	u_int8_t cpst;
28871b3c6bbSangelos 	u_int8_t rmi;
28971b3c6bbSangelos };
29071b3c6bbSangelos 
29171b3c6bbSangelos struct dvd_disckey {
29271b3c6bbSangelos 	u_int8_t type;
29371b3c6bbSangelos 
29471b3c6bbSangelos 	u_int8_t agid;
29571b3c6bbSangelos 	u_int8_t value[2048];
29671b3c6bbSangelos };
29771b3c6bbSangelos 
29871b3c6bbSangelos struct dvd_bca {
29971b3c6bbSangelos 	u_int8_t type;
30071b3c6bbSangelos 
30171b3c6bbSangelos 	int len;
30271b3c6bbSangelos 	u_int8_t value[188];
30371b3c6bbSangelos };
30471b3c6bbSangelos 
30571b3c6bbSangelos struct dvd_manufact {
30671b3c6bbSangelos 	u_int8_t type;
30771b3c6bbSangelos 
30871b3c6bbSangelos 	u_int8_t layer_num;
30971b3c6bbSangelos 	int len;
31071b3c6bbSangelos 	u_int8_t value[2048];
31171b3c6bbSangelos };
31271b3c6bbSangelos 
31371b3c6bbSangelos union dvd_struct {
31471b3c6bbSangelos 	u_int8_t type;
31571b3c6bbSangelos 
31671b3c6bbSangelos 	struct dvd_physical	physical;
31771b3c6bbSangelos 	struct dvd_copyright	copyright;
31871b3c6bbSangelos 	struct dvd_disckey	disckey;
31971b3c6bbSangelos 	struct dvd_bca		bca;
32071b3c6bbSangelos         struct dvd_manufact	manufact;
32171b3c6bbSangelos };
32271b3c6bbSangelos 
32371b3c6bbSangelos /*
32471b3c6bbSangelos  * DVD authentication ioctl
32571b3c6bbSangelos  */
32671b3c6bbSangelos 
32771b3c6bbSangelos /* Authentication states */
32871b3c6bbSangelos #define DVD_LU_SEND_AGID	0
32971b3c6bbSangelos #define DVD_HOST_SEND_CHALLENGE	1
33071b3c6bbSangelos #define DVD_LU_SEND_KEY1	2
33171b3c6bbSangelos #define DVD_LU_SEND_CHALLENGE	3
33271b3c6bbSangelos #define DVD_HOST_SEND_KEY2	4
33371b3c6bbSangelos 
33471b3c6bbSangelos /* Termination states */
33571b3c6bbSangelos #define DVD_AUTH_ESTABLISHED	5
33671b3c6bbSangelos #define DVD_AUTH_FAILURE	6
33771b3c6bbSangelos 
33871b3c6bbSangelos /* Other functions */
33971b3c6bbSangelos #define DVD_LU_SEND_TITLE_KEY	7
34071b3c6bbSangelos #define DVD_LU_SEND_ASF		8
34171b3c6bbSangelos #define DVD_INVALIDATE_AGID	9
342b2a24b2bSkrw #define DVD_LU_SEND_RPC_STATE	10
343b2a24b2bSkrw #define DVD_HOST_SEND_RPC_STATE	11
34471b3c6bbSangelos 
34571b3c6bbSangelos #if 0
34671b3c6bbSangelos /* State data */
34771b3c6bbSangelos typedef u_int8_t dvd_key[5];		/* 40-bit value, MSB is first elem. */
34871b3c6bbSangelos typedef u_int8_t dvd_challenge[10];	/* 80-bit value, MSB is first elem. */
34971b3c6bbSangelos #endif
35071b3c6bbSangelos 
35171b3c6bbSangelos #define DVD_KEY_SIZE		5
35271b3c6bbSangelos #define DVD_CHALLENGE_SIZE	10
35371b3c6bbSangelos 
35471b3c6bbSangelos struct dvd_lu_send_agid {
35571b3c6bbSangelos 	u_int8_t type;
35671b3c6bbSangelos 
35771b3c6bbSangelos 	u_int8_t agid;
35871b3c6bbSangelos };
35971b3c6bbSangelos 
36071b3c6bbSangelos struct dvd_host_send_challenge {
36171b3c6bbSangelos 	u_int8_t type;
36271b3c6bbSangelos 
36371b3c6bbSangelos 	u_int8_t agid;
36471b3c6bbSangelos 	u_int8_t chal[DVD_CHALLENGE_SIZE];
36571b3c6bbSangelos };
36671b3c6bbSangelos 
36771b3c6bbSangelos struct dvd_send_key {
36871b3c6bbSangelos 	u_int8_t type;
36971b3c6bbSangelos 
37071b3c6bbSangelos 	u_int8_t agid;
37171b3c6bbSangelos 	u_int8_t key[DVD_KEY_SIZE];
37271b3c6bbSangelos };
37371b3c6bbSangelos 
37471b3c6bbSangelos struct dvd_lu_send_challenge {
37571b3c6bbSangelos 	u_int8_t type;
37671b3c6bbSangelos 
37771b3c6bbSangelos 	u_int8_t agid;
37871b3c6bbSangelos 	u_int8_t chal[DVD_CHALLENGE_SIZE];
37971b3c6bbSangelos };
38071b3c6bbSangelos 
38171b3c6bbSangelos #define DVD_CPM_NO_COPYRIGHT	0
38271b3c6bbSangelos #define DVD_CPM_COPYRIGHTED	1
38371b3c6bbSangelos 
38471b3c6bbSangelos #define DVD_CP_SEC_NONE		0
38571b3c6bbSangelos #define DVD_CP_SEC_EXIST	1
38671b3c6bbSangelos 
38771b3c6bbSangelos #define DVD_CGMS_UNRESTRICTED	0
38871b3c6bbSangelos #define DVD_CGMS_SINGLE		2
38971b3c6bbSangelos #define DVD_CGMS_RESTRICTED	3
39071b3c6bbSangelos 
39171b3c6bbSangelos struct dvd_lu_send_title_key {
39271b3c6bbSangelos 	u_int8_t type;
39371b3c6bbSangelos 
39471b3c6bbSangelos 	u_int8_t agid;
39571b3c6bbSangelos 	u_int8_t title_key[DVD_KEY_SIZE];
39671b3c6bbSangelos 	int lba;
39771b3c6bbSangelos 	u_int8_t cpm;
39871b3c6bbSangelos 	u_int8_t cp_sec;
39971b3c6bbSangelos 	u_int8_t cgms;
40071b3c6bbSangelos };
40171b3c6bbSangelos 
40271b3c6bbSangelos struct dvd_lu_send_asf {
40371b3c6bbSangelos 	u_int8_t type;
40471b3c6bbSangelos 
40571b3c6bbSangelos 	u_int8_t agid;
40671b3c6bbSangelos 	u_int8_t asf;
40771b3c6bbSangelos };
40871b3c6bbSangelos 
409b2a24b2bSkrw struct dvd_host_send_rpcstate {
410b2a24b2bSkrw 	u_int8_t type;
411b2a24b2bSkrw 	u_int8_t pdrc;
412b2a24b2bSkrw };
413b2a24b2bSkrw 
414b2a24b2bSkrw struct dvd_lu_send_rpcstate {
415b2a24b2bSkrw 	u_int8_t type;
416b2a24b2bSkrw 	u_int8_t vra;
417b2a24b2bSkrw 	u_int8_t ucca;
418b2a24b2bSkrw 	u_int8_t region_mask;
419b2a24b2bSkrw 	u_int8_t rpc_scheme;
420b2a24b2bSkrw       };
421b2a24b2bSkrw 
42271b3c6bbSangelos union dvd_authinfo {
42371b3c6bbSangelos 	u_int8_t type;
42471b3c6bbSangelos 
42571b3c6bbSangelos 	struct dvd_lu_send_agid		lsa;
42671b3c6bbSangelos 	struct dvd_host_send_challenge	hsc;
42771b3c6bbSangelos 	struct dvd_send_key		lsk;
42871b3c6bbSangelos 	struct dvd_lu_send_challenge	lsc;
42971b3c6bbSangelos 	struct dvd_send_key		hsk;
43071b3c6bbSangelos 	struct dvd_lu_send_title_key	lstk;
43171b3c6bbSangelos 	struct dvd_lu_send_asf		lsasf;
432b2a24b2bSkrw 	struct dvd_host_send_rpcstate	hrpcs;
433b2a24b2bSkrw 	struct dvd_lu_send_rpcstate	lrpcs;
43471b3c6bbSangelos };
435df930be7Sderaadt #endif /* !_SYS_CDIO_H_ */
436