diff options
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide-atapi.c | 10 | ||||
-rw-r--r-- | drivers/ide/ide-floppy.c | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c index 6789b81ea78d..0c4f45247d86 100644 --- a/drivers/ide/ide-atapi.c +++ b/drivers/ide/ide-atapi.c | |||
@@ -31,7 +31,10 @@ ide_startstop_t ide_pc_intr(ide_drive_t *drive, struct ide_atapi_pc *pc, | |||
31 | debug_log("Enter %s - interrupt handler\n", __func__); | 31 | debug_log("Enter %s - interrupt handler\n", __func__); |
32 | 32 | ||
33 | if (pc->flags & PC_FLAG_TIMEDOUT) { | 33 | if (pc->flags & PC_FLAG_TIMEDOUT) { |
34 | pc->callback(drive); | 34 | if (drive->media == ide_floppy) |
35 | drive->pc_callback(drive); | ||
36 | else | ||
37 | pc->callback(drive); | ||
35 | return ide_stopped; | 38 | return ide_stopped; |
36 | } | 39 | } |
37 | 40 | ||
@@ -97,7 +100,10 @@ cmd_finished: | |||
97 | return ide_stopped; | 100 | return ide_stopped; |
98 | } | 101 | } |
99 | /* Command finished - Call the callback function */ | 102 | /* Command finished - Call the callback function */ |
100 | pc->callback(drive); | 103 | if (drive->media == ide_floppy) |
104 | drive->pc_callback(drive); | ||
105 | else | ||
106 | pc->callback(drive); | ||
101 | return ide_stopped; | 107 | return ide_stopped; |
102 | } | 108 | } |
103 | 109 | ||
diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 62be2b27f236..44b53896f105 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c | |||
@@ -354,7 +354,6 @@ static void idefloppy_init_pc(struct ide_atapi_pc *pc) | |||
354 | memset(pc, 0, sizeof(*pc)); | 354 | memset(pc, 0, sizeof(*pc)); |
355 | pc->buf = pc->pc_buf; | 355 | pc->buf = pc->pc_buf; |
356 | pc->buf_size = IDEFLOPPY_PC_BUFFER_SIZE; | 356 | pc->buf_size = IDEFLOPPY_PC_BUFFER_SIZE; |
357 | pc->callback = ide_floppy_callback; | ||
358 | } | 357 | } |
359 | 358 | ||
360 | static void idefloppy_create_request_sense_cmd(struct ide_atapi_pc *pc) | 359 | static void idefloppy_create_request_sense_cmd(struct ide_atapi_pc *pc) |
@@ -474,7 +473,7 @@ static ide_startstop_t idefloppy_issue_pc(ide_drive_t *drive, | |||
474 | pc->error = IDEFLOPPY_ERROR_GENERAL; | 473 | pc->error = IDEFLOPPY_ERROR_GENERAL; |
475 | 474 | ||
476 | floppy->failed_pc = NULL; | 475 | floppy->failed_pc = NULL; |
477 | pc->callback(drive); | 476 | drive->pc_callback(drive); |
478 | return ide_stopped; | 477 | return ide_stopped; |
479 | } | 478 | } |
480 | 479 | ||
@@ -1040,6 +1039,7 @@ static void idefloppy_setup(ide_drive_t *drive, idefloppy_floppy_t *floppy) | |||
1040 | 1039 | ||
1041 | *((u16 *) &gcw) = drive->id->config; | 1040 | *((u16 *) &gcw) = drive->id->config; |
1042 | floppy->pc = floppy->pc_stack; | 1041 | floppy->pc = floppy->pc_stack; |
1042 | drive->pc_callback = ide_floppy_callback; | ||
1043 | 1043 | ||
1044 | if (((gcw[0] & 0x60) >> 5) == 1) | 1044 | if (((gcw[0] & 0x60) >> 5) == 1) |
1045 | floppy->flags |= IDEFLOPPY_FLAG_DRQ_INTERRUPT; | 1045 | floppy->flags |= IDEFLOPPY_FLAG_DRQ_INTERRUPT; |