cdio.h revision 346
1/* 2 * 16 Feb 93 Julian Elischer (julian@dialix.oz.au) 3 */ 4/* Shared between kernel & process */ 5#ifndef SYS_CDIO_H 6#define SYS_CDIO_H 7 8struct cd_toc_entry { 9 u_char :8; 10 u_char control:4; 11 u_char addr_type:4; 12 u_char track; 13 u_char :8; 14 u_char addr[4]; 15}; 16 17struct cd_sub_channel_header { 18 u_char :8; 19 u_char audio_status; 20#define CD_AS_AUDIO_INVALID 0x00 21#define CD_AS_PLAY_IN_PROGRESS 0x11 22#define CD_AS_PLAY_PAUSED 0x12 23#define CD_AS_PLAY_COMPLETED 0x13 24#define CD_AS_PLAY_ERROR 0x14 25#define CD_AS_NO_STATUS 0x15 26 u_char data_len[2]; 27}; 28 29struct cd_sub_channel_position_data { 30 u_char data_format; 31 u_char control:4; 32 u_char addr_type:4; 33 u_char track_number; 34 u_char index_number; 35 u_char absaddr[4]; 36 u_char reladdr[4]; 37}; 38 39struct cd_sub_channel_media_catalog { 40 u_char data_format; 41 u_char :8; 42 u_char :8; 43 u_char :8; 44 u_char :7; 45 u_char mc_valid:1; 46 u_char mc_number[15]; 47}; 48 49struct cd_sub_channel_track_info { 50 u_char data_format; 51 u_char :8; 52 u_char track_number; 53 u_char :8; 54 u_char :7; 55 u_char ti_valid:1; 56 u_char ti_number[15]; 57}; 58 59struct cd_sub_channel_info { 60 struct cd_sub_channel_header header; 61 union { 62 struct cd_sub_channel_position_data position; 63 struct cd_sub_channel_media_catalog media_catalog; 64 struct cd_sub_channel_track_info track_info; 65 } what; 66}; 67 68/***************************************************************\ 69* Ioctls for the CD drive * 70\***************************************************************/ 71struct ioc_play_track 72{ 73 u_char start_track; 74 u_char start_index; 75 u_char end_track; 76 u_char end_index; 77}; 78 79#define CDIOCPLAYTRACKS _IOW('c',1,struct ioc_play_track) 80struct ioc_play_blocks 81{ 82 int blk; 83 int len; 84}; 85#define CDIOCPLAYBLOCKS _IOW('c',2,struct ioc_play_blocks) 86 87struct ioc_read_subchannel { 88 u_char address_format; 89#define CD_LBA_FORMAT 1 90#define CD_MSF_FORMAT 2 91 u_char data_format; 92#define CD_SUBQ_DATA 0 93#define CD_CURRENT_POSITION 1 94#define CD_MEDIA_CATALOG 2 95#define CD_TRACK_INFO 3 96 u_char track; 97 int data_len; 98 struct cd_sub_channel_info *data; 99}; 100#define CDIOCREADSUBCHANNEL _IOWR('c', 3 , struct ioc_read_subchannel ) 101 102 103struct ioc_toc_header { 104 u_short len; 105 u_char starting_track; 106 u_char ending_track; 107}; 108 109#define CDIOREADTOCHEADER _IOR('c',4,struct ioc_toc_header) 110 111struct ioc_read_toc_entry { 112 u_char address_format; 113 u_char starting_track; 114 u_short data_len; 115 struct cd_toc_entry *data; 116}; 117#define CDIOREADTOCENTRYS _IOWR('c',5,struct ioc_read_toc_entry) 118 119struct ioc_patch 120{ 121 u_char patch[4]; /* one for each channel */ 122}; 123#define CDIOCSETPATCH _IOW('c',9,struct ioc_patch) 124struct ioc_vol 125{ 126 u_char vol[4]; /* one for each channel */ 127}; 128#define CDIOCGETVOL _IOR('c',10,struct ioc_vol) 129#define CDIOCSETVOL _IOW('c',11,struct ioc_vol) 130#define CDIOCSETMONO _IO('c',12) 131#define CDIOCSETSTERIO _IO('c',13) 132#define CDIOCSETMUTE _IO('c',14) 133#define CDIOCSETLEFT _IO('c',15) 134#define CDIOCSETRIGHT _IO('c',16) 135#define CDIOCSETDEBUG _IO('c',17) 136#define CDIOCCLRDEBUG _IO('c',18) 137#define CDIOCPAUSE _IO('c',19) 138#define CDIOCRESUME _IO('c',20) 139#define CDIOCRESET _IO('c',21) 140#define CDIOCSTART _IO('c',22) 141#define CDIOCSTOP _IO('c',23) 142#define CDIOCEJECT _IO('c',24) 143 144struct ioc_play_msf 145{ 146 u_char start_m; 147 u_char start_s; 148 u_char start_f; 149 u_char end_m; 150 u_char end_s; 151 u_char end_f; 152}; 153#define CDIOCPLAYMSF _IOW('c',25,struct ioc_play_msf) 154 155 156 157#endif /* SYS_CDIO_H */ 158