aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ide
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/ide')
-rw-r--r--drivers/ide/ide-atapi.c10
-rw-r--r--drivers/ide/ide-floppy.c4
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
360static void idefloppy_create_request_sense_cmd(struct ide_atapi_pc *pc) 359static 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;