Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
scsi
sr.h
Go to the documentation of this file.
1
/*
2
* sr.h by David Giller
3
* CD-ROM disk driver header file
4
*
5
* adapted from:
6
* sd.h Copyright (C) 1992 Drew Eckhardt
7
* SCSI disk driver header file by
8
* Drew Eckhardt
9
*
10
* <
[email protected]
>
11
*
12
* Modified by Eric Youngdale
[email protected]
to
13
* add scatter-gather, multiple outstanding request, and other
14
* enhancements.
15
*/
16
17
#ifndef _SR_H
18
#define _SR_H
19
20
#include <
linux/genhd.h
>
21
#include <
linux/kref.h
>
22
23
#define MAX_RETRIES 3
24
#define SR_TIMEOUT (30 * HZ)
25
26
struct
scsi_device
;
27
28
/* The CDROM is fairly slow, so we need a little extra time */
29
/* In fact, it is very slow if it has to spin up first */
30
#define IOCTL_TIMEOUT 30*HZ
31
32
33
typedef
struct
scsi_cd
{
34
struct
scsi_driver
*
driver
;
35
unsigned
capacity
;
/* size in blocks */
36
struct
scsi_device
*
device
;
37
unsigned
int
vendor
;
/* vendor code, see sr_vendor.c */
38
unsigned
long
ms_offset
;
/* for reading multisession-CD's */
39
unsigned
use
:1;
/* is this device still supportable */
40
unsigned
xa_flag
:1;
/* CD has XA sectors ? */
41
unsigned
readcd_known
:1;
/* drive supports READ_CD (0xbe) */
42
unsigned
readcd_cdda
:1;
/* reading audio data using READ_CD */
43
unsigned
media_present
:1;
/* media is present */
44
45
/* GET_EVENT spurious event handling, blk layer guarantees exclusion */
46
int
tur_mismatch
;
/* nr of get_event TUR mismatches */
47
bool
tur_changed
:1;
/* changed according to TUR */
48
bool
get_event_changed
:1;
/* changed according to GET_EVENT */
49
bool
ignore_get_event
:1;
/* GET_EVENT is unreliable, use TUR */
50
51
struct
cdrom_device_info
cdi
;
52
/* We hold gendisk and scsi_device references on probe and use
53
* the refs on this kref to decide when to release them */
54
struct
kref
kref
;
55
struct
gendisk *
disk
;
56
}
Scsi_CD
;
57
58
int
sr_do_ioctl
(
Scsi_CD
*,
struct
packet_command
*);
59
60
int
sr_lock_door
(
struct
cdrom_device_info
*,
int
);
61
int
sr_tray_move
(
struct
cdrom_device_info
*,
int
);
62
int
sr_drive_status
(
struct
cdrom_device_info
*,
int
);
63
int
sr_disk_status
(
struct
cdrom_device_info
*);
64
int
sr_get_last_session
(
struct
cdrom_device_info
*,
struct
cdrom_multisession
*);
65
int
sr_get_mcn
(
struct
cdrom_device_info
*,
struct
cdrom_mcn
*);
66
int
sr_reset
(
struct
cdrom_device_info
*);
67
int
sr_select_speed
(
struct
cdrom_device_info
*cdi,
int
speed);
68
int
sr_audio_ioctl
(
struct
cdrom_device_info
*,
unsigned
int
,
void
*);
69
70
int
sr_is_xa
(
Scsi_CD
*);
71
72
/* sr_vendor.c */
73
void
sr_vendor_init
(
Scsi_CD
*);
74
int
sr_cd_check
(
struct
cdrom_device_info
*);
75
int
sr_set_blocklength
(
Scsi_CD
*,
int
blocklength);
76
77
#endif
Generated on Thu Jan 10 2013 14:24:46 for Linux Kernel by
1.8.2