diff options
Diffstat (limited to 'drivers/cdrom/aztcd.h')
-rw-r--r-- | drivers/cdrom/aztcd.h | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/drivers/cdrom/aztcd.h b/drivers/cdrom/aztcd.h new file mode 100644 index 000000000000..057501e31628 --- /dev/null +++ b/drivers/cdrom/aztcd.h | |||
@@ -0,0 +1,162 @@ | |||
1 | /* $Id: aztcd.h,v 2.60 1997/11/29 09:51:22 root Exp root $ | ||
2 | * | ||
3 | * Definitions for a AztechCD268 CD-ROM interface | ||
4 | * Copyright (C) 1994-98 Werner Zimmermann | ||
5 | * | ||
6 | * based on Mitsumi CDROM driver by Martin Harriss | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
21 | * | ||
22 | * History: W.Zimmermann adaption to Aztech CD268-01A Version 1.3 | ||
23 | * October 1994 Email: Werner.Zimmermann@fht-esslingen.de | ||
24 | */ | ||
25 | |||
26 | /* *** change this to set the I/O port address of your CD-ROM drive, | ||
27 | set to '-1', if you want autoprobing */ | ||
28 | #define AZT_BASE_ADDR -1 | ||
29 | |||
30 | /* list of autoprobing addresses (not more than 15), last value must be 0x000 | ||
31 | Note: Autoprobing is only enabled, if AZT_BASE_ADDR is set to '-1' ! */ | ||
32 | #define AZT_BASE_AUTO { 0x320, 0x300, 0x310, 0x330, 0x000 } | ||
33 | |||
34 | /* Uncomment this, if your CDROM is connected to a Soundwave32-soundcard | ||
35 | and configure AZT_BASE_ADDR and AZT_SW32_BASE_ADDR */ | ||
36 | /*#define AZT_SW32 1 | ||
37 | */ | ||
38 | |||
39 | #ifdef AZT_SW32 | ||
40 | #define AZT_SW32_BASE_ADDR 0x220 /*I/O port base address of your soundcard*/ | ||
41 | #endif | ||
42 | |||
43 | /* Set this to 1, if you want your tray to be locked, set to 0 to prevent tray | ||
44 | from locking */ | ||
45 | #define AZT_ALLOW_TRAY_LOCK 1 | ||
46 | |||
47 | /*Set this to 1 to allow auto-eject when unmounting a disk, set to 0, if you | ||
48 | don't want the auto-eject feature*/ | ||
49 | #define AZT_AUTO_EJECT 0 | ||
50 | |||
51 | /*Set this to 1, if you want to use incompatible ioctls for reading in raw and | ||
52 | cooked mode */ | ||
53 | #define AZT_PRIVATE_IOCTLS 1 | ||
54 | |||
55 | /*Set this to 1, if you want multisession support by the ISO fs. Even if you set | ||
56 | this value to '0' you can use multisession CDs. In that case the drive's firm- | ||
57 | ware will do the appropriate redirection automatically. The CD will then look | ||
58 | like a single session CD (but nevertheless all data may be read). Please read | ||
59 | chapter '5.1 Multisession support' in README.aztcd for details. Normally it's | ||
60 | uncritical to leave this setting untouched */ | ||
61 | #define AZT_MULTISESSION 1 | ||
62 | |||
63 | /*Uncomment this, if you are using a linux kernel version prior to 2.1.0 */ | ||
64 | /*#define AZT_KERNEL_PRIOR_2_1 */ | ||
65 | |||
66 | /*---------------------------------------------------------------------------*/ | ||
67 | /*-----nothing to be configured for normal applications below this line------*/ | ||
68 | |||
69 | |||
70 | /* Increase this if you get lots of timeouts; if you get kernel panic, replace | ||
71 | STEN_LOW_WAIT by STEN_LOW in the source code */ | ||
72 | #define AZT_STATUS_DELAY 400 /*for timer wait, STEN_LOW_WAIT*/ | ||
73 | #define AZT_TIMEOUT 8000000 /*for busy wait STEN_LOW, DTEN_LOW*/ | ||
74 | #define AZT_FAST_TIMEOUT 10000 /*for reading the version string*/ | ||
75 | |||
76 | /* number of times to retry a command before giving up */ | ||
77 | #define AZT_RETRY_ATTEMPTS 3 | ||
78 | |||
79 | /* port access macros */ | ||
80 | #define CMD_PORT azt_port | ||
81 | #define DATA_PORT azt_port | ||
82 | #define STATUS_PORT azt_port+1 | ||
83 | #define MODE_PORT azt_port+2 | ||
84 | #ifdef AZT_SW32 | ||
85 | #define AZT_SW32_INIT (unsigned int) (0xFF00 & (AZT_BASE_ADDR*16)) | ||
86 | #define AZT_SW32_CONFIG_REG AZT_SW32_BASE_ADDR+0x16 /*Soundwave32 Config. Register*/ | ||
87 | #define AZT_SW32_ID_REG AZT_SW32_BASE_ADDR+0x04 /*Soundwave32 ID Version Register*/ | ||
88 | #endif | ||
89 | |||
90 | /* status bits */ | ||
91 | #define AST_CMD_CHECK 0x80 /* 1 = command error */ | ||
92 | #define AST_DOOR_OPEN 0x40 /* 1 = door is open */ | ||
93 | #define AST_NOT_READY 0x20 /* 1 = no disk in the drive */ | ||
94 | #define AST_DSK_CHG 0x02 /* 1 = disk removed or changed */ | ||
95 | #define AST_MODE 0x01 /* 0=MODE1, 1=MODE2 */ | ||
96 | #define AST_MODE_BITS 0x1C /* Mode Bits */ | ||
97 | #define AST_INITIAL 0x0C /* initial, only valid ... */ | ||
98 | #define AST_BUSY 0x04 /* now playing, only valid | ||
99 | in combination with mode | ||
100 | bits */ | ||
101 | /* flag bits */ | ||
102 | #define AFL_DATA 0x02 /* data available if low */ | ||
103 | #define AFL_STATUS 0x04 /* status available if low */ | ||
104 | #define AFL_OP_OK 0x01 /* OP_OK command correct*/ | ||
105 | #define AFL_PA_OK 0x02 /* PA_OK parameter correct*/ | ||
106 | #define AFL_OP_ERR 0x05 /* error in command*/ | ||
107 | #define AFL_PA_ERR 0x06 /* error in parameters*/ | ||
108 | #define POLLED 0x04 /* polled mode */ | ||
109 | |||
110 | /* commands */ | ||
111 | #define ACMD_SOFT_RESET 0x10 /* reset drive */ | ||
112 | #define ACMD_PLAY_READ 0x20 /* read data track in cooked mode */ | ||
113 | #define ACMD_PLAY_READ_RAW 0x21 /* reading in raw mode*/ | ||
114 | #define ACMD_SEEK 0x30 /* seek msf address*/ | ||
115 | #define ACMD_SEEK_TO_LEADIN 0x31 /* seek to leadin track*/ | ||
116 | #define ACMD_GET_ERROR 0x40 /* get error code */ | ||
117 | #define ACMD_GET_STATUS 0x41 /* get status */ | ||
118 | #define ACMD_GET_Q_CHANNEL 0x50 /* read info from q channel */ | ||
119 | #define ACMD_EJECT 0x60 /* eject/open tray */ | ||
120 | #define ACMD_CLOSE 0x61 /* close tray */ | ||
121 | #define ACMD_LOCK 0x71 /* lock tray closed */ | ||
122 | #define ACMD_UNLOCK 0x72 /* unlock tray */ | ||
123 | #define ACMD_PAUSE 0x80 /* pause */ | ||
124 | #define ACMD_STOP 0x81 /* stop play */ | ||
125 | #define ACMD_PLAY_AUDIO 0x90 /* play audio track */ | ||
126 | #define ACMD_SET_VOLUME 0x93 /* set audio level */ | ||
127 | #define ACMD_GET_VERSION 0xA0 /* get firmware version */ | ||
128 | #define ACMD_SET_DISK_TYPE 0xA1 /* set disk data mode */ | ||
129 | |||
130 | #define MAX_TRACKS 104 | ||
131 | |||
132 | struct msf { | ||
133 | unsigned char min; | ||
134 | unsigned char sec; | ||
135 | unsigned char frame; | ||
136 | }; | ||
137 | |||
138 | struct azt_Play_msf { | ||
139 | struct msf start; | ||
140 | struct msf end; | ||
141 | }; | ||
142 | |||
143 | struct azt_DiskInfo { | ||
144 | unsigned char first; | ||
145 | unsigned char next; | ||
146 | unsigned char last; | ||
147 | struct msf diskLength; | ||
148 | struct msf firstTrack; | ||
149 | unsigned char multi; | ||
150 | struct msf nextSession; | ||
151 | struct msf lastSession; | ||
152 | unsigned char xa; | ||
153 | unsigned char audio; | ||
154 | }; | ||
155 | |||
156 | struct azt_Toc { | ||
157 | unsigned char ctrl_addr; | ||
158 | unsigned char track; | ||
159 | unsigned char pointIndex; | ||
160 | struct msf trackTime; | ||
161 | struct msf diskTime; | ||
162 | }; | ||