diff options
-rw-r--r-- | drivers/ide/ide-cd.c | 65 | ||||
-rw-r--r-- | drivers/ide/ide-cd.h | 33 |
2 files changed, 49 insertions, 49 deletions
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c index bd552328014a..02488b48fa7a 100644 --- a/drivers/ide/ide-cd.c +++ b/drivers/ide/ide-cd.c | |||
@@ -205,28 +205,30 @@ void cdrom_analyze_sense_data(ide_drive_t *drive, | |||
205 | const char *s = "bad sense key!"; | 205 | const char *s = "bad sense key!"; |
206 | char buf[80]; | 206 | char buf[80]; |
207 | 207 | ||
208 | printk ("ATAPI device %s:\n", drive->name); | 208 | printk(KERN_ERR "ATAPI device %s:\n", drive->name); |
209 | if (sense->error_code==0x70) | 209 | if (sense->error_code == 0x70) |
210 | printk(" Error: "); | 210 | printk(KERN_CONT " Error: "); |
211 | else if (sense->error_code==0x71) | 211 | else if (sense->error_code == 0x71) |
212 | printk(" Deferred Error: "); | 212 | printk(" Deferred Error: "); |
213 | else if (sense->error_code == 0x7f) | 213 | else if (sense->error_code == 0x7f) |
214 | printk(" Vendor-specific Error: "); | 214 | printk(KERN_CONT " Vendor-specific Error: "); |
215 | else | 215 | else |
216 | printk(" Unknown Error Type: "); | 216 | printk(KERN_CONT " Unknown Error Type: "); |
217 | 217 | ||
218 | if (sense->sense_key < ARRAY_SIZE(sense_key_texts)) | 218 | if (sense->sense_key < ARRAY_SIZE(sense_key_texts)) |
219 | s = sense_key_texts[sense->sense_key]; | 219 | s = sense_key_texts[sense->sense_key]; |
220 | 220 | ||
221 | printk("%s -- (Sense key=0x%02x)\n", s, sense->sense_key); | 221 | printk(KERN_CONT "%s -- (Sense key=0x%02x)\n", |
222 | s, sense->sense_key); | ||
222 | 223 | ||
223 | if (sense->asc == 0x40) { | 224 | if (sense->asc == 0x40) { |
224 | sprintf(buf, "Diagnostic failure on component 0x%02x", | 225 | sprintf(buf, "Diagnostic failure on component 0x%02x", |
225 | sense->ascq); | 226 | sense->ascq); |
226 | s = buf; | 227 | s = buf; |
227 | } else { | 228 | } else { |
228 | int lo = 0, mid, hi = ARRAY_SIZE(sense_data_texts); | 229 | int lo = 0, mid, hi = ARRAY_SIZE(sense_data_texts); |
229 | unsigned long key = (sense->sense_key << 16); | 230 | unsigned long key = (sense->sense_key << 16); |
231 | |||
230 | key |= (sense->asc << 8); | 232 | key |= (sense->asc << 8); |
231 | if (!(sense->ascq >= 0x80 && sense->ascq <= 0xdd)) | 233 | if (!(sense->ascq >= 0x80 && sense->ascq <= 0xdd)) |
232 | key |= sense->ascq; | 234 | key |= sense->ascq; |
@@ -238,11 +240,10 @@ void cdrom_analyze_sense_data(ide_drive_t *drive, | |||
238 | sense_data_texts[mid].asc_ascq == (0xff0000|key)) { | 240 | sense_data_texts[mid].asc_ascq == (0xff0000|key)) { |
239 | s = sense_data_texts[mid].text; | 241 | s = sense_data_texts[mid].text; |
240 | break; | 242 | break; |
241 | } | 243 | } else if (sense_data_texts[mid].asc_ascq > key) |
242 | else if (sense_data_texts[mid].asc_ascq > key) | ||
243 | hi = mid; | 244 | hi = mid; |
244 | else | 245 | else |
245 | lo = mid+1; | 246 | lo = mid + 1; |
246 | } | 247 | } |
247 | } | 248 | } |
248 | 249 | ||
@@ -254,11 +255,10 @@ void cdrom_analyze_sense_data(ide_drive_t *drive, | |||
254 | } | 255 | } |
255 | 256 | ||
256 | printk(KERN_ERR " %s -- (asc=0x%02x, ascq=0x%02x)\n", | 257 | printk(KERN_ERR " %s -- (asc=0x%02x, ascq=0x%02x)\n", |
257 | s, sense->asc, sense->ascq); | 258 | s, sense->asc, sense->ascq); |
258 | 259 | ||
259 | if (failed_command != NULL) { | 260 | if (failed_command != NULL) { |
260 | 261 | int lo = 0, mid, hi = ARRAY_SIZE(packet_command_texts); | |
261 | int lo=0, mid, hi= ARRAY_SIZE(packet_command_texts); | ||
262 | s = NULL; | 262 | s = NULL; |
263 | 263 | ||
264 | while (hi > lo) { | 264 | while (hi > lo) { |
@@ -272,13 +272,15 @@ void cdrom_analyze_sense_data(ide_drive_t *drive, | |||
272 | failed_command->cmd[0]) | 272 | failed_command->cmd[0]) |
273 | hi = mid; | 273 | hi = mid; |
274 | else | 274 | else |
275 | lo = mid+1; | 275 | lo = mid + 1; |
276 | } | 276 | } |
277 | 277 | ||
278 | printk (KERN_ERR " The failed \"%s\" packet command was: \n \"", s); | 278 | printk(KERN_ERR " The failed \"%s\" packet command " |
279 | for (i=0; i<sizeof (failed_command->cmd); i++) | 279 | "was: \n \"", s); |
280 | printk ("%02x ", failed_command->cmd[i]); | 280 | for (i = 0; i < sizeof(failed_command->cmd); i++) |
281 | printk ("\"\n"); | 281 | printk(KERN_CONT "%02x ", |
282 | failed_command->cmd[i]); | ||
283 | printk(KERN_CONT "\"\n"); | ||
282 | } | 284 | } |
283 | 285 | ||
284 | /* The SKSV bit specifies validity of the sense_key_specific | 286 | /* The SKSV bit specifies validity of the sense_key_specific |
@@ -288,38 +290,37 @@ void cdrom_analyze_sense_data(ide_drive_t *drive, | |||
288 | */ | 290 | */ |
289 | if (sense->sense_key == NOT_READY && (sense->sks[0] & 0x80)) { | 291 | if (sense->sense_key == NOT_READY && (sense->sks[0] & 0x80)) { |
290 | int progress = (sense->sks[1] << 8 | sense->sks[2]) * 100; | 292 | int progress = (sense->sks[1] << 8 | sense->sks[2]) * 100; |
291 | printk(KERN_ERR " Command is %02d%% complete\n", progress / 0xffff); | ||
292 | 293 | ||
294 | printk(KERN_ERR " Command is %02d%% complete\n", | ||
295 | progress / 0xffff); | ||
293 | } | 296 | } |
294 | 297 | ||
295 | if (sense->sense_key == ILLEGAL_REQUEST && | 298 | if (sense->sense_key == ILLEGAL_REQUEST && |
296 | (sense->sks[0] & 0x80) != 0) { | 299 | (sense->sks[0] & 0x80) != 0) { |
297 | printk(KERN_ERR " Error in %s byte %d", | 300 | printk(KERN_ERR " Error in %s byte %d", |
298 | (sense->sks[0] & 0x40) != 0 ? | 301 | (sense->sks[0] & 0x40) != 0 ? |
299 | "command packet" : "command data", | 302 | "command packet" : "command data", |
300 | (sense->sks[1] << 8) + sense->sks[2]); | 303 | (sense->sks[1] << 8) + sense->sks[2]); |
301 | 304 | ||
302 | if ((sense->sks[0] & 0x40) != 0) | 305 | if ((sense->sks[0] & 0x40) != 0) |
303 | printk (" bit %d", sense->sks[0] & 0x07); | 306 | printk(KERN_CONT " bit %d", |
307 | sense->sks[0] & 0x07); | ||
304 | 308 | ||
305 | printk ("\n"); | 309 | printk(KERN_CONT "\n"); |
306 | } | 310 | } |
307 | } | 311 | } |
308 | |||
309 | #else /* not VERBOSE_IDE_CD_ERRORS */ | 312 | #else /* not VERBOSE_IDE_CD_ERRORS */ |
310 | |||
311 | /* Suppress printing unit attention and `in progress of becoming ready' | 313 | /* Suppress printing unit attention and `in progress of becoming ready' |
312 | errors when we're not being verbose. */ | 314 | errors when we're not being verbose. */ |
313 | |||
314 | if (sense->sense_key == UNIT_ATTENTION || | 315 | if (sense->sense_key == UNIT_ATTENTION || |
315 | (sense->sense_key == NOT_READY && (sense->asc == 4 || | 316 | (sense->sense_key == NOT_READY && (sense->asc == 4 || |
316 | sense->asc == 0x3a))) | 317 | sense->asc == 0x3a))) |
317 | return; | 318 | return; |
318 | 319 | ||
319 | printk(KERN_ERR "%s: error code: 0x%02x sense_key: 0x%02x asc: 0x%02x ascq: 0x%02x\n", | 320 | printk(KERN_ERR "%s: error code: 0x%02x sense_key: 0x%02x " |
320 | drive->name, | 321 | "asc: 0x%02x ascq: 0x%02x\n", |
321 | sense->error_code, sense->sense_key, | 322 | drive->name, sense->error_code, sense->sense_key, |
322 | sense->asc, sense->ascq); | 323 | sense->asc, sense->ascq); |
323 | #endif /* not VERBOSE_IDE_CD_ERRORS */ | 324 | #endif /* not VERBOSE_IDE_CD_ERRORS */ |
324 | } | 325 | } |
325 | 326 | ||
diff --git a/drivers/ide/ide-cd.h b/drivers/ide/ide-cd.h index 33019cb8c68d..3a43178ab121 100644 --- a/drivers/ide/ide-cd.h +++ b/drivers/ide/ide-cd.h | |||
@@ -159,9 +159,8 @@ struct cdrom_info { | |||
159 | 159 | ||
160 | /* This stuff should be in cdrom.h, since it is now generic... */ | 160 | /* This stuff should be in cdrom.h, since it is now generic... */ |
161 | #if VERBOSE_IDE_CD_ERRORS | 161 | #if VERBOSE_IDE_CD_ERRORS |
162 | 162 | /* The generic packet command opcodes for CD/DVD Logical Units, | |
163 | /* The generic packet command opcodes for CD/DVD Logical Units, | 163 | * From Table 57 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */ |
164 | * From Table 57 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */ | ||
165 | static const struct { | 164 | static const struct { |
166 | unsigned short packet_command; | 165 | unsigned short packet_command; |
167 | const char * const text; | 166 | const char * const text; |
@@ -187,7 +186,8 @@ static const struct { | |||
187 | { GPCMD_GET_CONFIGURATION, "Get Configuration" }, | 186 | { GPCMD_GET_CONFIGURATION, "Get Configuration" }, |
188 | { GPCMD_PLAY_AUDIO_MSF, "Play Audio MSF" }, | 187 | { GPCMD_PLAY_AUDIO_MSF, "Play Audio MSF" }, |
189 | { GPCMD_PLAYAUDIO_TI, "Play Audio TrackIndex" }, | 188 | { GPCMD_PLAYAUDIO_TI, "Play Audio TrackIndex" }, |
190 | { GPCMD_GET_EVENT_STATUS_NOTIFICATION, "Get Event Status Notification" }, | 189 | { GPCMD_GET_EVENT_STATUS_NOTIFICATION, |
190 | "Get Event Status Notification" }, | ||
191 | { GPCMD_PAUSE_RESUME, "Pause/Resume" }, | 191 | { GPCMD_PAUSE_RESUME, "Pause/Resume" }, |
192 | { GPCMD_STOP_PLAY_SCAN, "Stop Play/Scan" }, | 192 | { GPCMD_STOP_PLAY_SCAN, "Stop Play/Scan" }, |
193 | { GPCMD_READ_DISC_INFO, "Read Disc Info" }, | 193 | { GPCMD_READ_DISC_INFO, "Read Disc Info" }, |
@@ -217,8 +217,6 @@ static const struct { | |||
217 | { GPCMD_READ_CD, "Read CD" }, | 217 | { GPCMD_READ_CD, "Read CD" }, |
218 | }; | 218 | }; |
219 | 219 | ||
220 | |||
221 | |||
222 | /* From Table 303 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */ | 220 | /* From Table 303 of the SFF8090 Ver. 3 (Mt. Fuji) draft standard. */ |
223 | static const char * const sense_key_texts[16] = { | 221 | static const char * const sense_key_texts[16] = { |
224 | "No sense data", | 222 | "No sense data", |
@@ -262,16 +260,16 @@ static const struct { | |||
262 | { 0x011802, "Recovered data - the data was auto-reallocated" }, | 260 | { 0x011802, "Recovered data - the data was auto-reallocated" }, |
263 | { 0x011803, "Recovered data with CIRC" }, | 261 | { 0x011803, "Recovered data with CIRC" }, |
264 | { 0x011804, "Recovered data with L-EC" }, | 262 | { 0x011804, "Recovered data with L-EC" }, |
265 | { 0x015d00, | 263 | { 0x015d00, "Failure prediction threshold exceeded" |
266 | "Failure prediction threshold exceeded - Predicted logical unit failure" }, | 264 | " - Predicted logical unit failure" }, |
267 | { 0x015d01, | 265 | { 0x015d01, "Failure prediction threshold exceeded" |
268 | "Failure prediction threshold exceeded - Predicted media failure" }, | 266 | " - Predicted media failure" }, |
269 | { 0x015dff, "Failure prediction threshold exceeded - False" }, | 267 | { 0x015dff, "Failure prediction threshold exceeded - False" }, |
270 | { 0x017301, "Power calibration area almost full" }, | 268 | { 0x017301, "Power calibration area almost full" }, |
271 | { 0x020400, "Logical unit not ready - cause not reportable" }, | 269 | { 0x020400, "Logical unit not ready - cause not reportable" }, |
272 | /* Following is misspelled in ATAPI 2.6, _and_ in Mt. Fuji */ | 270 | /* Following is misspelled in ATAPI 2.6, _and_ in Mt. Fuji */ |
273 | { 0x020401, | 271 | { 0x020401, "Logical unit not ready" |
274 | "Logical unit not ready - in progress [sic] of becoming ready" }, | 272 | " - in progress [sic] of becoming ready" }, |
275 | { 0x020402, "Logical unit not ready - initializing command required" }, | 273 | { 0x020402, "Logical unit not ready - initializing command required" }, |
276 | { 0x020403, "Logical unit not ready - manual intervention required" }, | 274 | { 0x020403, "Logical unit not ready - manual intervention required" }, |
277 | { 0x020404, "Logical unit not ready - format in progress" }, | 275 | { 0x020404, "Logical unit not ready - format in progress" }, |
@@ -310,7 +308,6 @@ static const struct { | |||
310 | { 0x037304, "Program memory area / RMA update failure" }, | 308 | { 0x037304, "Program memory area / RMA update failure" }, |
311 | { 0x037305, "Program memory area / RMA is full" }, | 309 | { 0x037305, "Program memory area / RMA is full" }, |
312 | { 0x037306, "Program memory area / RMA is (almost) full" }, | 310 | { 0x037306, "Program memory area / RMA is (almost) full" }, |
313 | |||
314 | { 0x040200, "No seek complete" }, | 311 | { 0x040200, "No seek complete" }, |
315 | { 0x040300, "Write fault" }, | 312 | { 0x040300, "Write fault" }, |
316 | { 0x040900, "Track following error" }, | 313 | { 0x040900, "Track following error" }, |
@@ -344,12 +341,15 @@ static const struct { | |||
344 | { 0x055500, "System resource failure" }, | 341 | { 0x055500, "System resource failure" }, |
345 | { 0x056300, "End of user area encountered on this track" }, | 342 | { 0x056300, "End of user area encountered on this track" }, |
346 | { 0x056400, "Illegal mode for this track or incompatible medium" }, | 343 | { 0x056400, "Illegal mode for this track or incompatible medium" }, |
347 | { 0x056f00, "Copy protection key exchange failure - Authentication failure" }, | 344 | { 0x056f00, "Copy protection key exchange failure" |
345 | " - Authentication failure" }, | ||
348 | { 0x056f01, "Copy protection key exchange failure - Key not present" }, | 346 | { 0x056f01, "Copy protection key exchange failure - Key not present" }, |
349 | { 0x056f02, "Copy protection key exchange failure - Key not established" }, | 347 | { 0x056f02, "Copy protection key exchange failure" |
348 | " - Key not established" }, | ||
350 | { 0x056f03, "Read of scrambled sector without authentication" }, | 349 | { 0x056f03, "Read of scrambled sector without authentication" }, |
351 | { 0x056f04, "Media region code is mismatched to logical unit" }, | 350 | { 0x056f04, "Media region code is mismatched to logical unit" }, |
352 | { 0x056f05, "Drive region must be permanent / region reset count error" }, | 351 | { 0x056f05, "Drive region must be permanent" |
352 | " / region reset count error" }, | ||
353 | { 0x057203, "Session fixation error - incomplete track in session" }, | 353 | { 0x057203, "Session fixation error - incomplete track in session" }, |
354 | { 0x057204, "Empty or partially written reserved track" }, | 354 | { 0x057204, "Empty or partially written reserved track" }, |
355 | { 0x057205, "No more RZONE reservations are allowed" }, | 355 | { 0x057205, "No more RZONE reservations are allowed" }, |
@@ -364,7 +364,6 @@ static const struct { | |||
364 | { 0x065a00, "Operator request or state change input (unspecified)" }, | 364 | { 0x065a00, "Operator request or state change input (unspecified)" }, |
365 | { 0x065a01, "Operator medium removal request" }, | 365 | { 0x065a01, "Operator medium removal request" }, |
366 | { 0x0bb900, "Play operation aborted" }, | 366 | { 0x0bb900, "Play operation aborted" }, |
367 | |||
368 | /* Here we use 0xff for the key (not a valid key) to signify | 367 | /* Here we use 0xff for the key (not a valid key) to signify |
369 | * that these can have _any_ key value associated with them... */ | 368 | * that these can have _any_ key value associated with them... */ |
370 | { 0xff0401, "Logical unit is in process of becoming ready" }, | 369 | { 0xff0401, "Logical unit is in process of becoming ready" }, |