summaryrefslogtreecommitdiffstats
path: root/sys/sys/cdio.h
diff options
context:
space:
mode:
authorrgrimes <rgrimes@FreeBSD.org>1993-06-12 14:58:17 +0000
committerrgrimes <rgrimes@FreeBSD.org>1993-06-12 14:58:17 +0000
commit25062ba061871945759b3baa833fe64969383e40 (patch)
tree2d1c31051ed0dbaad984013c9fe695b1a01e1c39 /sys/sys/cdio.h
parentf078b88a160c467761b3f3641f05dfd0aa3f7753 (diff)
downloadFreeBSD-src-25062ba061871945759b3baa833fe64969383e40.zip
FreeBSD-src-25062ba061871945759b3baa833fe64969383e40.tar.gz
Initial import, 0.1 + pk 0.2.4-B1
Diffstat (limited to 'sys/sys/cdio.h')
-rw-r--r--sys/sys/cdio.h149
1 files changed, 149 insertions, 0 deletions
diff --git a/sys/sys/cdio.h b/sys/sys/cdio.h
new file mode 100644
index 0000000..0bd4ea7
--- /dev/null
+++ b/sys/sys/cdio.h
@@ -0,0 +1,149 @@
+/*
+ *
+ * PATCHES MAGIC LEVEL PATCH THAT GOT US HERE
+ * -------------------- ----- ----------------------
+ * CURRENT PATCH LEVEL: 1 00098
+ * -------------------- ----- ----------------------
+ *
+ * 16 Feb 93 Julian Elischer ADDED for SCSI system
+ */
+/* Shared between kernel & process */
+
+struct cd_toc_entry {
+ u_char :8;
+ u_char control:4;
+ u_char addr_type:4;
+ u_char track;
+ u_char :8;
+ u_char addr[4];
+};
+
+struct cd_sub_channel_header {
+ u_char :8;
+ u_char audio_status;
+#define CD_AS_AUDIO_INVALID 0x00
+#define CD_AS_PLAY_IN_PROGRESS 0x11
+#define CD_AS_PLAY_PAUSED 0x12
+#define CD_AS_PLAY_COMPLETED 0x13
+#define CD_AS_PLAY_ERROR 0x14
+#define CD_AS_NO_STATUS 0x15
+ u_char data_len[2];
+};
+
+struct cd_sub_channel_position_data {
+ u_char data_format;
+ u_char control:4;
+ u_char addr_type:4;
+ u_char track_number;
+ u_char index_number;
+ u_char absaddr[4];
+ u_char reladdr[4];
+};
+
+struct cd_sub_channel_media_catalog {
+ u_char data_format;
+ u_char :8;
+ u_char :8;
+ u_char :8;
+ u_char :7;
+ u_char mc_valid:1;
+ u_char mc_number[15];
+};
+
+struct cd_sub_channel_track_info {
+ u_char data_format;
+ u_char :8;
+ u_char track_number;
+ u_char :8;
+ u_char :7;
+ u_char ti_valid:1;
+ u_char ti_number[15];
+};
+
+struct cd_sub_channel_info {
+ struct cd_sub_channel_header header;
+ union {
+ struct cd_sub_channel_position_data position;
+ struct cd_sub_channel_media_catalog media_catalog;
+ struct cd_sub_channel_track_info track_info;
+ } what;
+};
+
+/***************************************************************\
+* Ioctls for the CD drive *
+\***************************************************************/
+struct ioc_play_track
+{
+ u_char start_track;
+ u_char start_index;
+ u_char end_track;
+ u_char end_index;
+};
+
+#define CDIOCPLAYTRACKS _IOW('c',1,struct ioc_play_track)
+struct ioc_play_blocks
+{
+ int blk;
+ int len;
+};
+#define CDIOCPLAYBLOCKS _IOW('c',2,struct ioc_play_blocks)
+
+struct ioc_read_subchannel {
+ u_char address_format;
+#define CD_LBA_FORMAT 1
+#define CD_MSF_FORMAT 2
+ u_char data_format;
+#define CD_SUBQ_DATA 0
+#define CD_CURRENT_POSITION 1
+#define CD_MEDIA_CATALOG 2
+#define CD_TRACK_INFO 3
+ u_char track;
+ int data_len;
+ struct cd_sub_channel_info *data;
+};
+#define CDIOCREADSUBCHANNEL _IOWR('c', 3 , struct ioc_read_subchannel )
+
+
+struct ioc_toc_header {
+ u_short len;
+ u_char starting_track;
+ u_char ending_track;
+};
+
+#define CDIOREADTOCHEADER _IOR('c',4,struct ioc_toc_header)
+
+struct ioc_read_toc_entry {
+ u_char address_format;
+ u_char starting_track;
+ u_short data_len;
+ struct cd_toc_entry *data;
+};
+#define CDIOREADTOCENTRYS _IOWR('c',5,struct ioc_read_toc_entry)
+
+struct ioc_patch
+{
+ u_char patch[4]; /* one for each channel */
+};
+#define CDIOCSETPATCH _IOW('c',9,struct ioc_patch)
+struct ioc_vol
+{
+ u_char vol[4]; /* one for each channel */
+};
+#define CDIOCGETVOL _IOR('c',10,struct ioc_vol)
+#define CDIOCSETVOL _IOW('c',11,struct ioc_vol)
+#define CDIOCSETMONO _IO('c',12)
+#define CDIOCSETSTERIO _IO('c',13)
+#define CDIOCSETMUTE _IO('c',14)
+#define CDIOCSETLEFT _IO('c',15)
+#define CDIOCSETRIGHT _IO('c',16)
+#define CDIOCSETDEBUG _IO('c',17)
+#define CDIOCCLRDEBUG _IO('c',18)
+#define CDIOCPAUSE _IO('c',19)
+#define CDIOCRESUME _IO('c',20)
+#define CDIOCRESET _IO('c',21)
+#define CDIOCSTART _IO('c',22)
+#define CDIOCSTOP _IO('c',23)
+#define CDIOCEJECT _IO('c',24)
+
+
+
OpenPOWER on IntegriCloud