libcdio
0.90
Main Page
Data Structures
Files
File List
Globals
include
cdio
mmc.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
3
Rocky Bernstein <rocky@gnu.org>
4
5
This program is free software: you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation, either version 3 of the License, or
8
(at your option) any later version.
9
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
14
15
You should have received a copy of the GNU General Public License
16
along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
36
#ifndef CDIO_MMC_H_
37
#define CDIO_MMC_H_
38
39
#include <
cdio/cdio.h
>
40
#include <
cdio/types.h
>
41
#include <
cdio/dvd.h
>
42
#include <
cdio/audio.h
>
43
#include <
cdio/mmc_util.h
>
44
45
#ifdef __cplusplus
46
extern
"C"
{
47
#endif
/* __cplusplus */
48
49
/* On GNU/Linux see <linux/byteorder/big_endian.h> and
50
<linux/byteorder/little_endian.h>
51
*/
52
#ifdef WORDS_BIGENDIAN
53
# if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD)
54
# define __MMC_BIG_ENDIAN_BITFIELD
55
# endif
56
#else
57
# if !defined(__LITTLE_ENDIAN_BITFIELD) && !defined(__BIG_ENDIAN_BITFIELD)
58
# define __MMC_LITTLE_ENDIAN_BITFIELD
59
# endif
60
#endif
61
69
typedef
struct
cdio_mmc_request_sense
{
70
#if defined(__MMC_BIG_ENDIAN_BITFIELD)
71
uint8_t
valid
: 1;
72
uint8_t
error_code
: 7;
73
#else
74
uint8_t
error_code
: 7;
75
uint8_t
valid
: 1;
76
#endif
77
uint8_t
segment_number
;
78
#if defined(__MMC_BIG_ENDIAN_BITFIELD)
79
uint8_t
filemark
: 1;
81
uint8_t
eom
: 1;
84
uint8_t
ili
: 1;
85
uint8_t
reserved1
: 1;
86
uint8_t
sense_key
: 4;
87
#else
88
uint8_t
sense_key
: 4;
89
uint8_t
reserved1
: 1;
90
uint8_t
ili
: 1;
91
uint8_t
eom
: 1;
94
uint8_t
filemark
: 1;
96
#endif
97
uint8_t
information
[4];
98
uint8_t
additional_sense_len
;
99
uint8_t
command_info
[4];
100
uint8_t
asc
;
101
uint8_t
ascq
;
102
uint8_t
fruc
;
103
uint8_t
sks
[3];
104
uint8_t
asb
[46];
105
}
cdio_mmc_request_sense_t
;
106
107
111
typedef
enum
{
112
CDIO_MMC_SENSE_KEY_NO_SENSE
= 0,
113
CDIO_MMC_SENSE_KEY_RECOVERED_ERROR
= 1,
114
CDIO_MMC_SENSE_KEY_NOT_READY
= 2,
115
CDIO_MMC_SENSE_KEY_MEDIUM_ERROR
= 3,
116
CDIO_MMC_SENSE_KEY_HARDWARE_ERROR
= 4,
117
CDIO_MMC_SENSE_KEY_ILLEGAL_REQUEST
= 5,
118
CDIO_MMC_SENSE_KEY_UNIT_ATTENTION
= 6,
119
CDIO_MMC_SENSE_KEY_DATA_PROTECT
= 7,
120
CDIO_MMC_SENSE_KEY_BLANK_CHECK
= 8,
121
CDIO_MMC_SENSE_KEY_VENDOR_SPECIFIC
= 9,
122
CDIO_MMC_SENSE_KEY_COPY_ABORTED
= 10,
123
CDIO_MMC_SENSE_KEY_ABORTED_COMMAND
= 11,
124
CDIO_MMC_SENSE_KEY_OBSOLETE
= 12,
125
}
cdio_mmc_sense_key_t
;
126
138
typedef
enum
{
139
CDIO_MMC_GPCMD_TEST_UNIT_READY
= 0x00,
140
CDIO_MMC_GPCMD_REQUEST_SENSE
= 0x03,
141
CDIO_MMC_GPCMD_FORMAT_UNIT
= 0x04,
142
CDIO_MMC_GPCMD_INQUIRY
= 0x12,
144
CDIO_MMC_GPCMD_MODE_SELECT_6
= 0x15,
146
CDIO_MMC_GPCMD_MODE_SENSE_6
= 0x1a,
151
CDIO_MMC_GPCMD_START_STOP_UNIT
= 0x1b,
153
CDIO_MMC_GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL
154
= 0x1e,
160
CDIO_MMC_GPCMD_READ_FORMAT_CAPACITIES
= 0x23,
161
CDIO_MMC_GPCMD_READ_CAPACITIY
= 0x25,
162
CDIO_MMC_GPCMD_READ_10
= 0x28,
164
CDIO_MMC_GPCMD_WRITE_10
= 0x2a,
165
CDIO_MMC_GPCMD_SEEK_10
= 0x2b,
166
CDIO_MMC_GPCMD_ERASE_10
= 0x2c,
167
CDIO_MMC_GPCMD_WRITE_AND_VERIFY_10
= 0x2e,
168
CDIO_MMC_GPCMD_VERIFY_10
= 0x2f,
169
CDIO_MMC_GPCMD_SYNCHRONIZE_CACHE
= 0x35,
170
CDIO_MMC_GPCMD_WRITE_BUFFER
= 0x3b,
171
CDIO_MMC_GPCMD_READ_BUFFER
= 0x3c,
172
CDIO_MMC_GPCMD_READ_SUBCHANNEL
= 0x42,
174
CDIO_MMC_GPCMD_READ_TOC
= 0x43,
176
CDIO_MMC_GPCMD_READ_HEADER
= 0x44,
177
CDIO_MMC_GPCMD_PLAY_AUDIO_10
= 0x45,
180
CDIO_MMC_GPCMD_GET_CONFIGURATION
= 0x46,
182
CDIO_MMC_GPCMD_PLAY_AUDIO_MSF
= 0x47,
185
CDIO_MMC_GPCMD_PLAY_AUDIO_TI
= 0x48,
186
CDIO_MMC_GPCMD_PLAY_TRACK_REL_10
= 0x49,
193
CDIO_MMC_GPCMD_GET_EVENT_STATUS
= 0x4a,
195
CDIO_MMC_GPCMD_PAUSE_RESUME
= 0x4b,
199
CDIO_MMC_GPCMD_READ_DISC_INFORMATION
= 0x51,
201
CDIO_MMC_GPCMD_READ_TRACK_INFORMATION
= 0x52,
203
CDIO_MMC_GPCMD_RESERVE_TRACK
= 0x53,
204
CDIO_MMC_GPCMD_SEND_OPC_INFORMATION
= 0x54,
205
CDIO_MMC_GPCMD_MODE_SELECT_10
= 0x55,
207
CDIO_MMC_GPCMD_REPAIR_TRACK
= 0x58,
208
CDIO_MMC_GPCMD_MODE_SENSE_10
= 0x5a,
213
CDIO_MMC_GPCMD_CLOSE_TRACK_SESSION
= 0x5b,
214
CDIO_MMC_GPCMD_READ_BUFFER_CAPACITY
= 0x5c,
215
CDIO_MMC_GPCMD_SEND_CUE_SHEET
= 0x5d,
216
220
CDIO_MMC_GPCMD_REPORT_LUNS
= 0xa0,
221
CDIO_MMC_GPCMD_BLANK
= 0xa1,
222
CDIO_MMC_GPCMD_SECURITY_PROTOCOL_IN
= 0xa2,
223
CDIO_MMC_GPCMD_SEND_KEY
= 0xa3,
224
CDIO_MMC_GPCMD_REPORT_KEY
= 0xa4,
225
CDIO_MMC_GPCMD_PLAY_AUDIO_12
= 0xa5,
228
CDIO_MMC_GPCMD_LOAD_UNLOAD
= 0xa6,
230
CDIO_MMC_GPCMD_SET_READ_AHEAD
= 0xa7,
231
CDIO_MMC_GPCMD_READ_12
= 0xa8,
233
CDIO_MMC_GPCMD_PLAY_TRACK_REL_12
= 0xa9,
239
CDIO_MMC_GPCMD_WRITE_12
= 0xaa,
240
CDIO_MMC_GPCMD_READ_MEDIA_SERIAL_12
= 0xab,
241
CDIO_MMC_GPCMD_GET_PERFORMANCE
= 0xac,
242
CDIO_MMC_GPCMD_READ_DVD_STRUCTURE
= 0xad,
244
CDIO_MMC_GPCMD_SECURITY_PROTOCOL_OUT
= 0xb5,
245
CDIO_MMC_GPCMD_SET_STREAMING
= 0xb6,
246
CDIO_MMC_GPCMD_READ_MSF
= 0xb9,
249
CDIO_MMC_GPCMD_SET_SPEED
= 0xbb,
259
CDIO_MMC_GPCMD_MECHANISM_STATUS
= 0xbd,
260
CDIO_MMC_GPCMD_READ_CD
= 0xbe,
263
CDIO_MMC_GPCMD_SEND_DISC_STRUCTURE
= 0xbf,
267
CDIO_MMC_GPCMD_CD_PLAYBACK_STATUS
= 0xc4 ,
268
CDIO_MMC_GPCMD_PLAYBACK_CONTROL
= 0xc9 ,
269
CDIO_MMC_GPCMD_READ_CDDA
= 0xd8 ,
270
CDIO_MMC_GPCMD_READ_CDXA
= 0xdb ,
271
CDIO_MMC_GPCMD_READ_ALL_SUBCODES
= 0xdf
272
}
cdio_mmc_gpcmd_t
;
273
277
typedef
enum
{
278
CDIO_MMC_READ_SUB_ST_INVALID
= 0x00,
279
CDIO_MMC_READ_SUB_ST_PLAY
= 0x11,
281
CDIO_MMC_READ_SUB_ST_PAUSED
= 0x12,
282
CDIO_MMC_READ_SUB_ST_COMPLETED
= 0x13,
284
CDIO_MMC_READ_SUB_ST_ERROR
= 0x14,
286
CDIO_MMC_READ_SUB_ST_NO_STATUS
= 0x15,
288
}
cdio_mmc_read_sub_state_t
;
289
291
typedef
enum
{
292
CDIO_MMC_READ_TYPE_ANY
= 0,
293
CDIO_MMC_READ_TYPE_CDDA
= 1,
294
CDIO_MMC_READ_TYPE_MODE1
= 2,
295
CDIO_MMC_READ_TYPE_MODE2
= 3,
296
CDIO_MMC_READ_TYPE_M2F1
= 4,
297
CDIO_MMC_READ_TYPE_M2F2
= 5
298
}
cdio_mmc_read_cd_type_t
;
299
303
typedef
enum
{
304
CDIO_MMC_READTOC_FMT_TOC
= 0,
305
CDIO_MMC_READTOC_FMT_SESSION
= 1,
306
CDIO_MMC_READTOC_FMT_FULTOC
= 2,
307
CDIO_MMC_READTOC_FMT_PMA
= 3,
308
CDIO_MMC_READTOC_FMT_ATIP
= 4,
309
CDIO_MMC_READTOC_FMT_CDTEXT
= 5
310
}
cdio_mmc_readtoc_t
;
311
315
typedef
enum
{
316
CDIO_MMC_R_W_ERROR_PAGE
= 0x01,
317
CDIO_MMC_WRITE_PARMS_PAGE
= 0x05,
318
CDIO_MMC_CDR_PARMS_PAGE
= 0x0d,
319
CDIO_MMC_AUDIO_CTL_PAGE
= 0x0e,
320
CDIO_MMC_POWER_PAGE
= 0x1a,
321
CDIO_MMC_FAULT_FAIL_PAGE
= 0x1c,
322
CDIO_MMC_TO_PROTECT_PAGE
= 0x1d,
323
CDIO_MMC_CAPABILITIES_PAGE
= 0x2a,
324
CDIO_MMC_ALL_PAGES
= 0x3f,
325
}
cdio_mmc_mode_page_t
;
326
330
typedef
enum
{
331
CDIO_MMC_READ_DISC_INFO_STANDARD
= 0x0,
332
CDIO_MMC_READ_DISC_INFO_TRACK
= 0x1,
333
CDIO_MMC_READ_DISC_INFO_POW
= 0x2,
334
}
cdio_mmc_read_disc_info_datatype_t
;
335
336
/* For backward compatibility. */
337
#define CDIO_MMC_GPCMD_READ_DISC_INFO CDIO_MMC_GPCMD_READ_DISC_INFORMATION
338
#define CDIO_MMC_GPCMD_READ_DISC_STRUCTURE CDIO_MMC_GPMD_READ_DVD_STRUCTURE
339
340
341
PRAGMA_BEGIN_PACKED
342
struct
mmc_audio_volume_entry_s
343
{
344
uint8_t
selection
;
/* Only the lower 4 bits are used. */
345
uint8_t
volume
;
346
}
GNUC_PACKED
;
347
348
typedef
struct
mmc_audio_volume_entry_s
mmc_audio_volume_entry_t
;
349
353
struct
mmc_audio_volume_s
354
{
355
mmc_audio_volume_entry_t
port
[4];
356
}
GNUC_PACKED
;
357
358
typedef
struct
mmc_audio_volume_s
mmc_audio_volume_t
;
359
360
PRAGMA_END_PACKED
361
362
366
typedef
enum
{
367
CDIO_MMC_GET_CONF_ALL_FEATURES
= 0,
369
CDIO_MMC_GET_CONF_CURRENT_FEATURES
= 1,
372
CDIO_MMC_GET_CONF_NAMED_FEATURE
= 2
374
}
cdio_mmc_get_conf_t
;
375
376
380
typedef
enum
{
381
CDIO_MMC_FEATURE_PROFILE_LIST
= 0x000,
382
CDIO_MMC_FEATURE_CORE
= 0x001,
383
CDIO_MMC_FEATURE_MORPHING
= 0x002,
385
CDIO_MMC_FEATURE_REMOVABLE_MEDIUM
= 0x003,
386
CDIO_MMC_FEATURE_WRITE_PROTECT
= 0x004,
387
CDIO_MMC_FEATURE_RANDOM_READABLE
= 0x010,
388
CDIO_MMC_FEATURE_MULTI_READ
= 0x01D,
389
CDIO_MMC_FEATURE_CD_READ
= 0x01E,
390
CDIO_MMC_FEATURE_DVD_READ
= 0x01F,
391
CDIO_MMC_FEATURE_RANDOM_WRITABLE
= 0x020,
392
CDIO_MMC_FEATURE_INCR_WRITE
= 0x021,
394
CDIO_MMC_FEATURE_SECTOR_ERASE
= 0x022,
395
CDIO_MMC_FEATURE_FORMATABLE
= 0x023,
396
CDIO_MMC_FEATURE_DEFECT_MGMT
= 0x024,
400
CDIO_MMC_FEATURE_WRITE_ONCE
= 0x025,
402
CDIO_MMC_FEATURE_RESTRICT_OVERW
= 0x026,
404
CDIO_MMC_FEATURE_CD_RW_CAV
= 0x027,
405
CDIO_MMC_FEATURE_MRW
= 0x028,
406
CDIO_MMC_FEATURE_ENHANCED_DEFECT
= 0x029,
407
CDIO_MMC_FEATURE_DVD_PRW
= 0x02A,
408
CDIO_MMC_FEATURE_DVD_PR
= 0x02B,
409
CDIO_MMC_FEATURE_RIGID_RES_OVERW
= 0x02C,
410
CDIO_MMC_FEATURE_CD_TAO
= 0x02D,
411
CDIO_MMC_FEATURE_CD_SAO
= 0x02E,
413
CDIO_MMC_FEATURE_DVD_R_RW_WRITE
= 0x02F,
414
CDIO_MMC_FEATURE_CD_RW_MEDIA_WRITE
= 0x037,
415
CDIO_MMC_FEATURE_DVD_PR_2_LAYER
= 0x03B,
416
CDIO_MMC_FEATURE_POWER_MGMT
= 0x100,
418
CDIO_MMC_FEATURE_CDDA_EXT_PLAY
= 0x103,
421
CDIO_MMC_FEATURE_MCODE_UPGRADE
= 0x104,
/* Ability for the device to
422
accept new microcode via
423
the interface */
424
CDIO_MMC_FEATURE_TIME_OUT
= 0x105,
427
CDIO_MMC_FEATURE_DVD_CSS
= 0x106,
430
CDIO_MMC_FEATURE_RT_STREAMING
= 0x107,
433
CDIO_MMC_FEATURE_LU_SN
= 0x108,
435
CDIO_MMC_FEATURE_FIRMWARE_DATE
= 0x1FF,
437
}
cdio_mmc_feature_t
;
438
439
typedef
enum
{
440
CDIO_MMC_FEATURE_INTERFACE_UNSPECIFIED
= 0,
441
CDIO_MMC_FEATURE_INTERFACE_SCSI
= 1,
442
CDIO_MMC_FEATURE_INTERFACE_ATAPI
= 2,
443
CDIO_MMC_FEATURE_INTERFACE_IEEE_1394
= 3,
444
CDIO_MMC_FEATURE_INTERFACE_IEEE_1394A
= 4,
445
CDIO_MMC_FEATURE_INTERFACE_FIBRE_CH
= 5
446
}
cdio_mmc_feature_interface_t
;
447
448
453
#define MAX_CDB_LEN 12
454
459
typedef
struct
mmc_cdb_s
{
460
uint8_t
field
[
MAX_CDB_LEN
];
461
}
mmc_cdb_t
;
462
467
typedef
struct
mmc_feature_list_header_s
{
468
unsigned
char
length_msb
;
469
unsigned
char
length_1sb
;
470
unsigned
char
length_2sb
;
471
unsigned
char
length_lsb
;
472
unsigned
char
reserved1
;
473
unsigned
char
reserved2
;
474
unsigned
char
profile_msb
;
475
unsigned
char
profile_lsb
;
476
}
cdio_mmc_feature_list_header_t
;
477
482
typedef
enum
mmc_direction_s
{
483
SCSI_MMC_DATA_READ
,
484
SCSI_MMC_DATA_WRITE
,
485
SCSI_MMC_DATA_NONE
486
}
cdio_mmc_direction_t
;
493
#define SCSI_MMC_HAS_DIR_NONE 1
494
495
typedef
struct
mmc_subchannel_s
496
{
497
uint8_t
reserved
;
498
uint8_t
audio_status
;
499
uint16_t
data_length
;
500
uint8_t
format
;
501
uint8_t
address
: 4;
502
uint8_t
control
: 4;
503
uint8_t
track
;
504
uint8_t
index
;
505
uint8_t
abs_addr
[4];
506
uint8_t
rel_addr
[4];
507
}
cdio_mmc_subchannel_t
;
508
509
#define CDIO_MMC_SET_COMMAND(cdb, command) \
510
cdb[0] = command
511
512
#define CDIO_MMC_SET_READ_TYPE(cdb, sector_type) \
513
cdb[1] = (sector_type << 2)
514
515
#define CDIO_MMC_GETPOS_LEN16(p, pos) \
516
(p[pos]<<8) + p[pos+1]
517
518
#define CDIO_MMC_GET_LEN16(p) \
519
(p[0]<<8) + p[1]
520
521
#define CDIO_MMC_GET_LEN32(p) \
522
(p[0] << 24) + (p[1] << 16) + (p[2] << 8) + p[3];
523
524
#define CDIO_MMC_SET_LEN16(cdb, pos, len) \
525
cdb[pos ] = (len >> 8) & 0xff; \
526
cdb[pos+1] = (len ) & 0xff
527
528
#define CDIO_MMC_SET_READ_LBA(cdb, lba) \
529
cdb[2] = (lba >> 24) & 0xff; \
530
cdb[3] = (lba >> 16) & 0xff; \
531
cdb[4] = (lba >> 8) & 0xff; \
532
cdb[5] = (lba ) & 0xff
533
534
#define CDIO_MMC_SET_START_TRACK(cdb, command) \
535
cdb[6] = command
536
537
#define CDIO_MMC_SET_READ_LENGTH24(cdb, len) \
538
cdb[6] = (len >> 16) & 0xff; \
539
cdb[7] = (len >> 8) & 0xff; \
540
cdb[8] = (len ) & 0xff
541
542
#define CDIO_MMC_SET_READ_LENGTH16(cdb, len) \
543
CDIO_MMC_SET_LEN16(cdb, 7, len)
544
545
#define CDIO_MMC_SET_READ_LENGTH8(cdb, len) \
546
cdb[8] = (len ) & 0xff
547
548
#define CDIO_MMC_MCSB_ALL_HEADERS 0xf
549
550
#define CDIO_MMC_SET_MAIN_CHANNEL_SELECTION_BITS(cdb, val) \
551
cdb[9] = val << 3;
552
561
driver_return_code_t
mmc_audio_get_volume
(
CdIo_t
*p_cdio,
/*out*/
562
mmc_audio_volume_t
*p_volume);
563
570
driver_return_code_t
571
mmc_audio_read_subchannel
(
CdIo_t
*p_cdio,
572
/*out*/
cdio_subchannel_t
*p_subchannel);
573
583
driver_return_code_t
584
mmc_isrc_track_read_subchannel
(
CdIo_t
*p_cdio,
/*in*/
const
track_t
track,
585
/*out*/
char
*p_isrc);
586
591
const
char
*
mmc_audio_state2str
( uint8_t i_audio_state );
592
599
int
mmc_get_blocksize
(
CdIo_t
*p_cdio );
600
606
uint8_t
mmc_get_cmd_len
(uint8_t mmc_cmd);
607
614
lsn_t
mmc_get_disc_last_lsn
(
const
CdIo_t
*p_cdio );
615
625
discmode_t
mmc_get_discmode
(
const
CdIo_t
*p_cdio );
626
627
628
typedef
enum
{
629
CDIO_MMC_LEVEL_WEIRD
,
630
CDIO_MMC_LEVEL_1
,
631
CDIO_MMC_LEVEL_2
,
632
CDIO_MMC_LEVEL_3
,
633
CDIO_MMC_LEVEL_NONE
634
}
cdio_mmc_level_t
;
635
641
cdio_mmc_level_t
mmc_get_drive_mmc_cap
(
CdIo_t
*p_cdio);
642
643
651
discmode_t
mmc_get_dvd_struct_physical
(
const
CdIo_t
*p_cdio,
652
cdio_dvd_struct_t
*s);
653
660
int
mmc_get_tray_status
(
const
CdIo_t
*p_cdio );
661
670
bool
mmc_get_hwinfo
(
const
CdIo_t
*p_cdio,
671
/* out*/
cdio_hwinfo_t
*p_hw_info );
672
673
680
int
mmc_get_media_changed
(
const
CdIo_t
*p_cdio);
681
693
char
*
mmc_get_mcn
(
const
CdIo_t
*p_cdio);
694
703
bool_3way_t
mmc_have_interface
(
CdIo_t
*p_cdio,
704
cdio_mmc_feature_interface_t
e_interface );
705
706
725
driver_return_code_t
mmc_read_data_sectors
(
CdIo_t
*p_cdio,
void
*p_buf,
726
lsn_t
i_lsn,
727
uint16_t i_blocksize,
728
uint32_t i_blocks );
729
734
driver_return_code_t
mmc_read_sectors
(
const
CdIo_t
*p_cdio,
void
*p_buf,
735
lsn_t
i_lsn,
int
read_sector_type,
736
uint32_t i_blocks);
737
753
driver_return_code_t
754
mmc_run_cmd
(
const
CdIo_t
*p_cdio,
unsigned
int
i_timeout_ms,
755
const
mmc_cdb_t
*p_cdb,
756
cdio_mmc_direction_t
e_direction,
unsigned
int
i_buf,
757
/*in/out*/
void
*p_buf );
758
778
driver_return_code_t
779
mmc_run_cmd_len
(
const
CdIo_t
*p_cdio,
unsigned
int
i_timeout_ms,
780
const
mmc_cdb_t
*p_cdb,
unsigned
int
i_cdb,
781
cdio_mmc_direction_t
e_direction,
unsigned
int
i_buf,
782
/*in/out*/
void
*p_buf );
783
801
int
mmc_last_cmd_sense
(
const
CdIo_t
*p_cdio,
802
cdio_mmc_request_sense_t
**pp_sense);
803
807
driver_return_code_t
mmc_set_blocksize
(
const
CdIo_t
*p_cdio,
808
uint16_t i_blocksize);
809
817
const
char
*
mmc_cmd2str
(uint8_t command);
818
819
820
821
#ifdef __cplusplus
822
}
823
#endif
/* __cplusplus */
824
831
extern
cdio_mmc_feature_t
debug_cdio_mmc_feature
;
832
extern
cdio_mmc_feature_interface_t
debug_cdio_mmc_feature_interface
;
833
extern
cdio_mmc_feature_profile_t
debug_cdio_mmc_feature_profile
;
834
extern
cdio_mmc_get_conf_t
debug_cdio_mmc_get_conf
;
835
extern
cdio_mmc_gpcmd_t
debug_cdio_mmc_gpcmd
;
836
extern
cdio_mmc_read_sub_state_t
debug_cdio_mmc_read_sub_state
;
837
extern
cdio_mmc_read_cd_type_t
debug_cdio_mmc_read_cd_type
;
838
extern
cdio_mmc_readtoc_t
debug_cdio_mmc_readtoc
;
839
extern
cdio_mmc_mode_page_t
debug_cdio_mmc_mode_page
;
840
841
#ifndef DO_NOT_WANT_OLD_MMC_COMPATIBILITY
842
#define CDIO_MMC_GPCMD_START_STOP CDIO_MMC_GPCMD_START_STOP_UNIT
843
#define CDIO_MMC_GPCMD_ALLOW_MEDIUM_REMOVAL \
844
CDIO_MMC_GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL
845
#endif
/*DO_NOT_WANT_PARANOIA_COMPATIBILITY*/
846
847
#endif
/* CDIO_MMC_H_ */
848
849
/*
850
* Local variables:
851
* c-file-style: "ruby"
852
* tab-width: 8
853
* indent-tabs-mode: nil
854
* End:
855
*/
Generated for libcdio by
1.8.4