cdrom.h
001:
002:
003:
004: rafetmad@oxy.edu
005: emoenke@gwdg.de
006: david@tm.tno.nl
007: andersee@debian.org
008: axboe@suse.de
009:
010:
011: #ifndef _LINUX_CDROM_H
012: #define _LINUX_CDROM_H
013:
014: #include <linux/types.h>
015: #include <asm/byteorder.h>
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037: ftp://ftp.gwdg.de/pub/linux/cdrom/drivers/cm206/
038:
039:
040:
041:
042:
043:
044:
045:
046: #define EDRIVE_CANT_DO_THIS EOPNOTSUPP
047:
048:
049:
050:
051:
052:
053: #define CDROMPAUSE 0x5301
054: #define CDROMRESUME 0x5302
055: #define CDROMPLAYMSF 0x5303
056: #define CDROMPLAYTRKIND 0x5304
057:
058: #define CDROMREADTOCHDR 0x5305
059:
060: #define CDROMREADTOCENTRY 0x5306
061:
062: #define CDROMSTOP 0x5307
063: #define CDROMSTART 0x5308
064: #define CDROMEJECT 0x5309
065: #define CDROMVOLCTRL 0x530a
066:
067: #define CDROMSUBCHNL 0x530b
068:
069: #define CDROMREADMODE2 0x530c
070:
071: #define CDROMREADMODE1 0x530d
072:
073: #define CDROMREADAUDIO 0x530e
074: #define CDROMEJECT_SW 0x530f
075: #define CDROMMULTISESSION 0x5310
076:
077:
078: #define CDROM_GET_MCN 0x5311
079:
080: #define CDROM_GET_UPC CDROM_GET_MCN
081:
082: #define CDROMRESET 0x5312
083: #define CDROMVOLREAD 0x5313
084:
085: #define CDROMREADRAW 0x5314
086:
087:
088:
089:
090: #define CDROMREADCOOKED 0x5315
091: #define CDROMSEEK 0x5316
092:
093:
094:
095:
096:
097: #define CDROMPLAYBLK 0x5317
098:
099:
100:
101:
102: #define CDROMREADALL 0x5318
103:
104:
105:
106:
107:
108:
109:
110:
111: #define CDROMGETSPINDOWN 0x531d
112: #define CDROMSETSPINDOWN 0x531e
113:
114:
115:
116:
117:
118:
119: #define CDROMCLOSETRAY 0x5319
120: #define CDROM_SET_OPTIONS 0x5320
121: #define CDROM_CLEAR_OPTIONS 0x5321
122: #define CDROM_SELECT_SPEED 0x5322
123: #define CDROM_SELECT_DISC 0x5323
124: #define CDROM_MEDIA_CHANGED 0x5325
125: #define CDROM_DRIVE_STATUS 0x5326
126: #define CDROM_DISC_STATUS 0x5327
127: #define CDROM_CHANGER_NSLOTS 0x5328
128: #define CDROM_LOCKDOOR 0x5329
129: #define CDROM_DEBUG 0x5330
130: #define CDROM_GET_CAPABILITY 0x5331
131:
132:
133:
134:
135:
136:
137: #define CDROMAUDIOBUFSIZ 0x5382
138:
139:
140:
141: #define DVD_READ_STRUCT 0x5390
142: #define DVD_WRITE_STRUCT 0x5391
143: #define DVD_AUTH 0x5392
144:
145: #define CDROM_SEND_PACKET 0x5393
146: #define CDROM_NEXT_WRITABLE 0x5394
147: #define CDROM_LAST_WRITTEN 0x5395
148:
149:
150:
151:
152:
153:
154: struct cdrom_msf0
155: {
156: __u8 minute;
157: __u8 second;
158: __u8 frame;
159: };
160:
161:
162: union cdrom_addr
163: {
164: struct cdrom_msf0 msf;
165: int lba;
166: };
167:
168:
169: struct cdrom_msf
170: {
171: __u8 cdmsf_min0;
172: __u8 cdmsf_sec0;
173: __u8 cdmsf_frame0;
174: __u8 cdmsf_min1;
175: __u8 cdmsf_sec1;
176: __u8 cdmsf_frame1;
177: };
178:
179:
180: struct cdrom_ti
181: {
182: __u8 cdti_trk0;
183: __u8 cdti_ind0;
184: __u8 cdti_trk1;
185: __u8 cdti_ind1;
186: };
187:
188:
189: struct cdrom_tochdr
190: {
191: __u8 cdth_trk0;
192: __u8 cdth_trk1;
193: };
194:
195:
196: struct cdrom_volctrl
197: {
198: __u8 channel0;
199: __u8 channel1;
200: __u8 channel2;
201: __u8 channel3;
202: };
203:
204:
205: struct cdrom_subchnl
206: {
207: __u8 cdsc_format;
208: __u8 cdsc_audiostatus;
209: __u8 cdsc_adr: 4;
210: __u8 cdsc_ctrl: 4;
211: __u8 cdsc_trk;
212: __u8 cdsc_ind;
213: union cdrom_addr cdsc_absaddr;
214: union cdrom_addr cdsc_reladdr;
215: };
216:
217:
218:
219: struct cdrom_tocentry
220: {
221: __u8 cdte_track;
222: __u8 cdte_adr :4;
223: __u8 cdte_ctrl :4;
224: __u8 cdte_format;
225: union cdrom_addr cdte_addr;
226: __u8 cdte_datamode;
227: };
228:
229:
230: struct cdrom_read
231: {
232: int cdread_lba;
233: char *cdread_bufaddr;
234: int cdread_buflen;
235: };
236:
237:
238: struct cdrom_read_audio
239: {
240: union cdrom_addr addr;
241: __u8 addr_format;
242: int nframes;
243: __u8 *buf;
244: };
245:
246:
247: struct cdrom_multisession
248: {
249: union cdrom_addr addr;
250:
251:
252: __u8 xa_flag;
253: __u8 addr_format;
254: };
255:
256:
257:
258:
259:
260:
261: struct cdrom_mcn
262: {
263: __u8 medium_catalog_number[14];
264: };
265:
266:
267: struct cdrom_blk
268: {
269: unsigned from;
270: unsigned short len;
271: };
272:
273: #define CDROM_PACKET_SIZE 12
274:
275: #define CGC_DATA_UNKNOWN 0
276: #define CGC_DATA_WRITE 1
277: #define CGC_DATA_READ 2
278: #define CGC_DATA_NONE 3
279:
280:
281: struct cdrom_generic_command
282: {
283: unsigned char cmd[CDROM_PACKET_SIZE];
284: unsigned char *buffer;
285: unsigned int buflen;
286: int stat;
287: struct request_sense *sense;
288: unsigned char data_direction;
289: int quiet;
290: int timeout;
291: void *reserved[1];
292: };
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329: #define CD_MINS 74
330: #define CD_SECS 60
331: #define CD_FRAMES 75
332: #define CD_SYNC_SIZE 12
333: #define CD_MSF_OFFSET 150
334: #define CD_CHUNK_SIZE 24
335: #define CD_NUM_OF_CHUNKS 98
336: #define CD_FRAMESIZE_SUB 96
337: #define CD_HEAD_SIZE 4
338: #define CD_SUBHEAD_SIZE 8
339: #define CD_EDC_SIZE 4
340: #define CD_ZERO_SIZE 8
341: #define CD_ECC_SIZE 276
342: #define CD_FRAMESIZE 2048
343: #define CD_FRAMESIZE_RAW 2352
344: #define CD_FRAMESIZE_RAWER 2646
345:
346: #define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE)
347: #define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE)
348:
349: #define CD_XA_HEAD (CD_HEAD_SIZE+CD_SUBHEAD_SIZE)
350: #define CD_XA_TAIL (CD_EDC_SIZE+CD_ECC_SIZE)
351: #define CD_XA_SYNC_HEAD (CD_SYNC_SIZE+CD_XA_HEAD)
352:
353:
354: #define CDROM_LBA 0x01
355: #define CDROM_MSF 0x02
356:
357:
358: #define CDROM_DATA_TRACK 0x04
359:
360:
361: #define CDROM_LEADOUT 0xAA
362:
363:
364: #define CDROM_AUDIO_INVALID 0x00
365: #define CDROM_AUDIO_PLAY 0x11
366: #define CDROM_AUDIO_PAUSED 0x12
367: #define CDROM_AUDIO_COMPLETED 0x13
368: #define CDROM_AUDIO_ERROR 0x14
369: #define CDROM_AUDIO_NO_STATUS 0x15
370:
371:
372: #define CDC_CLOSE_TRAY 0x1
373: #define CDC_OPEN_TRAY 0x2
374: #define CDC_LOCK 0x4
375: #define CDC_SELECT_SPEED 0x8
376: #define CDC_SELECT_DISC 0x10
377: #define CDC_MULTI_SESSION 0x20
378: #define CDC_MCN 0x40
379: #define CDC_MEDIA_CHANGED 0x80
380: #define CDC_PLAY_AUDIO 0x100
381: #define CDC_RESET 0x200
382: #define CDC_DRIVE_STATUS 0x800
383: #define CDC_GENERIC_PACKET 0x1000
384: #define CDC_CD_R 0x2000
385: #define CDC_CD_RW 0x4000
386: #define CDC_DVD 0x8000
387: #define CDC_DVD_R 0x10000
388: #define CDC_DVD_RAM 0x20000
389: #define CDC_MO_DRIVE 0x40000
390: #define CDC_MRW 0x80000
391: #define CDC_MRW_W 0x100000
392: #define CDC_RAM 0x200000
393:
394:
395: #define CDS_NO_INFO 0
396: #define CDS_NO_DISC 1
397: #define CDS_TRAY_OPEN 2
398: #define CDS_DRIVE_NOT_READY 3
399: #define CDS_DISC_OK 4
400:
401:
402:
403: #define CDS_AUDIO 100
404: #define CDS_DATA_1 101
405: #define CDS_DATA_2 102
406: #define CDS_XA_2_1 103
407: #define CDS_XA_2_2 104
408: #define CDS_MIXED 105
409:
410:
411: #define CDO_AUTO_CLOSE 0x1
412: #define CDO_AUTO_EJECT 0x2
413: #define CDO_USE_FFLAGS 0x4
414: #define CDO_LOCK 0x8
415: #define CDO_CHECK_TYPE 0x10
416:
417:
418: #define CDSL_NONE (INT_MAX-1)
419: #define CDSL_CURRENT INT_MAX
420:
421:
422:
423:
424:
425:
426: #define CD_PART_MAX 64
427: #define CD_PART_MASK (CD_PART_MAX - 1)
428:
429:
430:
431:
432:
433:
434:
435: #define GPCMD_BLANK 0xa1
436: #define GPCMD_CLOSE_TRACK 0x5b
437: #define GPCMD_FLUSH_CACHE 0x35
438: #define GPCMD_FORMAT_UNIT 0x04
439: #define GPCMD_GET_CONFIGURATION 0x46
440: #define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
441: #define GPCMD_GET_PERFORMANCE 0xac
442: #define GPCMD_INQUIRY 0x12
443: #define GPCMD_LOAD_UNLOAD 0xa6
444: #define GPCMD_MECHANISM_STATUS 0xbd
445: #define GPCMD_MODE_SELECT_10 0x55
446: #define GPCMD_MODE_SENSE_10 0x5a
447: #define GPCMD_PAUSE_RESUME 0x4b
448: #define GPCMD_PLAY_AUDIO_10 0x45
449: #define GPCMD_PLAY_AUDIO_MSF 0x47
450: #define GPCMD_PLAY_AUDIO_TI 0x48
451: #define GPCMD_PLAY_CD 0xbc
452: #define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
453: #define GPCMD_READ_10 0x28
454: #define GPCMD_READ_12 0xa8
455: #define GPCMD_READ_BUFFER 0x3c
456: #define GPCMD_READ_BUFFER_CAPACITY 0x5c
457: #define GPCMD_READ_CDVD_CAPACITY 0x25
458: #define GPCMD_READ_CD 0xbe
459: #define GPCMD_READ_CD_MSF 0xb9
460: #define GPCMD_READ_DISC_INFO 0x51
461: #define GPCMD_READ_DVD_STRUCTURE 0xad
462: #define GPCMD_READ_FORMAT_CAPACITIES 0x23
463: #define GPCMD_READ_HEADER 0x44
464: #define GPCMD_READ_TRACK_RZONE_INFO 0x52
465: #define GPCMD_READ_SUBCHANNEL 0x42
466: #define GPCMD_READ_TOC_PMA_ATIP 0x43
467: #define GPCMD_REPAIR_RZONE_TRACK 0x58
468: #define GPCMD_REPORT_KEY 0xa4
469: #define GPCMD_REQUEST_SENSE 0x03
470: #define GPCMD_RESERVE_RZONE_TRACK 0x53
471: #define GPCMD_SEND_CUE_SHEET 0x5d
472: #define GPCMD_SCAN 0xba
473: #define GPCMD_SEEK 0x2b
474: #define GPCMD_SEND_DVD_STRUCTURE 0xbf
475: #define GPCMD_SEND_EVENT 0xa2
476: #define GPCMD_SEND_KEY 0xa3
477: #define GPCMD_SEND_OPC 0x54
478: #define GPCMD_SET_READ_AHEAD 0xa7
479: #define GPCMD_SET_STREAMING 0xb6
480: #define GPCMD_START_STOP_UNIT 0x1b
481: #define GPCMD_STOP_PLAY_SCAN 0x4e
482: #define GPCMD_TEST_UNIT_READY 0x00
483: #define GPCMD_VERIFY_10 0x2f
484: #define GPCMD_WRITE_10 0x2a
485: #define GPCMD_WRITE_12 0xaa
486: #define GPCMD_WRITE_AND_VERIFY_10 0x2e
487: #define GPCMD_WRITE_BUFFER 0x3b
488:
489:
490:
491:
492: #define GPCMD_SET_SPEED 0xbb
493:
494:
495: #define GPCMD_PLAYAUDIO_TI 0x48
496:
497:
498:
499:
500: #define GPCMD_GET_MEDIA_STATUS 0xda
501:
502:
503: #define GPMODE_VENDOR_PAGE 0x00
504: #define GPMODE_R_W_ERROR_PAGE 0x01
505: #define GPMODE_WRITE_PARMS_PAGE 0x05
506: #define GPMODE_WCACHING_PAGE 0x08
507: #define GPMODE_AUDIO_CTL_PAGE 0x0e
508: #define GPMODE_POWER_PAGE 0x1a
509: #define GPMODE_FAULT_FAIL_PAGE 0x1c
510: #define GPMODE_TO_PROTECT_PAGE 0x1d
511: #define GPMODE_CAPABILITIES_PAGE 0x2a
512: #define GPMODE_ALL_PAGES 0x3f
513:
514:
515: #define GPMODE_CDROM_PAGE 0x0d
516:
517:
518:
519:
520: #define DVD_STRUCT_PHYSICAL 0x00
521: #define DVD_STRUCT_COPYRIGHT 0x01
522: #define DVD_STRUCT_DISCKEY 0x02
523: #define DVD_STRUCT_BCA 0x03
524: #define DVD_STRUCT_MANUFACT 0x04
525:
526: struct dvd_layer {
527: __u8 book_version : 4;
528: __u8 book_type : 4;
529: __u8 min_rate : 4;
530: __u8 disc_size : 4;
531: __u8 layer_type : 4;
532: __u8 track_path : 1;
533: __u8 nlayers : 2;
534: __u8 track_density : 4;
535: __u8 linear_density : 4;
536: __u8 bca : 1;
537: __u32 start_sector;
538: __u32 end_sector;
539: __u32 end_sector_l0;
540: };
541:
542: #define DVD_LAYERS 4
543:
544: struct dvd_physical {
545: __u8 type;
546: __u8 layer_num;
547: struct dvd_layer layer[DVD_LAYERS];
548: };
549:
550: struct dvd_copyright {
551: __u8 type;
552:
553: __u8 layer_num;
554: __u8 cpst;
555: __u8 rmi;
556: };
557:
558: struct dvd_disckey {
559: __u8 type;
560:
561: unsigned agid : 2;
562: __u8 value[2048];
563: };
564:
565: struct dvd_bca {
566: __u8 type;
567:
568: int len;
569: __u8 value[188];
570: };
571:
572: struct dvd_manufact {
573: __u8 type;
574:
575: __u8 layer_num;
576: int len;
577: __u8 value[2048];
578: };
579:
580: typedef union {
581: __u8 type;
582:
583: struct dvd_physical physical;
584: struct dvd_copyright copyright;
585: struct dvd_disckey disckey;
586: struct dvd_bca bca;
587: struct dvd_manufact manufact;
588: } dvd_struct;
589:
590:
591:
592:
593:
594:
595: #define DVD_LU_SEND_AGID 0
596: #define DVD_HOST_SEND_CHALLENGE 1
597: #define DVD_LU_SEND_KEY1 2
598: #define DVD_LU_SEND_CHALLENGE 3
599: #define DVD_HOST_SEND_KEY2 4
600:
601:
602: #define DVD_AUTH_ESTABLISHED 5
603: #define DVD_AUTH_FAILURE 6
604:
605:
606: #define DVD_LU_SEND_TITLE_KEY 7
607: #define DVD_LU_SEND_ASF 8
608: #define DVD_INVALIDATE_AGID 9
609: #define DVD_LU_SEND_RPC_STATE 10
610: #define DVD_HOST_SEND_RPC_STATE 11
611:
612:
613: typedef __u8 dvd_key[5];
614: typedef __u8 dvd_challenge[10];
615:
616: struct dvd_lu_send_agid {
617: __u8 type;
618: unsigned agid : 2;
619: };
620:
621: struct dvd_host_send_challenge {
622: __u8 type;
623: unsigned agid : 2;
624:
625: dvd_challenge chal;
626: };
627:
628: struct dvd_send_key {
629: __u8 type;
630: unsigned agid : 2;
631:
632: dvd_key key;
633: };
634:
635: struct dvd_lu_send_challenge {
636: __u8 type;
637: unsigned agid : 2;
638:
639: dvd_challenge chal;
640: };
641:
642: #define DVD_CPM_NO_COPYRIGHT 0
643: #define DVD_CPM_COPYRIGHTED 1
644:
645: #define DVD_CP_SEC_NONE 0
646: #define DVD_CP_SEC_EXIST 1
647:
648: #define DVD_CGMS_UNRESTRICTED 0
649: #define DVD_CGMS_SINGLE 2
650: #define DVD_CGMS_RESTRICTED 3
651:
652: struct dvd_lu_send_title_key {
653: __u8 type;
654: unsigned agid : 2;
655:
656: dvd_key title_key;
657: int lba;
658: unsigned cpm : 1;
659: unsigned cp_sec : 1;
660: unsigned cgms : 2;
661: };
662:
663: struct dvd_lu_send_asf {
664: __u8 type;
665: unsigned agid : 2;
666:
667: unsigned asf : 1;
668: };
669:
670: struct dvd_host_send_rpcstate {
671: __u8 type;
672: __u8 pdrc;
673: };
674:
675: struct dvd_lu_send_rpcstate {
676: __u8 type : 2;
677: __u8 vra : 3;
678: __u8 ucca : 3;
679: __u8 region_mask;
680: __u8 rpc_scheme;
681: };
682:
683: typedef union {
684: __u8 type;
685:
686: struct dvd_lu_send_agid lsa;
687: struct dvd_host_send_challenge hsc;
688: struct dvd_send_key lsk;
689: struct dvd_lu_send_challenge lsc;
690: struct dvd_send_key hsk;
691: struct dvd_lu_send_title_key lstk;
692: struct dvd_lu_send_asf lsasf;
693: struct dvd_host_send_rpcstate hrpcs;
694: struct dvd_lu_send_rpcstate lrpcs;
695: } dvd_authinfo;
696:
697: struct request_sense {
698: #if defined(__BIG_ENDIAN_BITFIELD)
699: __u8 valid : 1;
700: __u8 error_code : 7;
701: #elif defined(__LITTLE_ENDIAN_BITFIELD)
702: __u8 error_code : 7;
703: __u8 valid : 1;
704: #endif
705: __u8 segment_number;
706: #if defined(__BIG_ENDIAN_BITFIELD)
707: __u8 reserved1 : 2;
708: __u8 ili : 1;
709: __u8 reserved2 : 1;
710: __u8 sense_key : 4;
711: #elif defined(__LITTLE_ENDIAN_BITFIELD)
712: __u8 sense_key : 4;
713: __u8 reserved2 : 1;
714: __u8 ili : 1;
715: __u8 reserved1 : 2;
716: #endif
717: __u8 information[4];
718: __u8 add_sense_len;
719: __u8 command_info[4];
720: __u8 asc;
721: __u8 ascq;
722: __u8 fruc;
723: __u8 sks[3];
724: __u8 asb[46];
725: };
726:
727:
728:
729:
730: #define CDF_RWRT 0x0020
731: #define CDF_HWDM 0x0024
732: #define CDF_MRW 0x0028
733:
734:
735:
736:
737: #define CDM_MRW_NOTMRW 0
738: #define CDM_MRW_BGFORMAT_INACTIVE 1
739: #define CDM_MRW_BGFORMAT_ACTIVE 2
740: #define CDM_MRW_BGFORMAT_COMPLETE 3
741:
742:
743:
744:
745: #define MRW_LBA_DMA 0
746: #define MRW_LBA_GAA 1
747:
748:
749:
750:
751:
752: #define MRW_MODE_PC_PRE1 0x2c
753: #define MRW_MODE_PC 0x03
754:
755: struct mrw_feature_desc {
756: __be16 feature_code;
757: #if defined(__BIG_ENDIAN_BITFIELD)
758: __u8 reserved1 : 2;
759: __u8 feature_version : 4;
760: __u8 persistent : 1;
761: __u8 curr : 1;
762: #elif defined(__LITTLE_ENDIAN_BITFIELD)
763: __u8 curr : 1;
764: __u8 persistent : 1;
765: __u8 feature_version : 4;
766: __u8 reserved1 : 2;
767: #endif
768: __u8 add_len;
769: #if defined(__BIG_ENDIAN_BITFIELD)
770: __u8 reserved2 : 7;
771: __u8 write : 1;
772: #elif defined(__LITTLE_ENDIAN_BITFIELD)
773: __u8 write : 1;
774: __u8 reserved2 : 7;
775: #endif
776: __u8 reserved3;
777: __u8 reserved4;
778: __u8 reserved5;
779: };
780:
781:
782: struct rwrt_feature_desc {
783: __be16 feature_code;
784: #if defined(__BIG_ENDIAN_BITFIELD)
785: __u8 reserved1 : 2;
786: __u8 feature_version : 4;
787: __u8 persistent : 1;
788: __u8 curr : 1;
789: #elif defined(__LITTLE_ENDIAN_BITFIELD)
790: __u8 curr : 1;
791: __u8 persistent : 1;
792: __u8 feature_version : 4;
793: __u8 reserved1 : 2;
794: #endif
795: __u8 add_len;
796: __u32 last_lba;
797: __u32 block_size;
798: __u16 blocking;
799: #if defined(__BIG_ENDIAN_BITFIELD)
800: __u8 reserved2 : 7;
801: __u8 page_present : 1;
802: #elif defined(__LITTLE_ENDIAN_BITFIELD)
803: __u8 page_present : 1;
804: __u8 reserved2 : 7;
805: #endif
806: __u8 reserved3;
807: };
808:
809: typedef struct {
810: __be16 disc_information_length;
811: #if defined(__BIG_ENDIAN_BITFIELD)
812: __u8 reserved1 : 3;
813: __u8 erasable : 1;
814: __u8 border_status : 2;
815: __u8 disc_status : 2;
816: #elif defined(__LITTLE_ENDIAN_BITFIELD)
817: __u8 disc_status : 2;
818: __u8 border_status : 2;
819: __u8 erasable : 1;
820: __u8 reserved1 : 3;
821: #else
822: #error "Please fix <asm/byteorder.h>"
823: #endif
824: __u8 n_first_track;
825: __u8 n_sessions_lsb;
826: __u8 first_track_lsb;
827: __u8 last_track_lsb;
828: #if defined(__BIG_ENDIAN_BITFIELD)
829: __u8 did_v : 1;
830: __u8 dbc_v : 1;
831: __u8 uru : 1;
832: __u8 reserved2 : 2;
833: __u8 dbit : 1;
834: __u8 mrw_status : 2;
835: #elif defined(__LITTLE_ENDIAN_BITFIELD)
836: __u8 mrw_status : 2;
837: __u8 dbit : 1;
838: __u8 reserved2 : 2;
839: __u8 uru : 1;
840: __u8 dbc_v : 1;
841: __u8 did_v : 1;
842: #endif
843: __u8 disc_type;
844: __u8 n_sessions_msb;
845: __u8 first_track_msb;
846: __u8 last_track_msb;
847: __u32 disc_id;
848: __u32 lead_in;
849: __u32 lead_out;
850: __u8 disc_bar_code[8];
851: __u8 reserved3;
852: __u8 n_opc;
853: } disc_information;
854:
855: typedef struct {
856: __be16 track_information_length;
857: __u8 track_lsb;
858: __u8 session_lsb;
859: __u8 reserved1;
860: #if defined(__BIG_ENDIAN_BITFIELD)
861: __u8 reserved2 : 2;
862: __u8 damage : 1;
863: __u8 copy : 1;
864: __u8 track_mode : 4;
865: __u8 rt : 1;
866: __u8 blank : 1;
867: __u8 packet : 1;
868: __u8 fp : 1;
869: __u8 data_mode : 4;
870: __u8 reserved3 : 6;
871: __u8 lra_v : 1;
872: __u8 nwa_v : 1;
873: #elif defined(__LITTLE_ENDIAN_BITFIELD)
874: __u8 track_mode : 4;
875: __u8 copy : 1;
876: __u8 damage : 1;
877: __u8 reserved2 : 2;
878: __u8 data_mode : 4;
879: __u8 fp : 1;
880: __u8 packet : 1;
881: __u8 blank : 1;
882: __u8 rt : 1;
883: __u8 nwa_v : 1;
884: __u8 lra_v : 1;
885: __u8 reserved3 : 6;
886: #endif
887: __be32 track_start;
888: __be32 next_writable;
889: __be32 free_blocks;
890: __be32 fixed_packet_size;
891: __be32 track_size;
892: __be32 last_rec_address;
893: } track_information;
894:
895: struct feature_header {
896: __u32 data_len;
897: __u8 reserved1;
898: __u8 reserved2;
899: __u16 curr_profile;
900: };
901:
902: struct mode_page_header {
903: __be16 mode_data_length;
904: __u8 medium_type;
905: __u8 reserved1;
906: __u8 reserved2;
907: __u8 reserved3;
908: __be16 desc_length;
909: };
910:
911:
912: #endif
913:
© Andrew Scott 2006 -
2025,
All Rights Reserved