111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_CDROM_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_CDROM_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/byteorder.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define EDRIVE_CANT_DO_THIS EOPNOTSUPP
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMPAUSE 0x5301
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMRESUME 0x5302
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMPLAYMSF 0x5303
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMPLAYTRKIND 0x5304
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADTOCHDR 0x5305
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADTOCENTRY 0x5306
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMSTOP 0x5307
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMSTART 0x5308
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMEJECT 0x5309
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMVOLCTRL 0x530a
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMSUBCHNL 0x530b
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADMODE2 0x530c
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADMODE1 0x530d
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADAUDIO 0x530e
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMEJECT_SW 0x530f
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMMULTISESSION 0x5310
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_GET_MCN 0x5311
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_GET_UPC CDROM_GET_MCN
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMRESET 0x5312
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMVOLREAD 0x5313
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADRAW 0x5314
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADCOOKED 0x5315
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMSEEK 0x5316
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMPLAYBLK 0x5317
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMREADALL 0x5318
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMGETSPINDOWN 0x531d
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMSETSPINDOWN 0x531e
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMCLOSETRAY 0x5319
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_SET_OPTIONS 0x5320
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_CLEAR_OPTIONS 0x5321
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_SELECT_SPEED 0x5322
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_SELECT_DISC 0x5323
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_MEDIA_CHANGED 0x5325
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_DRIVE_STATUS 0x5326
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_DISC_STATUS 0x5327
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_CHANGER_NSLOTS 0x5328
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_LOCKDOOR 0x5329
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_DEBUG 0x5330
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_GET_CAPABILITY 0x5331
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROMAUDIOBUFSIZ 0x5382
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_READ_STRUCT 0x5390
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_WRITE_STRUCT 0x5391
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_AUTH 0x5392
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_SEND_PACKET 0x5393
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_NEXT_WRITABLE 0x5394
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_LAST_WRITTEN 0x5395
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_msf0
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 minute;
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 second;
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 frame;
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertunion cdrom_addr
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct cdrom_msf0 msf;
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int lba;
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_msf
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdmsf_min0;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdmsf_sec0;
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdmsf_frame0;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdmsf_min1;
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdmsf_sec1;
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdmsf_frame1;
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_ti
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdti_trk0;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdti_ind0;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdti_trk1;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdti_ind1;
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_tochdr
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdth_trk0;
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdth_trk1;
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_volctrl
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 channel0;
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 channel1;
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 channel2;
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 channel3;
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_subchnl
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdsc_format;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdsc_audiostatus;
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdsc_adr: 4;
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdsc_ctrl: 4;
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdsc_trk;
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdsc_ind;
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union cdrom_addr cdsc_absaddr;
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union cdrom_addr cdsc_reladdr;
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_tocentry
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdte_track;
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdte_adr :4;
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdte_ctrl :4;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdte_format;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union cdrom_addr cdte_addr;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cdte_datamode;
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_read
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int cdread_lba;
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert char *cdread_bufaddr;
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int cdread_buflen;
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_read_audio
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
15011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union cdrom_addr addr;
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 addr_format;
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int nframes;
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 __user *buf;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_multisession
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert union cdrom_addr addr;
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 xa_flag;
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 addr_format;
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_mcn
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 medium_catalog_number[14];
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_blk
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned from;
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned short len;
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_PACKET_SIZE 12
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CGC_DATA_UNKNOWN 0
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CGC_DATA_WRITE 1
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CGC_DATA_READ 2
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CGC_DATA_NONE 3
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct cdrom_generic_command
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char cmd[CDROM_PACKET_SIZE];
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char __user *buffer;
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned int buflen;
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int stat;
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct request_sense __user *sense;
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned char data_direction;
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int quiet;
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int timeout;
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert void __user *reserved[1];
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_MINS 74
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_SECS 60
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMES 75
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_SYNC_SIZE 12
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_MSF_OFFSET 150
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_CHUNK_SIZE 24
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_NUM_OF_CHUNKS 98
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMESIZE_SUB 96
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_HEAD_SIZE 4
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_SUBHEAD_SIZE 8
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_EDC_SIZE 4
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_ZERO_SIZE 8
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_ECC_SIZE 276
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMESIZE 2048
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMESIZE_RAW 2352
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMESIZE_RAWER 2646
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE)
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE)
21311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_XA_HEAD (CD_HEAD_SIZE+CD_SUBHEAD_SIZE)
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_XA_TAIL (CD_EDC_SIZE+CD_ECC_SIZE)
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_XA_SYNC_HEAD (CD_SYNC_SIZE+CD_XA_HEAD)
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_LBA 0x01
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_MSF 0x02
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_DATA_TRACK 0x04
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_LEADOUT 0xAA
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_AUDIO_INVALID 0x00
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_AUDIO_PLAY 0x11
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_AUDIO_PAUSED 0x12
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_AUDIO_COMPLETED 0x13
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_AUDIO_ERROR 0x14
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDROM_AUDIO_NO_STATUS 0x15
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_CLOSE_TRAY 0x1
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_OPEN_TRAY 0x2
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_LOCK 0x4
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_SELECT_SPEED 0x8
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_SELECT_DISC 0x10
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_MULTI_SESSION 0x20
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_MCN 0x40
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_MEDIA_CHANGED 0x80
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_PLAY_AUDIO 0x100
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_RESET 0x200
24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_DRIVE_STATUS 0x800
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_GENERIC_PACKET 0x1000
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_CD_R 0x2000
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_CD_RW 0x4000
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_DVD 0x8000
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_DVD_R 0x10000
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_DVD_RAM 0x20000
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_MO_DRIVE 0x40000
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_MRW 0x80000
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_MRW_W 0x100000
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDC_RAM 0x200000
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_NO_INFO 0
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_NO_DISC 1
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_TRAY_OPEN 2
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_DRIVE_NOT_READY 3
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_DISC_OK 4
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_AUDIO 100
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_DATA_1 101
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_DATA_2 102
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_XA_2_1 103
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_XA_2_2 104
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDS_MIXED 105
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDO_AUTO_CLOSE 0x1
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDO_AUTO_EJECT 0x2
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDO_USE_FFLAGS 0x4
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDO_LOCK 0x8
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDO_CHECK_TYPE 0x10
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDSL_NONE ((int) (~0U>>1)-1)
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDSL_CURRENT ((int) (~0U>>1))
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_PART_MAX 64
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CD_PART_MASK (CD_PART_MAX - 1)
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_BLANK 0xa1
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_CLOSE_TRACK 0x5b
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_FLUSH_CACHE 0x35
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_FORMAT_UNIT 0x04
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_GET_CONFIGURATION 0x46
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_GET_PERFORMANCE 0xac
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_INQUIRY 0x12
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_LOAD_UNLOAD 0xa6
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_MECHANISM_STATUS 0xbd
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_MODE_SELECT_10 0x55
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_MODE_SENSE_10 0x5a
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PAUSE_RESUME 0x4b
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PLAY_AUDIO_10 0x45
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PLAY_AUDIO_MSF 0x47
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PLAY_AUDIO_TI 0x48
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PLAY_CD 0xbc
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_10 0x28
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_12 0xa8
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_BUFFER_CAPACITY 0x5c
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_CDVD_CAPACITY 0x25
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_CD 0xbe
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_CD_MSF 0xb9
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_DISC_INFO 0x51
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_DVD_STRUCTURE 0xad
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_FORMAT_CAPACITIES 0x23
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_HEADER 0x44
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_TRACK_RZONE_INFO 0x52
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_SUBCHANNEL 0x42
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_READ_TOC_PMA_ATIP 0x43
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_REPAIR_RZONE_TRACK 0x58
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_REPORT_KEY 0xa4
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_REQUEST_SENSE 0x03
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_RESERVE_RZONE_TRACK 0x53
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SEND_CUE_SHEET 0x5d
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SCAN 0xba
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SEEK 0x2b
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SEND_DVD_STRUCTURE 0xbf
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SEND_EVENT 0xa2
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SEND_KEY 0xa3
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SEND_OPC 0x54
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SET_READ_AHEAD 0xa7
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SET_STREAMING 0xb6
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_START_STOP_UNIT 0x1b
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_STOP_PLAY_SCAN 0x4e
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_TEST_UNIT_READY 0x00
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_VERIFY_10 0x2f
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_WRITE_10 0x2a
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_WRITE_AND_VERIFY_10 0x2e
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_SET_SPEED 0xbb
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_PLAYAUDIO_TI 0x48
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPCMD_GET_MEDIA_STATUS 0xda
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_VENDOR_PAGE 0x00
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_R_W_ERROR_PAGE 0x01
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_WRITE_PARMS_PAGE 0x05
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_WCACHING_PAGE 0x08
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_AUDIO_CTL_PAGE 0x0e
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_POWER_PAGE 0x1a
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_FAULT_FAIL_PAGE 0x1c
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_TO_PROTECT_PAGE 0x1d
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_CAPABILITIES_PAGE 0x2a
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_ALL_PAGES 0x3f
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define GPMODE_CDROM_PAGE 0x0d
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_STRUCT_PHYSICAL 0x00
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_STRUCT_COPYRIGHT 0x01
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_STRUCT_DISCKEY 0x02
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_STRUCT_BCA 0x03
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_STRUCT_MANUFACT 0x04
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_layer {
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 book_version : 4;
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 book_type : 4;
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 min_rate : 4;
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 disc_size : 4;
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 layer_type : 4;
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 track_path : 1;
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 nlayers : 2;
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 track_density : 4;
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 linear_density : 4;
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 bca : 1;
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 start_sector;
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 end_sector;
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 end_sector_l0;
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LAYERS 4
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_physical {
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 layer_num;
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_layer layer[DVD_LAYERS];
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_copyright {
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 layer_num;
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 cpst;
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 rmi;
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_disckey {
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 value[2048];
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_bca {
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int len;
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 value[188];
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_manufact {
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 layer_num;
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int len;
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 value[2048];
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef union {
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_physical physical;
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_copyright copyright;
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_disckey disckey;
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_bca bca;
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_manufact manufact;
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} dvd_struct;
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LU_SEND_AGID 0
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_HOST_SEND_CHALLENGE 1
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LU_SEND_KEY1 2
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LU_SEND_CHALLENGE 3
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_HOST_SEND_KEY2 4
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_AUTH_ESTABLISHED 5
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_AUTH_FAILURE 6
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LU_SEND_TITLE_KEY 7
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LU_SEND_ASF 8
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_INVALIDATE_AGID 9
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_LU_SEND_RPC_STATE 10
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_HOST_SEND_RPC_STATE 11
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef __u8 dvd_key[5];
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef __u8 dvd_challenge[10];
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_lu_send_agid {
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_host_send_challenge {
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert dvd_challenge chal;
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_send_key {
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert dvd_key key;
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_lu_send_challenge {
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert dvd_challenge chal;
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CPM_NO_COPYRIGHT 0
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CPM_COPYRIGHTED 1
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CP_SEC_NONE 0
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CP_SEC_EXIST 1
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CGMS_UNRESTRICTED 0
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CGMS_SINGLE 2
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define DVD_CGMS_RESTRICTED 3
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_lu_send_title_key {
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert dvd_key title_key;
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert int lba;
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned cpm : 1;
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned cp_sec : 1;
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned cgms : 2;
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_lu_send_asf {
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned agid : 2;
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert unsigned asf : 1;
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_host_send_rpcstate {
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 pdrc;
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct dvd_lu_send_rpcstate {
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type : 2;
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 vra : 3;
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ucca : 3;
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 region_mask;
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 rpc_scheme;
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef union {
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 type;
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
50711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_lu_send_agid lsa;
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_host_send_challenge hsc;
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_send_key lsk;
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_lu_send_challenge lsc;
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_send_key hsk;
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_lu_send_title_key lstk;
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_lu_send_asf lsasf;
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_host_send_rpcstate hrpcs;
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct dvd_lu_send_rpcstate lrpcs;
51611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} dvd_authinfo;
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct request_sense {
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
52011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 valid : 1;
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 error_code : 7;
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 error_code : 7;
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 valid : 1;
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 segment_number;
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 2;
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ili : 1;
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 1;
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 sense_key : 4;
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 sense_key : 4;
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 1;
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ili : 1;
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 2;
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 information[4];
53911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 add_sense_len;
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 command_info[4];
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 asc;
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 ascq;
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 fruc;
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 sks[3];
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 asb[46];
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDF_RWRT 0x0020
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDF_HWDM 0x0024
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDF_MRW 0x0028
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDM_MRW_NOTMRW 0
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDM_MRW_BGFORMAT_INACTIVE 1
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDM_MRW_BGFORMAT_ACTIVE 2
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define CDM_MRW_BGFORMAT_COMPLETE 3
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
55711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MRW_LBA_DMA 0
55811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MRW_LBA_GAA 1
55911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
56011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MRW_MODE_PC_PRE1 0x2c
56111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MRW_MODE_PC 0x03
56211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
56311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct mrw_feature_desc {
56411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 feature_code;
56511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
56611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 2;
56711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 feature_version : 4;
56811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 persistent : 1;
56911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 curr : 1;
57011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
57111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 curr : 1;
57211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 persistent : 1;
57311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 feature_version : 4;
57411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 2;
57511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
57611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 add_len;
57711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
57811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 7;
57911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 write : 1;
58011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
58111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 write : 1;
58211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 7;
58311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
58411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved3;
58511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved4;
58611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved5;
58711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
58811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
58911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct rwrt_feature_desc {
59011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 feature_code;
59111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
59211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 2;
59311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 feature_version : 4;
59411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 persistent : 1;
59511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 curr : 1;
59611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
59711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 curr : 1;
59811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 persistent : 1;
59911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 feature_version : 4;
60011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 2;
60111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
60211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 add_len;
60311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 last_lba;
60411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 block_size;
60511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 blocking;
60611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
60711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 7;
60811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 page_present : 1;
60911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
61011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 page_present : 1;
61111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 7;
61211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
61311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved3;
61411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
61511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
61611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct {
61711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 disc_information_length;
61811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
61911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 3;
62011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 erasable : 1;
62111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 border_status : 2;
62211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 disc_status : 2;
62311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
62411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 disc_status : 2;
62511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 border_status : 2;
62611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 erasable : 1;
62711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1 : 3;
62811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
62911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#error "Please fix <asm/byteorder.h>"
63011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
63111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 n_first_track;
63211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 n_sessions_lsb;
63311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 first_track_lsb;
63411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 last_track_lsb;
63511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
63611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 did_v : 1;
63711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 dbc_v : 1;
63811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 uru : 1;
63911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 2;
64011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 dbit : 1;
64111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 mrw_status : 2;
64211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
64311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 mrw_status : 2;
64411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 dbit : 1;
64511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 2;
64611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 uru : 1;
64711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 dbc_v : 1;
64811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 did_v : 1;
64911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
65011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 disc_type;
65111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 n_sessions_msb;
65211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 first_track_msb;
65311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 last_track_msb;
65411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 disc_id;
65511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 lead_in;
65611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 lead_out;
65711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 disc_bar_code[8];
65811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved3;
65911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 n_opc;
66011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} disc_information;
66111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
66211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct {
66311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 track_information_length;
66411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 track_lsb;
66511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 session_lsb;
66611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1;
66711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN_BITFIELD
66811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 2;
66911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 damage : 1;
67011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 copy : 1;
67111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 track_mode : 4;
67211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 rt : 1;
67311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 blank : 1;
67411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 packet : 1;
67511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 fp : 1;
67611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 data_mode : 4;
67711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved3 : 6;
67811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 lra_v : 1;
67911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 nwa_v : 1;
68011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__LITTLE_ENDIAN_BITFIELD)
68111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 track_mode : 4;
68211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 copy : 1;
68311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 damage : 1;
68411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2 : 2;
68511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 data_mode : 4;
68611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 fp : 1;
68711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 packet : 1;
68811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 blank : 1;
68911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 rt : 1;
69011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 nwa_v : 1;
69111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 lra_v : 1;
69211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved3 : 6;
69311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
69411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 track_start;
69511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 next_writable;
69611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 free_blocks;
69711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 fixed_packet_size;
69811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 track_size;
69911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 last_rec_address;
70011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} track_information;
70111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
70211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct feature_header {
70311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 data_len;
70411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1;
70511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2;
70611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 curr_profile;
70711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
70811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
70911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct mode_page_header {
71011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 mode_data_length;
71111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 medium_type;
71211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved1;
71311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved2;
71411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 reserved3;
71511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 desc_length;
71611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
71711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
71811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
719