freebsd-skq/sys/sys/wormio.h
Jean-Marc Zucconi c61333539c Add an ioctl to retrieve the next writable address.
Defer the WRITE SESSION command until the first write command, so that
it works like the prepare track command, allowing the device to be
closed after the command.
1998-03-31 01:56:29 +00:00

114 lines
3.3 KiB
C

/* Shared between kernel & process */
#ifndef _SYS_WORMIO_H_
#define _SYS_WORMIO_H_
#include <sys/ioccom.h>
/***************************************************************\
* Ioctls for the WORM drive *
\***************************************************************/
/*
* Prepare disk-wide parameters.
*/
struct wormio_prepare_disk
{
int dummy; /* use dummy writes, laser turned off */
int speed; /* drive speed selection */
};
#define WORMIOCPREPDISK _IOW('W', 20, struct wormio_prepare_disk)
/*
* Prepare track-specific parameters.
*/
struct wormio_prepare_track
{
int audio; /* audio track (data track if 0) */
int preemp; /* audio with preemphasis */
#define BLOCK_RAW 0 /* 2352 bytes, raw data */
#define BLOCK_RAWPQ 1 /* 2368 bytes, raw data with P and Q subchannels */
#define BLOCK_RAWPW 2 /* 2448 bytes, raw data with P-W subchannel appended */
#define BLOCK_MODE_1 8 /* 2048 bytes, mode 1 (ISO/IEC 10149) */
#define BLOCK_MODE_2 9 /* 2336 bytes, mode 2 (ISO/IEC 10149) */
#define BLOCK_MODE_2_FORM_1 10 /* 2048 bytes, CD-ROM XA form 1 */
#define BLOCK_MODE_2_FORM_1b 11 /* 2056 bytes, CD-ROM XA form 1 */
#define BLOCK_MODE_2_FORM_2 12 /* 2324 bytes, CD-ROM XA form 2 */
#define BLOCK_MODE_2_FORM_2b 13 /* 2332 bytes, CD-ROM XA form 2 */
int track_type; /* defines the number of bytes in a block */
#define COPY_INHIBIT 0 /* no copy allowed */
#define COPY_PERMITTED 1 /* track can be copied */
#define COPY_SCMS 2 /* alternate copy */
int copy_bits; /* define the possibilities for copying */
int track_number;
char ISRC_country[2]; /* country code (2 chars) */
char ISRC_owner[3]; /* owner code (3 chars) */
int ISRC_year; /* year of recording */
char ISRC_serial[5]; /* serial number */
};
#define WORMIOCPREPTRACK _IOW('W', 21, struct wormio_prepare_track)
/*
* Fixation: write leadins and leadouts. Select table-of-contents
* type for this session. If onp is != 0, another session will be
* opened.
*/
struct wormio_fixation
{
int toc_type; /* TOC type */
int onp; /* open next program area */
};
#define WORMIOCFIXATION _IOW('W', 22, struct wormio_fixation)
/*
* Finalize track
*/
#define WORMIOCFINISHTRACK _IO('W', 23)
struct wormio_session_info {
u_short lead_in;
u_short lead_out;
};
#define WORMIOCREADSESSIONINFO _IOR('W', 31, struct wormio_session_info)
struct wormio_write_session {
int toc_type;
int onp;
int lofp;
int length;
char catalog[13];
u_char *track_desc;
};
#define WORMIOCWRITESESSION _IOW('W', 32, struct wormio_write_session)
struct wormio_first_writable_addr {
int track;
int mode;
int raw;
int audio;
int *addr;
};
#define WORMIOCFIRSTWRITABLEADDR _IOWR('W', 33, struct wormio_first_writable_addr)
/* Errors/warnings */
#define WORM_SEQUENCE_ERROR 1
#define WORM_DUMMY_BLOCKS_ADDED 2
#define WORM_CALIBRATION_AREA_ALMOST_FULL 3
#define WORM_CALIBRATION_AREA_FULL 4
#define WORM_BUFFER_UNDERRUN 5
#define WORM_ABSORPTION_CONTROL_ERROR 6
#define WORM_END_OF_MEDIUM 7
#define WORM_OPTIMUM_POWER_CALIBRATION_ERROR 8
#define WORMIOERROR _IOR('W', 24, int)
#endif /* !_SYS_WORMIO_H_ */