1 |
1633 |
jcastillo |
/* ucdrom.h. Uniform cdrom data structures for cdrom.c. -*- linux-c -*-
|
2 |
|
|
Copyright (c) 1996 David van Leeuwen.
|
3 |
|
|
*/
|
4 |
|
|
|
5 |
|
|
#ifndef LINUX_UCDROM_H
|
6 |
|
|
#define LINUX_UCDROM_H
|
7 |
|
|
|
8 |
|
|
#ifdef __KERNEL__
|
9 |
|
|
struct cdrom_device_ops {
|
10 |
|
|
/* routines */
|
11 |
|
|
int (*open) (kdev_t, int);
|
12 |
|
|
void (*release) (kdev_t);
|
13 |
|
|
int (*open_files) (kdev_t); /* number of open files */
|
14 |
|
|
int (*drive_status) (kdev_t);
|
15 |
|
|
int (*disc_status) (kdev_t);
|
16 |
|
|
int (*media_changed) (kdev_t);
|
17 |
|
|
int (*tray_move) (kdev_t, int);
|
18 |
|
|
int (*lock_door) (kdev_t, int);
|
19 |
|
|
int (*select_speed) (kdev_t, int);
|
20 |
|
|
int (*select_disc) (kdev_t, int);
|
21 |
|
|
int (*get_last_session) (kdev_t, struct cdrom_multisession *);
|
22 |
|
|
int (*get_mcn) (kdev_t, struct cdrom_mcn *);
|
23 |
|
|
int (*reset) (kdev_t dev); /* hard reset device */
|
24 |
|
|
int (*audio_ioctl) (kdev_t, unsigned int, void *); /* play stuff */
|
25 |
|
|
int (*dev_ioctl) (kdev_t, unsigned int, unsigned long); /* dev-specific */
|
26 |
|
|
/* specifications */
|
27 |
|
|
const int capability; /* capability flags */
|
28 |
|
|
int mask; /* mask of capability: disables them */
|
29 |
|
|
const int speed; /* maximum speed for reading data */
|
30 |
|
|
const int minors; /* number of minor devs supported */
|
31 |
|
|
const int capacity; /* number of discs in jukebox */
|
32 |
|
|
/* device-related storage */
|
33 |
|
|
int options; /* options flags */
|
34 |
|
|
long mc_flags; /* media change buffer flags (2*16) */
|
35 |
|
|
};
|
36 |
|
|
#endif
|
37 |
|
|
|
38 |
|
|
/* capability flags */
|
39 |
|
|
#define CDC_CLOSE_TRAY 0x1 /* caddy systems _can't_ close */
|
40 |
|
|
#define CDC_OPEN_TRAY 0x2 /* but _can_ eject. */
|
41 |
|
|
#define CDC_LOCK 0x4 /* disable manual eject */
|
42 |
|
|
#define CDC_SELECT_SPEED 0x8 /* programmable speed */
|
43 |
|
|
#define CDC_SELECT_DISC 0x10 /* select disc from juke-box */
|
44 |
|
|
#define CDC_MULTI_SESSION 0x20 /* read sessions>1 */
|
45 |
|
|
#define CDC_MCN 0x40 /* Medium Catalog Number */
|
46 |
|
|
#define CDC_MEDIA_CHANGED 0x80 /* media changed */
|
47 |
|
|
#define CDC_PLAY_AUDIO 0x100 /* audio functions */
|
48 |
|
|
|
49 |
|
|
/* drive status possibilities */
|
50 |
|
|
#define CDS_NO_INFO 0 /* if not implemented */
|
51 |
|
|
#define CDS_NO_DISC 1
|
52 |
|
|
#define CDS_TRAY_OPEN 2
|
53 |
|
|
#define CDS_DRIVE_NOT_READY 3
|
54 |
|
|
#define CDS_DISC_OK 4
|
55 |
|
|
|
56 |
|
|
/* disc status possibilities, other than CDS_NO_DISC */
|
57 |
|
|
#define CDS_AUDIO 100
|
58 |
|
|
#define CDS_DATA_1 101
|
59 |
|
|
#define CDS_DATA_2 102
|
60 |
|
|
#define CDS_XA_2_1 103
|
61 |
|
|
#define CDS_XA_2_2 104
|
62 |
|
|
|
63 |
|
|
/* User-configurable behavior options */
|
64 |
|
|
#define CDO_AUTO_CLOSE 0x1 /* close tray on first open() */
|
65 |
|
|
#define CDO_AUTO_EJECT 0x2 /* open tray on last release() */
|
66 |
|
|
#define CDO_USE_FFLAGS 0x4 /* use O_NONBLOCK information on open */
|
67 |
|
|
#define CDO_LOCK 0x8 /* lock tray on open files */
|
68 |
|
|
#define CDO_CHECK_TYPE 0x10 /* check type on open for data */
|
69 |
|
|
|
70 |
|
|
/* Some more ioctls to control these options */
|
71 |
|
|
#define CDROM_SET_OPTIONS 0x5320
|
72 |
|
|
#define CDROM_CLEAR_OPTIONS 0x5321
|
73 |
|
|
#define CDROM_SELECT_SPEED 0x5322 /* head-speed */
|
74 |
|
|
#define CDROM_SELECT_DISC 0x5323 /* for juke-boxes */
|
75 |
|
|
#define CDROM_MEDIA_CHANGED 0x5325
|
76 |
|
|
#define CDROM_DRIVE_STATUS 0x5326 /* tray position, etc. */
|
77 |
|
|
#define CDROM_DISC_STATUS 0x5327 /* disc type etc. */
|
78 |
|
|
|
79 |
|
|
/* Rename an old ioctl */
|
80 |
|
|
#define CDROM_GET_MCN CDROM_GET_UPC /* medium catalog number */
|
81 |
|
|
|
82 |
|
|
#ifdef __KERNEL__
|
83 |
|
|
/* the general file operations structure: */
|
84 |
|
|
extern struct file_operations cdrom_fops;
|
85 |
|
|
|
86 |
|
|
extern int register_cdrom(int major, char *name,
|
87 |
|
|
struct cdrom_device_ops *cdo);
|
88 |
|
|
extern int unregister_cdrom(int major, char *name);
|
89 |
|
|
#endif
|
90 |
|
|
|
91 |
|
|
#endif /* LINUX_UCDROM_H */
|
92 |
|
|
/*
|
93 |
|
|
* Local variables:
|
94 |
|
|
* comment-column: 40
|
95 |
|
|
* End:
|
96 |
|
|
*/
|