* 16 Feb 93 Julian Elischer (julian@dialix.oz.au)
/* Shared between kernel & process */
struct cd_sub_channel_header
{
#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
struct cd_sub_channel_position_data
{
struct cd_sub_channel_media_catalog
{
struct cd_sub_channel_track_info
{
struct cd_sub_channel_info
{
struct cd_sub_channel_header header
;
struct cd_sub_channel_position_data position
;
struct cd_sub_channel_media_catalog media_catalog
;
struct cd_sub_channel_track_info track_info
;
/***************************************************************\
* Ioctls for the CD drive *
\***************************************************************/
#define CDIOCPLAYTRACKS _IOW('c',1,struct ioc_play_track)
#define CDIOCPLAYBLOCKS _IOW('c',2,struct ioc_play_blocks)
struct ioc_read_subchannel
{
#define CD_CURRENT_POSITION 1
#define CD_MEDIA_CATALOG 2
struct cd_sub_channel_info
*data
;
#define CDIOCREADSUBCHANNEL _IOWR('c', 3 , struct ioc_read_subchannel )
#define CDIOREADTOCHEADER _IOR('c',4,struct ioc_toc_header)
struct ioc_read_toc_entry
{
struct cd_toc_entry
*data
;
#define CDIOREADTOCENTRYS _IOWR('c',5,struct ioc_read_toc_entry)
u_char patch
[4]; /* one for each channel */
#define CDIOCSETPATCH _IOW('c',9,struct ioc_patch)
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)
#define CDIOCPLAYMSF _IOW('c',25,struct ioc_play_msf)