diff options
Diffstat (limited to 'drivers/scsi/NCR5380.c')
| -rw-r--r-- | drivers/scsi/NCR5380.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index a6aa91072880..bb3cb3360541 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c | |||
| @@ -849,7 +849,7 @@ static int __devinit NCR5380_init(struct Scsi_Host *instance, int flags) | |||
| 849 | hostdata->issue_queue = NULL; | 849 | hostdata->issue_queue = NULL; |
| 850 | hostdata->disconnected_queue = NULL; | 850 | hostdata->disconnected_queue = NULL; |
| 851 | 851 | ||
| 852 | INIT_WORK(&hostdata->coroutine, NCR5380_main, hostdata); | 852 | INIT_DELAYED_WORK(&hostdata->coroutine, NCR5380_main); |
| 853 | 853 | ||
| 854 | #ifdef NCR5380_STATS | 854 | #ifdef NCR5380_STATS |
| 855 | for (i = 0; i < 8; ++i) { | 855 | for (i = 0; i < 8; ++i) { |
| @@ -1016,7 +1016,7 @@ static int NCR5380_queue_command(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)) | |||
| 1016 | 1016 | ||
| 1017 | /* Run the coroutine if it isn't already running. */ | 1017 | /* Run the coroutine if it isn't already running. */ |
| 1018 | /* Kick off command processing */ | 1018 | /* Kick off command processing */ |
| 1019 | schedule_work(&hostdata->coroutine); | 1019 | schedule_delayed_work(&hostdata->coroutine, 0); |
| 1020 | return 0; | 1020 | return 0; |
| 1021 | } | 1021 | } |
| 1022 | 1022 | ||
| @@ -1033,9 +1033,10 @@ static int NCR5380_queue_command(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)) | |||
| 1033 | * host lock and called routines may take the isa dma lock. | 1033 | * host lock and called routines may take the isa dma lock. |
| 1034 | */ | 1034 | */ |
| 1035 | 1035 | ||
| 1036 | static void NCR5380_main(void *p) | 1036 | static void NCR5380_main(struct work_struct *work) |
| 1037 | { | 1037 | { |
| 1038 | struct NCR5380_hostdata *hostdata = p; | 1038 | struct NCR5380_hostdata *hostdata = |
| 1039 | container_of(work, struct NCR5380_hostdata, coroutine.work); | ||
| 1039 | struct Scsi_Host *instance = hostdata->host; | 1040 | struct Scsi_Host *instance = hostdata->host; |
| 1040 | Scsi_Cmnd *tmp, *prev; | 1041 | Scsi_Cmnd *tmp, *prev; |
| 1041 | int done; | 1042 | int done; |
| @@ -1221,7 +1222,7 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id) | |||
| 1221 | } /* if BASR_IRQ */ | 1222 | } /* if BASR_IRQ */ |
| 1222 | spin_unlock_irqrestore(instance->host_lock, flags); | 1223 | spin_unlock_irqrestore(instance->host_lock, flags); |
| 1223 | if(!done) | 1224 | if(!done) |
| 1224 | schedule_work(&hostdata->coroutine); | 1225 | schedule_delayed_work(&hostdata->coroutine, 0); |
| 1225 | } while (!done); | 1226 | } while (!done); |
| 1226 | return IRQ_HANDLED; | 1227 | return IRQ_HANDLED; |
| 1227 | } | 1228 | } |
