1 /* $Id: aztcd.h,v 1.80 1995/10/11 19:39:18 root Exp root $ 2 * 3 * Definitions for a AztechCD268 CD-ROM interface 4 * Copyright (C) 1994, 1995 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: zimmerma@rz.fht-esslingen.de 24 */ 25 26 /* *** change this to set the I/O port address of your CD-ROM drive*/ 27 #define AZT_BASE_ADDR 0x320 28 29 /* Uncomment this, if your CDROM is connected to a Soundwave32-soundcard 30 and configure AZT_BASE_ADDR and AZT_SW32_BASE_ADDR */ 31 /*#define AZT_SW32 1 32 */ 33 34 #ifdef AZT_SW32 35 #define AZT_SW32_BASE_ADDR 0x220 /*I/O port base address of your soundcard*/ 36 #endif 37 38 /* Set this to 1, if you want your tray to be locked, set to 0 to prevent tray 39 from locking */ 40 #define AZT_ALLOW_TRAY_LOCK 1 41 42 /*Set this to 1 to allow auto-eject when unmounting a disk, set to 0, if you 43 don't want the auto-eject feature*/ 44 #define AZT_AUTO_EJECT 0 45 46 /*Set this to 1, if you want to use incompatible ioctls for reading in raw and 47 cooked mode */ 48 #define AZT_PRIVATE_IOCTLS 1 49 50 /*Set this to 1, if you want multisession support by the ISO fs. Even if you set 51 this value to '0' you can use multisession CDs. In that case the drive's firm- 52 ware will do the appropriate redirection automatically. The CD will then look 53 like a single session CD (but nevertheless all data may be read). Please read 54 chapter '5.1 Multisession support' in README.aztcd for details. Normally it's 55 uncritical to leave this setting untouched */ 56 #define AZT_MULTISESSION 1 57 58 /*---------------------------------------------------------------------------*/ 59 /*-----nothing to be configured for normal applications below this line------*/ 60 61 62 /* Increase this if you get lots of timeouts; if you get kernel panic, replace 63 STEN_LOW_WAIT by STEN_LOW in the source code */ 64 #define AZT_STATUS_DELAY 400 /*for timer wait, STEN_LOW_WAIT*/ 65 #define AZT_TIMEOUT 8000000 /*for busy wait STEN_LOW, DTEN_LOW*/ 66 #define AZT_FAST_TIMEOUT 10000 /*for reading the version string*/ 67 68 /* number of times to retry a command before giving up */ 69 #define AZT_RETRY_ATTEMPTS 3 70 71 /* port access macros */ 72 #define CMD_PORT azt_port 73 #define DATA_PORT azt_port 74 #define STATUS_PORT azt_port+1 75 #define MODE_PORT azt_port+2 76 #ifdef AZT_SW32 77 #define AZT_SW32_INIT (unsigned int) (0xFF00 & (AZT_BASE_ADDR*16)) 78 #define AZT_SW32_CONFIG_REG AZT_SW32_BASE_ADDR+0x16 /*Soundwave32 Config. Register*/ 79 #define AZT_SW32_ID_REG AZT_SW32_BASE_ADDR+0x04 /*Soundwave32 ID Version Register*/ 80 #endif 81 82 /* status bits */ 83 #define AST_CMD_CHECK 0x80 /* 1 = command error */ 84 #define AST_DOOR_OPEN 0x40 /* 1 = door is open */ 85 #define AST_NOT_READY 0x20 /* 1 = no disk in the drive */ 86 #define AST_DSK_CHG 0x02 /* 1 = disk removed or changed */ 87 #define AST_MODE 0x01 /* 0=MODE1, 1=MODE2 */ 88 #define AST_MODE_BITS 0x1C /* Mode Bits */ 89 #define AST_INITIAL 0x0C /* initial, only valid ... */ 90 #define AST_BUSY 0x04 /* now playing, only valid 91 in combination with mode 92 bits */ 93 /* flag bits */ 94 #define AFL_DATA 0x02 /* data available if low */ 95 #define AFL_STATUS 0x04 /* status available if low */ 96 #define AFL_OP_OK 0x01 /* OP_OK command correct*/ 97 #define AFL_PA_OK 0x02 /* PA_OK parameter correct*/ 98 #define AFL_OP_ERR 0x05 /* error in command*/ 99 #define AFL_PA_ERR 0x06 /* error in parameters*/ 100 #define POLLED 0x04 /* polled mode */ 101 102 /* commands */ 103 #define ACMD_SOFT_RESET 0x10 /* reset drive */ 104 #define ACMD_PLAY_READ 0x20 /* read data track in cooked mode */ 105 #define ACMD_PLAY_READ_RAW 0x21 /* reading in raw mode*/ 106 #define ACMD_SEEK 0x30 /* seek msf address*/ 107 #define ACMD_SEEK_TO_LEADIN 0x31 /* seek to leadin track*/ 108 #define ACMD_GET_ERROR 0x40 /* get error code */ 109 #define ACMD_GET_STATUS 0x41 /* get status */ 110 #define ACMD_GET_Q_CHANNEL 0x50 /* read info from q channel */ 111 #define ACMD_EJECT 0x60 /* eject/open tray */ 112 #define ACMD_CLOSE 0x61 /* close tray */ 113 #define ACMD_LOCK 0x71 /* lock tray closed */ 114 #define ACMD_UNLOCK 0x72 /* unlock tray */ 115 #define ACMD_PAUSE 0x80 /* pause */ 116 #define ACMD_STOP 0x81 /* stop play */ 117 #define ACMD_PLAY_AUDIO 0x90 /* play audio track */ 118 #define ACMD_SET_VOLUME 0x93 /* set audio level */ 119 #define ACMD_GET_VERSION 0xA0 /* get firmware version */ 120 #define ACMD_SET_DISK_TYPE 0xA1 /* set disk data mode */ 121 122 #define MAX_TRACKS 104 123 124 struct msf { 125 unsigned char min; 126 unsigned char sec; 127 unsigned char frame; 128 }; 129 130 struct azt_Play_msf { 131 struct msf start; 132 struct msf end; 133 }; 134 135 struct azt_DiskInfo { 136 unsigned char first; 137 unsigned char next; 138 unsigned char last; 139 struct msf diskLength; 140 struct msf firstTrack; 141 unsigned char multi; 142 struct msf nextSession; 143 struct msf lastSession; 144 unsigned char xa; 145 unsigned char audio; 146 }; 147 148 struct azt_Toc { 149 unsigned char ctrl_addr; 150 unsigned char track; 151 unsigned char pointIndex; 152 struct msf trackTime; 153 struct msf diskTime; 154 };