summaryrefslogtreecommitdiff
path: root/include/arch/x86_64/linux/pktcdvd.h
blob: e7e72192aab5e9d69eaa742d104c5be53b20ae51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
 * Copyright (C) 2000 Jens Axboe <axboe@suse.de>
 * Copyright (C) 2001-2004 Peter Osterlund <petero2@telia.com>
 *
 * May be copied or modified under the terms of the GNU General Public
 * License.  See linux/COPYING for more information.
 *
 * Packet writing layer for ATAPI and SCSI CD-R, CD-RW, DVD-R, and
 * DVD-RW devices.
 *
 */
#ifndef __PKTCDVD_H
#define __PKTCDVD_H

#include <linux/types.h>

/*
 * UNUSED:
 * 1 for normal debug messages, 2 is very verbose. 0 to turn it off.
 */
#define PACKET_DEBUG 1

#define MAX_WRITERS 8

#define PKT_RB_POOL_SIZE 512

/*
 * How long we should hold a non-full packet before starting data gathering.
 */
#define PACKET_WAIT_TIME (HZ * 5 / 1000)

/*
 * No user-servicable parts beyond this point ->
 */

/*
 * device types
 */
#define PACKET_CDR   1
#define PACKET_CDRW  2
#define PACKET_DVDR  3
#define PACKET_DVDRW 4

/*
 * flags
 */
#define PACKET_WRITABLE	  1 /* pd is writable */
#define PACKET_NWA_VALID  2 /* next writable address valid */
#define PACKET_LRA_VALID  3 /* last recorded address valid */
#define PACKET_MERGE_SEGS 4 /* perform segment merging to keep */
			    /* underlying cdrom device happy */

/*
 * Disc status -- from READ_DISC_INFO
 */
#define PACKET_DISC_EMPTY      0
#define PACKET_DISC_INCOMPLETE 1
#define PACKET_DISC_COMPLETE   2
#define PACKET_DISC_OTHER      3

/*
 * write type, and corresponding data block type
 */
#define PACKET_MODE1	   1
#define PACKET_MODE2	   2
#define PACKET_BLOCK_MODE1 8
#define PACKET_BLOCK_MODE2 10

/*
 * Last session/border status
 */
#define PACKET_SESSION_EMPTY	  0
#define PACKET_SESSION_INCOMPLETE 1
#define PACKET_SESSION_RESERVED	  2
#define PACKET_SESSION_COMPLETE	  3

#define PACKET_MCN "4a656e734178626f65323030300000"

#undef PACKET_USE_LS

#define PKT_CTRL_CMD_SETUP    0
#define PKT_CTRL_CMD_TEARDOWN 1
#define PKT_CTRL_CMD_STATUS   2

struct pkt_ctrl_command {
	__u32 command;	   /* in: Setup, teardown, status */
	__u32 dev_index;   /* in/out: Device index */
	__u32 dev;	   /* in/out: Device nr for cdrw device */
	__u32 pkt_dev;	   /* in/out: Device nr for packet device */
	__u32 num_devices; /* out: Largest device index + 1 */
	__u32 padding;	   /* Not used */
};

/*
 * packet ioctls
 */
#define PACKET_IOCTL_MAGIC ('X')
#define PACKET_CTRL_CMD	   _IOWR(PACKET_IOCTL_MAGIC, 1, struct pkt_ctrl_command)

#endif /* __PKTCDVD_H */