Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | #ifndef SONYCD535_H |
2 | #define SONYCD535_H | |
3 | ||
4 | /* | |
5 | * define all the commands recognized by the CDU-531/5 | |
6 | */ | |
7 | #define SONY535_REQUEST_DRIVE_STATUS_1 (0x80) | |
8 | #define SONY535_REQUEST_SENSE (0x82) | |
9 | #define SONY535_REQUEST_DRIVE_STATUS_2 (0x84) | |
10 | #define SONY535_REQUEST_ERROR_STATUS (0x86) | |
11 | #define SONY535_REQUEST_AUDIO_STATUS (0x88) | |
12 | #define SONY535_INQUIRY (0x8a) | |
13 | ||
14 | #define SONY535_SET_INACTIVITY_TIME (0x90) | |
15 | ||
16 | #define SONY535_SEEK_AND_READ_N_BLOCKS_1 (0xa0) | |
17 | #define SONY535_SEEK_AND_READ_N_BLOCKS_2 (0xa4) | |
18 | #define SONY535_PLAY_AUDIO (0xa6) | |
19 | ||
20 | #define SONY535_REQUEST_DISC_CAPACITY (0xb0) | |
21 | #define SONY535_REQUEST_TOC_DATA (0xb2) | |
22 | #define SONY535_REQUEST_SUB_Q_DATA (0xb4) | |
23 | #define SONY535_REQUEST_ISRC (0xb6) | |
24 | #define SONY535_REQUEST_UPC_EAN (0xb8) | |
25 | ||
26 | #define SONY535_SET_DRIVE_MODE (0xc0) | |
27 | #define SONY535_REQUEST_DRIVE_MODE (0xc2) | |
28 | #define SONY535_SET_RETRY_COUNT (0xc4) | |
29 | ||
30 | #define SONY535_DIAGNOSTIC_1 (0xc6) | |
31 | #define SONY535_DIAGNOSTIC_4 (0xcc) | |
32 | #define SONY535_DIAGNOSTIC_5 (0xce) | |
33 | ||
34 | #define SONY535_EJECT_CADDY (0xd0) | |
35 | #define SONY535_DISABLE_EJECT_BUTTON (0xd2) | |
36 | #define SONY535_ENABLE_EJECT_BUTTON (0xd4) | |
37 | ||
38 | #define SONY535_HOLD (0xe0) | |
39 | #define SONY535_AUDIO_PAUSE_ON_OFF (0xe2) | |
40 | #define SONY535_SET_VOLUME (0xe8) | |
41 | ||
42 | #define SONY535_STOP (0xf0) | |
43 | #define SONY535_SPIN_UP (0xf2) | |
44 | #define SONY535_SPIN_DOWN (0xf4) | |
45 | ||
46 | #define SONY535_CLEAR_PARAMETERS (0xf6) | |
47 | #define SONY535_CLEAR_ENDING_ADDRESS (0xf8) | |
48 | ||
49 | /* | |
50 | * define some masks | |
51 | */ | |
52 | #define SONY535_DATA_NOT_READY_BIT (0x1) | |
53 | #define SONY535_RESULT_NOT_READY_BIT (0x2) | |
54 | ||
55 | /* | |
56 | * drive status 1 | |
57 | */ | |
58 | #define SONY535_STATUS1_COMMAND_ERROR (0x1) | |
59 | #define SONY535_STATUS1_DATA_ERROR (0x2) | |
60 | #define SONY535_STATUS1_SEEK_ERROR (0x4) | |
61 | #define SONY535_STATUS1_DISC_TYPE_ERROR (0x8) | |
62 | #define SONY535_STATUS1_NOT_SPINNING (0x10) | |
63 | #define SONY535_STATUS1_EJECT_BUTTON_PRESSED (0x20) | |
64 | #define SONY535_STATUS1_CADDY_NOT_INSERTED (0x40) | |
65 | #define SONY535_STATUS1_BYTE_TWO_FOLLOWS (0x80) | |
66 | ||
67 | /* | |
68 | * drive status 2 | |
69 | */ | |
70 | #define SONY535_CDD_LOADING_ERROR (0x7) | |
71 | #define SONY535_CDD_NO_DISC (0x8) | |
72 | #define SONY535_CDD_UNLOADING_ERROR (0x9) | |
73 | #define SONY535_CDD_CADDY_NOT_INSERTED (0xd) | |
74 | #define SONY535_ATN_RESET_OCCURRED (0x2) | |
75 | #define SONY535_ATN_DISC_CHANGED (0x4) | |
76 | #define SONY535_ATN_RESET_AND_DISC_CHANGED (0x6) | |
77 | #define SONY535_ATN_EJECT_IN_PROGRESS (0xe) | |
78 | #define SONY535_ATN_BUSY (0xf) | |
79 | ||
80 | /* | |
81 | * define some parameters | |
82 | */ | |
83 | #define SONY535_AUDIO_DRIVE_MODE (0) | |
84 | #define SONY535_CDROM_DRIVE_MODE (0xe0) | |
85 | ||
86 | #define SONY535_PLAY_OP_PLAYBACK (0) | |
87 | #define SONY535_PLAY_OP_ENTER_HOLD (1) | |
88 | #define SONY535_PLAY_OP_SET_AUDIO_ENDING_ADDR (2) | |
89 | #define SONY535_PLAY_OP_SCAN_FORWARD (3) | |
90 | #define SONY535_PLAY_OP_SCAN_BACKWARD (4) | |
91 | ||
92 | /* | |
93 | * convert from msf format to block number | |
94 | */ | |
95 | #define SONY_BLOCK_NUMBER(m,s,f) (((m)*60L+(s))*75L+(f)) | |
96 | #define SONY_BLOCK_NUMBER_MSF(x) (((x)[0]*60L+(x)[1])*75L+(x)[2]) | |
97 | ||
98 | /* | |
99 | * error return values from the doSonyCmd() routines | |
100 | */ | |
101 | #define TIME_OUT (-1) | |
102 | #define NO_CDROM (-2) | |
103 | #define BAD_STATUS (-3) | |
104 | #define CD_BUSY (-4) | |
105 | #define NOT_DATA_CD (-5) | |
106 | #define NO_ROOM (-6) | |
107 | ||
108 | #define LOG_START_OFFSET 150 /* Offset of first logical sector */ | |
109 | ||
110 | #define SONY_JIFFIES_TIMEOUT (5*HZ) /* Maximum time | |
111 | the drive will wait/try for an | |
112 | operation */ | |
113 | #define SONY_READY_RETRIES (50000) /* How many times to retry a | |
114 | spin waiting for a register | |
115 | to come ready */ | |
116 | #define SONY535_FAST_POLLS (10000) /* how many times recheck | |
117 | status waiting for a data | |
118 | to become ready */ | |
119 | ||
120 | typedef unsigned char Byte; | |
121 | ||
122 | /* | |
123 | * This is the complete status returned from the drive configuration request | |
124 | * command. | |
125 | */ | |
126 | struct s535_sony_drive_config | |
127 | { | |
128 | char vendor_id[8]; | |
129 | char product_id[16]; | |
130 | char product_rev_level[4]; | |
131 | }; | |
132 | ||
133 | /* The following is returned from the request sub-q data command */ | |
134 | struct s535_sony_subcode | |
135 | { | |
136 | unsigned char address :4; | |
137 | unsigned char control :4; | |
138 | unsigned char track_num; | |
139 | unsigned char index_num; | |
140 | unsigned char rel_msf[3]; | |
141 | unsigned char abs_msf[3]; | |
142 | }; | |
143 | ||
144 | struct s535_sony_disc_capacity | |
145 | { | |
146 | Byte mFirstTrack, sFirstTrack, fFirstTrack; | |
147 | Byte mLeadOut, sLeadOut, fLeadOut; | |
148 | }; | |
149 | ||
150 | /* | |
151 | * The following is returned from the request TOC (Table Of Contents) command. | |
152 | * (last_track_num-first_track_num+1) values are valid in tracks. | |
153 | */ | |
154 | struct s535_sony_toc | |
155 | { | |
156 | unsigned char reserved0 :4; | |
157 | unsigned char control0 :4; | |
158 | unsigned char point0; | |
159 | unsigned char first_track_num; | |
160 | unsigned char reserved0a; | |
161 | unsigned char reserved0b; | |
162 | unsigned char reserved1 :4; | |
163 | unsigned char control1 :4; | |
164 | unsigned char point1; | |
165 | unsigned char last_track_num; | |
166 | unsigned char dummy1; | |
167 | unsigned char dummy2; | |
168 | unsigned char reserved2 :4; | |
169 | unsigned char control2 :4; | |
170 | unsigned char point2; | |
171 | unsigned char lead_out_start_msf[3]; | |
172 | struct | |
173 | { | |
174 | unsigned char reserved :4; | |
175 | unsigned char control :4; | |
176 | unsigned char track; | |
177 | unsigned char track_start_msf[3]; | |
178 | } tracks[100]; | |
179 | ||
180 | unsigned int lead_out_start_lba; | |
181 | }; | |
182 | ||
183 | #endif /* SONYCD535_H */ |