mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 07:04:24 +00:00
ncr5380: Drop legacy scsi.h include
Convert Scsi_Cmnd to struct scsi_cmnd and drop the #include "scsi.h". The sun3_NCR5380.c core driver already uses struct scsi_cmnd so converting the other core drivers reduces the diff which makes them easier to unify. Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Reviewed-by: Hannes Reinecke <hare@suse.de> Tested-by: Michael Schmitz <schmitzmic@gmail.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
96068e6b4d
commit
710ddd0d50
14 changed files with 105 additions and 111 deletions
|
@ -277,7 +277,7 @@ static void do_reset(struct Scsi_Host *host);
|
||||||
* Set up the internal fields in the SCSI command.
|
* Set up the internal fields in the SCSI command.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static __inline__ void initialize_SCp(Scsi_Cmnd * cmd)
|
static inline void initialize_SCp(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Initialize the Scsi Pointer field so that all of the commands in the
|
* Initialize the Scsi Pointer field so that all of the commands in the
|
||||||
|
@ -719,7 +719,7 @@ static int __maybe_unused NCR5380_write_info(struct Scsi_Host *instance,
|
||||||
#undef SPRINTF
|
#undef SPRINTF
|
||||||
#define SPRINTF(args...) seq_printf(m, ## args)
|
#define SPRINTF(args...) seq_printf(m, ## args)
|
||||||
static
|
static
|
||||||
void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m);
|
void lprint_Scsi_Cmnd(struct scsi_cmnd *cmd, struct seq_file *m);
|
||||||
static
|
static
|
||||||
void lprint_command(unsigned char *cmd, struct seq_file *m);
|
void lprint_command(unsigned char *cmd, struct seq_file *m);
|
||||||
static
|
static
|
||||||
|
@ -729,7 +729,7 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
struct Scsi_Host *instance)
|
struct Scsi_Host *instance)
|
||||||
{
|
{
|
||||||
struct NCR5380_hostdata *hostdata;
|
struct NCR5380_hostdata *hostdata;
|
||||||
Scsi_Cmnd *ptr;
|
struct scsi_cmnd *ptr;
|
||||||
|
|
||||||
hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
||||||
|
|
||||||
|
@ -741,19 +741,19 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
if (!hostdata->connected)
|
if (!hostdata->connected)
|
||||||
SPRINTF("scsi%d: no currently connected command\n", instance->host_no);
|
SPRINTF("scsi%d: no currently connected command\n", instance->host_no);
|
||||||
else
|
else
|
||||||
lprint_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected, m);
|
lprint_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected, m);
|
||||||
SPRINTF("scsi%d: issue_queue\n", instance->host_no);
|
SPRINTF("scsi%d: issue_queue\n", instance->host_no);
|
||||||
for (ptr = (Scsi_Cmnd *) hostdata->issue_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble)
|
for (ptr = (struct scsi_cmnd *) hostdata->issue_queue; ptr; ptr = (struct scsi_cmnd *) ptr->host_scribble)
|
||||||
lprint_Scsi_Cmnd(ptr, m);
|
lprint_Scsi_Cmnd(ptr, m);
|
||||||
|
|
||||||
SPRINTF("scsi%d: disconnected_queue\n", instance->host_no);
|
SPRINTF("scsi%d: disconnected_queue\n", instance->host_no);
|
||||||
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr; ptr = (Scsi_Cmnd *) ptr->host_scribble)
|
for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr; ptr = (struct scsi_cmnd *) ptr->host_scribble)
|
||||||
lprint_Scsi_Cmnd(ptr, m);
|
lprint_Scsi_Cmnd(ptr, m);
|
||||||
spin_unlock_irq(instance->host_lock);
|
spin_unlock_irq(instance->host_lock);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m)
|
static void lprint_Scsi_Cmnd(struct scsi_cmnd *cmd, struct seq_file *m)
|
||||||
{
|
{
|
||||||
SPRINTF("scsi%d : destination target %d, lun %llu\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
|
SPRINTF("scsi%d : destination target %d, lun %llu\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
|
||||||
SPRINTF(" command = ");
|
SPRINTF(" command = ");
|
||||||
|
@ -912,11 +912,11 @@ static void NCR5380_exit(struct Scsi_Host *instance)
|
||||||
* Locks: host lock taken by caller
|
* Locks: host lock taken by caller
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_queue_command_lck(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *))
|
static int NCR5380_queue_command_lck(struct scsi_cmnd *cmd, void (*done) (struct scsi_cmnd *))
|
||||||
{
|
{
|
||||||
struct Scsi_Host *instance = cmd->device->host;
|
struct Scsi_Host *instance = cmd->device->host;
|
||||||
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
||||||
Scsi_Cmnd *tmp;
|
struct scsi_cmnd *tmp;
|
||||||
|
|
||||||
#if (NDEBUG & NDEBUG_NO_WRITE)
|
#if (NDEBUG & NDEBUG_NO_WRITE)
|
||||||
switch (cmd->cmnd[0]) {
|
switch (cmd->cmnd[0]) {
|
||||||
|
@ -950,7 +950,7 @@ static int NCR5380_queue_command_lck(Scsi_Cmnd * cmd, void (*done) (Scsi_Cmnd *)
|
||||||
cmd->host_scribble = (unsigned char *) hostdata->issue_queue;
|
cmd->host_scribble = (unsigned char *) hostdata->issue_queue;
|
||||||
hostdata->issue_queue = cmd;
|
hostdata->issue_queue = cmd;
|
||||||
} else {
|
} else {
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue; tmp->host_scribble; tmp = (Scsi_Cmnd *) tmp->host_scribble);
|
for (tmp = (struct scsi_cmnd *) hostdata->issue_queue; tmp->host_scribble; tmp = (struct scsi_cmnd *) tmp->host_scribble);
|
||||||
LIST(cmd, tmp);
|
LIST(cmd, tmp);
|
||||||
tmp->host_scribble = (unsigned char *) cmd;
|
tmp->host_scribble = (unsigned char *) cmd;
|
||||||
}
|
}
|
||||||
|
@ -981,7 +981,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
struct NCR5380_hostdata *hostdata =
|
struct NCR5380_hostdata *hostdata =
|
||||||
container_of(work, struct NCR5380_hostdata, coroutine.work);
|
container_of(work, struct NCR5380_hostdata, coroutine.work);
|
||||||
struct Scsi_Host *instance = hostdata->host;
|
struct Scsi_Host *instance = hostdata->host;
|
||||||
Scsi_Cmnd *tmp, *prev;
|
struct scsi_cmnd *tmp, *prev;
|
||||||
int done;
|
int done;
|
||||||
|
|
||||||
spin_lock_irq(instance->host_lock);
|
spin_lock_irq(instance->host_lock);
|
||||||
|
@ -994,7 +994,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
* Search through the issue_queue for a command destined
|
* Search through the issue_queue for a command destined
|
||||||
* for a target that's not busy.
|
* for a target that's not busy.
|
||||||
*/
|
*/
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (tmp = (struct scsi_cmnd *) hostdata->issue_queue, prev = NULL; tmp; prev = tmp, tmp = (struct scsi_cmnd *) tmp->host_scribble)
|
||||||
{
|
{
|
||||||
if (prev != tmp)
|
if (prev != tmp)
|
||||||
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%llu\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%llu\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
||||||
|
@ -1006,7 +1006,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
prev->host_scribble = tmp->host_scribble;
|
prev->host_scribble = tmp->host_scribble;
|
||||||
} else {
|
} else {
|
||||||
REMOVE(-1, hostdata->issue_queue, tmp, tmp->host_scribble);
|
REMOVE(-1, hostdata->issue_queue, tmp, tmp->host_scribble);
|
||||||
hostdata->issue_queue = (Scsi_Cmnd *) tmp->host_scribble;
|
hostdata->issue_queue = (struct scsi_cmnd *) tmp->host_scribble;
|
||||||
}
|
}
|
||||||
tmp->host_scribble = NULL;
|
tmp->host_scribble = NULL;
|
||||||
|
|
||||||
|
@ -1053,7 +1053,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
/* exited locked */
|
/* exited locked */
|
||||||
} /* if (!hostdata->connected) */
|
} /* if (!hostdata->connected) */
|
||||||
if (hostdata->selecting) {
|
if (hostdata->selecting) {
|
||||||
tmp = (Scsi_Cmnd *) hostdata->selecting;
|
tmp = (struct scsi_cmnd *) hostdata->selecting;
|
||||||
/* Selection will drop and retake the lock */
|
/* Selection will drop and retake the lock */
|
||||||
if (!NCR5380_select(instance, tmp)) {
|
if (!NCR5380_select(instance, tmp)) {
|
||||||
/* Ok ?? */
|
/* Ok ?? */
|
||||||
|
@ -1175,7 +1175,8 @@ static irqreturn_t NCR5380_intr(int dummy, void *dev_id)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_select (struct Scsi_Host *instance, Scsi_Cmnd *cmd)
|
* Function : int NCR5380_select(struct Scsi_Host *instance,
|
||||||
|
* struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : establishes I_T_L or I_T_L_Q nexus for new or existing command,
|
* Purpose : establishes I_T_L or I_T_L_Q nexus for new or existing command,
|
||||||
* including ARBITRATION, SELECTION, and initial message out for
|
* including ARBITRATION, SELECTION, and initial message out for
|
||||||
|
@ -1204,7 +1205,7 @@ static irqreturn_t NCR5380_intr(int dummy, void *dev_id)
|
||||||
* Locks: caller holds hostdata lock in IRQ mode
|
* Locks: caller holds hostdata lock in IRQ mode
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd *cmd)
|
static int NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
NCR5380_local_declare();
|
NCR5380_local_declare();
|
||||||
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
||||||
|
@ -2011,7 +2012,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
#endif
|
#endif
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
unsigned char phase, tmp, extended_msg[10], old_phase = 0xff;
|
unsigned char phase, tmp, extended_msg[10], old_phase = 0xff;
|
||||||
Scsi_Cmnd *cmd = (Scsi_Cmnd *) hostdata->connected;
|
struct scsi_cmnd *cmd = (struct scsi_cmnd *) hostdata->connected;
|
||||||
/* RvC: we need to set the end of the polling time */
|
/* RvC: we need to set the end of the polling time */
|
||||||
unsigned long poll_time = jiffies + USLEEP_POLL;
|
unsigned long poll_time = jiffies + USLEEP_POLL;
|
||||||
|
|
||||||
|
@ -2201,7 +2202,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
LIST(cmd, hostdata->issue_queue);
|
LIST(cmd, hostdata->issue_queue);
|
||||||
cmd->host_scribble = (unsigned char *)
|
cmd->host_scribble = (unsigned char *)
|
||||||
hostdata->issue_queue;
|
hostdata->issue_queue;
|
||||||
hostdata->issue_queue = (Scsi_Cmnd *) cmd;
|
hostdata->issue_queue = (struct scsi_cmnd *) cmd;
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d : REQUEST SENSE added to head of issue queue\n", instance->host_no);
|
dprintk(NDEBUG_QUEUES, "scsi%d : REQUEST SENSE added to head of issue queue\n", instance->host_no);
|
||||||
} else {
|
} else {
|
||||||
cmd->scsi_done(cmd);
|
cmd->scsi_done(cmd);
|
||||||
|
@ -2398,7 +2399,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
* Function : void NCR5380_reselect (struct Scsi_Host *instance)
|
* Function : void NCR5380_reselect (struct Scsi_Host *instance)
|
||||||
*
|
*
|
||||||
* Purpose : does reselection, initializing the instance->connected
|
* Purpose : does reselection, initializing the instance->connected
|
||||||
* field to point to the Scsi_Cmnd for which the I_T_L or I_T_L_Q
|
* field to point to the scsi_cmnd for which the I_T_L or I_T_L_Q
|
||||||
* nexus has been reestablished,
|
* nexus has been reestablished,
|
||||||
*
|
*
|
||||||
* Inputs : instance - this instance of the NCR5380.
|
* Inputs : instance - this instance of the NCR5380.
|
||||||
|
@ -2415,7 +2416,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||||
int len;
|
int len;
|
||||||
unsigned char msg[3];
|
unsigned char msg[3];
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
Scsi_Cmnd *tmp = NULL, *prev;
|
struct scsi_cmnd *tmp = NULL, *prev;
|
||||||
int abort = 0;
|
int abort = 0;
|
||||||
NCR5380_setup(instance);
|
NCR5380_setup(instance);
|
||||||
|
|
||||||
|
@ -2481,7 +2482,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (tmp = (struct scsi_cmnd *) hostdata->disconnected_queue, prev = NULL; tmp; prev = tmp, tmp = (struct scsi_cmnd *) tmp->host_scribble)
|
||||||
if ((target_mask == (1 << tmp->device->id)) && (lun == (u8)tmp->device->lun)
|
if ((target_mask == (1 << tmp->device->id)) && (lun == (u8)tmp->device->lun)
|
||||||
) {
|
) {
|
||||||
if (prev) {
|
if (prev) {
|
||||||
|
@ -2489,7 +2490,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||||
prev->host_scribble = tmp->host_scribble;
|
prev->host_scribble = tmp->host_scribble;
|
||||||
} else {
|
} else {
|
||||||
REMOVE(-1, hostdata->disconnected_queue, tmp, tmp->host_scribble);
|
REMOVE(-1, hostdata->disconnected_queue, tmp, tmp->host_scribble);
|
||||||
hostdata->disconnected_queue = (Scsi_Cmnd *) tmp->host_scribble;
|
hostdata->disconnected_queue = (struct scsi_cmnd *) tmp->host_scribble;
|
||||||
}
|
}
|
||||||
tmp->host_scribble = NULL;
|
tmp->host_scribble = NULL;
|
||||||
break;
|
break;
|
||||||
|
@ -2520,7 +2521,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||||
*
|
*
|
||||||
* Inputs : instance - this instance of the NCR5380.
|
* Inputs : instance - this instance of the NCR5380.
|
||||||
*
|
*
|
||||||
* Returns : pointer to the Scsi_Cmnd structure for which the I_T_L
|
* Returns : pointer to the scsi_cmnd structure for which the I_T_L
|
||||||
* nexus has been reestablished, on failure NULL is returned.
|
* nexus has been reestablished, on failure NULL is returned.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -2562,11 +2563,11 @@ static void NCR5380_dma_complete(NCR5380_instance * instance) {
|
||||||
#endif /* def REAL_DMA */
|
#endif /* def REAL_DMA */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_abort (Scsi_Cmnd *cmd)
|
* Function : int NCR5380_abort (struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : abort a command
|
* Purpose : abort a command
|
||||||
*
|
*
|
||||||
* Inputs : cmd - the Scsi_Cmnd to abort, code - code to set the
|
* Inputs : cmd - the scsi_cmnd to abort, code - code to set the
|
||||||
* host byte of the result field to, if zero DID_ABORTED is
|
* host byte of the result field to, if zero DID_ABORTED is
|
||||||
* used.
|
* used.
|
||||||
*
|
*
|
||||||
|
@ -2580,11 +2581,12 @@ static void NCR5380_dma_complete(NCR5380_instance * instance) {
|
||||||
* Locks: host lock taken by caller
|
* Locks: host lock taken by caller
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
static int NCR5380_abort(struct scsi_cmnd *cmd)
|
||||||
|
{
|
||||||
NCR5380_local_declare();
|
NCR5380_local_declare();
|
||||||
struct Scsi_Host *instance = cmd->device->host;
|
struct Scsi_Host *instance = cmd->device->host;
|
||||||
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
struct NCR5380_hostdata *hostdata = (struct NCR5380_hostdata *) instance->hostdata;
|
||||||
Scsi_Cmnd *tmp, **prev;
|
struct scsi_cmnd *tmp, **prev;
|
||||||
|
|
||||||
scmd_printk(KERN_WARNING, cmd, "aborting command\n");
|
scmd_printk(KERN_WARNING, cmd, "aborting command\n");
|
||||||
|
|
||||||
|
@ -2632,10 +2634,10 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
dprintk(NDEBUG_ABORT, "scsi%d : abort going into loop.\n", instance->host_no);
|
dprintk(NDEBUG_ABORT, "scsi%d : abort going into loop.\n", instance->host_no);
|
||||||
for (prev = (Scsi_Cmnd **) & (hostdata->issue_queue), tmp = (Scsi_Cmnd *) hostdata->issue_queue; tmp; prev = (Scsi_Cmnd **) & (tmp->host_scribble), tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (prev = (struct scsi_cmnd **) &(hostdata->issue_queue), tmp = (struct scsi_cmnd *) hostdata->issue_queue; tmp; prev = (struct scsi_cmnd **) &(tmp->host_scribble), tmp = (struct scsi_cmnd *) tmp->host_scribble)
|
||||||
if (cmd == tmp) {
|
if (cmd == tmp) {
|
||||||
REMOVE(5, *prev, tmp, tmp->host_scribble);
|
REMOVE(5, *prev, tmp, tmp->host_scribble);
|
||||||
(*prev) = (Scsi_Cmnd *) tmp->host_scribble;
|
(*prev) = (struct scsi_cmnd *) tmp->host_scribble;
|
||||||
tmp->host_scribble = NULL;
|
tmp->host_scribble = NULL;
|
||||||
tmp->result = DID_ABORT << 16;
|
tmp->result = DID_ABORT << 16;
|
||||||
dprintk(NDEBUG_ABORT, "scsi%d : abort removed command from issue queue.\n", instance->host_no);
|
dprintk(NDEBUG_ABORT, "scsi%d : abort removed command from issue queue.\n", instance->host_no);
|
||||||
|
@ -2688,7 +2690,7 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||||
* it from the disconnected queue.
|
* it from the disconnected queue.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue; tmp; tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (tmp = (struct scsi_cmnd *) hostdata->disconnected_queue; tmp; tmp = (struct scsi_cmnd *) tmp->host_scribble)
|
||||||
if (cmd == tmp) {
|
if (cmd == tmp) {
|
||||||
dprintk(NDEBUG_ABORT, "scsi%d : aborting disconnected command.\n", instance->host_no);
|
dprintk(NDEBUG_ABORT, "scsi%d : aborting disconnected command.\n", instance->host_no);
|
||||||
|
|
||||||
|
@ -2698,10 +2700,10 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||||
|
|
||||||
do_abort(instance);
|
do_abort(instance);
|
||||||
|
|
||||||
for (prev = (Scsi_Cmnd **) & (hostdata->disconnected_queue), tmp = (Scsi_Cmnd *) hostdata->disconnected_queue; tmp; prev = (Scsi_Cmnd **) & (tmp->host_scribble), tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (prev = (struct scsi_cmnd **) &(hostdata->disconnected_queue), tmp = (struct scsi_cmnd *) hostdata->disconnected_queue; tmp; prev = (struct scsi_cmnd **) &(tmp->host_scribble), tmp = (struct scsi_cmnd *) tmp->host_scribble)
|
||||||
if (cmd == tmp) {
|
if (cmd == tmp) {
|
||||||
REMOVE(5, *prev, tmp, tmp->host_scribble);
|
REMOVE(5, *prev, tmp, tmp->host_scribble);
|
||||||
*prev = (Scsi_Cmnd *) tmp->host_scribble;
|
*prev = (struct scsi_cmnd *) tmp->host_scribble;
|
||||||
tmp->host_scribble = NULL;
|
tmp->host_scribble = NULL;
|
||||||
tmp->result = DID_ABORT << 16;
|
tmp->result = DID_ABORT << 16;
|
||||||
tmp->scsi_done(tmp);
|
tmp->scsi_done(tmp);
|
||||||
|
@ -2724,7 +2726,7 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_bus_reset (Scsi_Cmnd *cmd)
|
* Function : int NCR5380_bus_reset (struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : reset the SCSI bus.
|
* Purpose : reset the SCSI bus.
|
||||||
*
|
*
|
||||||
|
@ -2733,7 +2735,7 @@ static int NCR5380_abort(Scsi_Cmnd * cmd) {
|
||||||
* Locks: host lock taken by caller
|
* Locks: host lock taken by caller
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_bus_reset(Scsi_Cmnd * cmd)
|
static int NCR5380_bus_reset(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
struct Scsi_Host *instance = cmd->device->host;
|
struct Scsi_Host *instance = cmd->device->host;
|
||||||
|
|
||||||
|
|
|
@ -255,9 +255,9 @@ struct NCR5380_hostdata {
|
||||||
volatile int dma_len; /* requested length of DMA */
|
volatile int dma_len; /* requested length of DMA */
|
||||||
#endif
|
#endif
|
||||||
volatile unsigned char last_message; /* last message OUT */
|
volatile unsigned char last_message; /* last message OUT */
|
||||||
volatile Scsi_Cmnd *connected; /* currently connected command */
|
volatile struct scsi_cmnd *connected; /* currently connected command */
|
||||||
volatile Scsi_Cmnd *issue_queue; /* waiting to be issued */
|
volatile struct scsi_cmnd *issue_queue; /* waiting to be issued */
|
||||||
volatile Scsi_Cmnd *disconnected_queue; /* waiting for reconnect */
|
volatile struct scsi_cmnd *disconnected_queue; /* waiting for reconnect */
|
||||||
volatile int restart_select; /* we have disconnected,
|
volatile int restart_select; /* we have disconnected,
|
||||||
used to restart
|
used to restart
|
||||||
NCR5380_select() */
|
NCR5380_select() */
|
||||||
|
@ -265,7 +265,7 @@ struct NCR5380_hostdata {
|
||||||
int flags;
|
int flags;
|
||||||
unsigned long time_expires; /* in jiffies, set prior to sleeping */
|
unsigned long time_expires; /* in jiffies, set prior to sleeping */
|
||||||
int select_time; /* timer in select for target response */
|
int select_time; /* timer in select for target response */
|
||||||
volatile Scsi_Cmnd *selecting;
|
volatile struct scsi_cmnd *selecting;
|
||||||
struct delayed_work coroutine; /* our co-routine */
|
struct delayed_work coroutine; /* our co-routine */
|
||||||
struct scsi_eh_save ses;
|
struct scsi_eh_save ses;
|
||||||
char info[256];
|
char info[256];
|
||||||
|
@ -309,7 +309,7 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id);
|
||||||
static void NCR5380_main(struct work_struct *work);
|
static void NCR5380_main(struct work_struct *work);
|
||||||
static const char *NCR5380_info(struct Scsi_Host *instance);
|
static const char *NCR5380_info(struct Scsi_Host *instance);
|
||||||
static void NCR5380_reselect(struct Scsi_Host *instance);
|
static void NCR5380_reselect(struct Scsi_Host *instance);
|
||||||
static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd *cmd);
|
static int NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd);
|
||||||
#if defined(PSEUDO_DMA) || defined(REAL_DMA) || defined(REAL_DMA_POLL)
|
#if defined(PSEUDO_DMA) || defined(REAL_DMA) || defined(REAL_DMA_POLL)
|
||||||
static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
|
static int NCR5380_transfer_dma(struct Scsi_Host *instance, unsigned char *phase, int *count, unsigned char **data);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
#include <asm/ecard.h>
|
#include <asm/ecard.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
#include "../scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
|
|
||||||
#include <scsi/scsicam.h>
|
#include <scsi/scsicam.h>
|
||||||
|
|
|
@ -14,7 +14,6 @@
|
||||||
#include <asm/ecard.h>
|
#include <asm/ecard.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
#include "../scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
|
|
||||||
/*#define PSEUDO_DMA*/
|
/*#define PSEUDO_DMA*/
|
||||||
|
|
|
@ -262,9 +262,9 @@ static struct scsi_host_template *the_template = NULL;
|
||||||
(struct NCR5380_hostdata *)(in)->hostdata
|
(struct NCR5380_hostdata *)(in)->hostdata
|
||||||
#define HOSTDATA(in) ((struct NCR5380_hostdata *)(in)->hostdata)
|
#define HOSTDATA(in) ((struct NCR5380_hostdata *)(in)->hostdata)
|
||||||
|
|
||||||
#define NEXT(cmd) ((Scsi_Cmnd *)(cmd)->host_scribble)
|
#define NEXT(cmd) ((struct scsi_cmnd *)(cmd)->host_scribble)
|
||||||
#define SET_NEXT(cmd,next) ((cmd)->host_scribble = (void *)(next))
|
#define SET_NEXT(cmd,next) ((cmd)->host_scribble = (void *)(next))
|
||||||
#define NEXTADDR(cmd) ((Scsi_Cmnd **)&(cmd)->host_scribble)
|
#define NEXTADDR(cmd) ((struct scsi_cmnd **)&(cmd)->host_scribble)
|
||||||
|
|
||||||
#define HOSTNO instance->host_no
|
#define HOSTNO instance->host_no
|
||||||
#define H_NO(cmd) (cmd)->device->host->host_no
|
#define H_NO(cmd) (cmd)->device->host->host_no
|
||||||
|
@ -345,7 +345,7 @@ static void __init init_tags(void)
|
||||||
* conditions.
|
* conditions.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
static int is_lun_busy(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
{
|
{
|
||||||
u8 lun = cmd->device->lun;
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
@ -370,7 +370,7 @@ static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
* untagged.
|
* untagged.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
static void cmd_get_tag(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
{
|
{
|
||||||
u8 lun = cmd->device->lun;
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
@ -402,7 +402,7 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
* unlock the LUN.
|
* unlock the LUN.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void cmd_free_tag(Scsi_Cmnd *cmd)
|
static void cmd_free_tag(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
u8 lun = cmd->device->lun;
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
@ -445,18 +445,18 @@ static void free_all_tags(void)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function: void merge_contiguous_buffers( Scsi_Cmnd *cmd )
|
* Function: void merge_contiguous_buffers( struct scsi_cmnd *cmd )
|
||||||
*
|
*
|
||||||
* Purpose: Try to merge several scatter-gather requests into one DMA
|
* Purpose: Try to merge several scatter-gather requests into one DMA
|
||||||
* transfer. This is possible if the scatter buffers lie on
|
* transfer. This is possible if the scatter buffers lie on
|
||||||
* physical contiguous addresses.
|
* physical contiguous addresses.
|
||||||
*
|
*
|
||||||
* Parameters: Scsi_Cmnd *cmd
|
* Parameters: struct scsi_cmnd *cmd
|
||||||
* The command to work on. The first scatter buffer's data are
|
* The command to work on. The first scatter buffer's data are
|
||||||
* assumed to be already transferred into ptr/this_residual.
|
* assumed to be already transferred into ptr/this_residual.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void merge_contiguous_buffers(Scsi_Cmnd *cmd)
|
static void merge_contiguous_buffers(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
unsigned long endaddr;
|
unsigned long endaddr;
|
||||||
#if (NDEBUG & NDEBUG_MERGING)
|
#if (NDEBUG & NDEBUG_MERGING)
|
||||||
|
@ -485,15 +485,15 @@ static void merge_contiguous_buffers(Scsi_Cmnd *cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : void initialize_SCp(Scsi_Cmnd *cmd)
|
* Function : void initialize_SCp(struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : initialize the saved data pointers for cmd to point to the
|
* Purpose : initialize the saved data pointers for cmd to point to the
|
||||||
* start of the buffer.
|
* start of the buffer.
|
||||||
*
|
*
|
||||||
* Inputs : cmd - Scsi_Cmnd structure to have pointers reset.
|
* Inputs : cmd - scsi_cmnd structure to have pointers reset.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static inline void initialize_SCp(Scsi_Cmnd *cmd)
|
static inline void initialize_SCp(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Initialize the Scsi Pointer field so that all of the commands in the
|
* Initialize the Scsi Pointer field so that all of the commands in the
|
||||||
|
@ -714,7 +714,7 @@ static void prepare_info(struct Scsi_Host *instance)
|
||||||
* Inputs : instance, pointer to this instance.
|
* Inputs : instance, pointer to this instance.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
static void lprint_Scsi_Cmnd(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
|
@ -731,7 +731,7 @@ static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
||||||
static void NCR5380_print_status(struct Scsi_Host *instance)
|
static void NCR5380_print_status(struct Scsi_Host *instance)
|
||||||
{
|
{
|
||||||
struct NCR5380_hostdata *hostdata;
|
struct NCR5380_hostdata *hostdata;
|
||||||
Scsi_Cmnd *ptr;
|
struct scsi_cmnd *ptr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
NCR5380_dprint(NDEBUG_ANY, instance);
|
NCR5380_dprint(NDEBUG_ANY, instance);
|
||||||
|
@ -745,13 +745,13 @@ static void NCR5380_print_status(struct Scsi_Host *instance)
|
||||||
if (!hostdata->connected)
|
if (!hostdata->connected)
|
||||||
printk("scsi%d: no currently connected command\n", HOSTNO);
|
printk("scsi%d: no currently connected command\n", HOSTNO);
|
||||||
else
|
else
|
||||||
lprint_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected);
|
lprint_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected);
|
||||||
printk("scsi%d: issue_queue\n", HOSTNO);
|
printk("scsi%d: issue_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
for (ptr = (struct scsi_cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
||||||
lprint_Scsi_Cmnd(ptr);
|
lprint_Scsi_Cmnd(ptr);
|
||||||
|
|
||||||
printk("scsi%d: disconnected_queue\n", HOSTNO);
|
printk("scsi%d: disconnected_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr;
|
for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr;
|
||||||
ptr = NEXT(ptr))
|
ptr = NEXT(ptr))
|
||||||
lprint_Scsi_Cmnd(ptr);
|
lprint_Scsi_Cmnd(ptr);
|
||||||
|
|
||||||
|
@ -759,7 +759,7 @@ static void NCR5380_print_status(struct Scsi_Host *instance)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
|
static void show_Scsi_Cmnd(struct scsi_cmnd *cmd, struct seq_file *m)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
|
@ -777,7 +777,7 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
struct Scsi_Host *instance)
|
struct Scsi_Host *instance)
|
||||||
{
|
{
|
||||||
struct NCR5380_hostdata *hostdata;
|
struct NCR5380_hostdata *hostdata;
|
||||||
Scsi_Cmnd *ptr;
|
struct scsi_cmnd *ptr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
hostdata = (struct NCR5380_hostdata *)instance->hostdata;
|
hostdata = (struct NCR5380_hostdata *)instance->hostdata;
|
||||||
|
@ -788,13 +788,13 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
if (!hostdata->connected)
|
if (!hostdata->connected)
|
||||||
seq_printf(m, "scsi%d: no currently connected command\n", HOSTNO);
|
seq_printf(m, "scsi%d: no currently connected command\n", HOSTNO);
|
||||||
else
|
else
|
||||||
show_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected, m);
|
show_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected, m);
|
||||||
seq_printf(m, "scsi%d: issue_queue\n", HOSTNO);
|
seq_printf(m, "scsi%d: issue_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
for (ptr = (struct scsi_cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
||||||
show_Scsi_Cmnd(ptr, m);
|
show_Scsi_Cmnd(ptr, m);
|
||||||
|
|
||||||
seq_printf(m, "scsi%d: disconnected_queue\n", HOSTNO);
|
seq_printf(m, "scsi%d: disconnected_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr;
|
for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr;
|
||||||
ptr = NEXT(ptr))
|
ptr = NEXT(ptr))
|
||||||
show_Scsi_Cmnd(ptr, m);
|
show_Scsi_Cmnd(ptr, m);
|
||||||
|
|
||||||
|
@ -862,8 +862,8 @@ static void NCR5380_exit(struct Scsi_Host *instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_queue_command (Scsi_Cmnd *cmd,
|
* Function : int NCR5380_queue_command (struct scsi_cmnd *cmd,
|
||||||
* void (*done)(Scsi_Cmnd *))
|
* void (*done)(struct scsi_cmnd *))
|
||||||
*
|
*
|
||||||
* Purpose : enqueues a SCSI command
|
* Purpose : enqueues a SCSI command
|
||||||
*
|
*
|
||||||
|
@ -879,10 +879,11 @@ static void NCR5380_exit(struct Scsi_Host *instance)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_queue_command_lck(Scsi_Cmnd *cmd, void (*done)(Scsi_Cmnd *))
|
static int NCR5380_queue_command_lck(struct scsi_cmnd *cmd,
|
||||||
|
void (*done)(struct scsi_cmnd *))
|
||||||
{
|
{
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
Scsi_Cmnd *tmp;
|
struct scsi_cmnd *tmp;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
#if (NDEBUG & NDEBUG_NO_WRITE)
|
#if (NDEBUG & NDEBUG_NO_WRITE)
|
||||||
|
@ -937,7 +938,7 @@ static int NCR5380_queue_command_lck(Scsi_Cmnd *cmd, void (*done)(Scsi_Cmnd *))
|
||||||
SET_NEXT(cmd, hostdata->issue_queue);
|
SET_NEXT(cmd, hostdata->issue_queue);
|
||||||
hostdata->issue_queue = cmd;
|
hostdata->issue_queue = cmd;
|
||||||
} else {
|
} else {
|
||||||
for (tmp = (Scsi_Cmnd *)hostdata->issue_queue;
|
for (tmp = (struct scsi_cmnd *)hostdata->issue_queue;
|
||||||
NEXT(tmp); tmp = NEXT(tmp))
|
NEXT(tmp); tmp = NEXT(tmp))
|
||||||
;
|
;
|
||||||
LIST(cmd, tmp);
|
LIST(cmd, tmp);
|
||||||
|
@ -978,7 +979,7 @@ static DEF_SCSI_QCMD(NCR5380_queue_command)
|
||||||
|
|
||||||
static void NCR5380_main(struct work_struct *work)
|
static void NCR5380_main(struct work_struct *work)
|
||||||
{
|
{
|
||||||
Scsi_Cmnd *tmp, *prev;
|
struct scsi_cmnd *tmp, *prev;
|
||||||
struct Scsi_Host *instance = first_instance;
|
struct Scsi_Host *instance = first_instance;
|
||||||
struct NCR5380_hostdata *hostdata = HOSTDATA(instance);
|
struct NCR5380_hostdata *hostdata = HOSTDATA(instance);
|
||||||
int done;
|
int done;
|
||||||
|
@ -1021,7 +1022,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
* for a target that's not busy.
|
* for a target that's not busy.
|
||||||
*/
|
*/
|
||||||
#if (NDEBUG & NDEBUG_LISTS)
|
#if (NDEBUG & NDEBUG_LISTS)
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue, prev = NULL;
|
for (tmp = (struct scsi_cmnd *) hostdata->issue_queue, prev = NULL;
|
||||||
tmp && (tmp != prev); prev = tmp, tmp = NEXT(tmp))
|
tmp && (tmp != prev); prev = tmp, tmp = NEXT(tmp))
|
||||||
;
|
;
|
||||||
/*printk("%p ", tmp);*/
|
/*printk("%p ", tmp);*/
|
||||||
|
@ -1029,7 +1030,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
printk(" LOOP\n");
|
printk(" LOOP\n");
|
||||||
/* else printk("\n"); */
|
/* else printk("\n"); */
|
||||||
#endif
|
#endif
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue,
|
for (tmp = (struct scsi_cmnd *) hostdata->issue_queue,
|
||||||
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp)) {
|
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp)) {
|
||||||
u8 lun = tmp->device->lun;
|
u8 lun = tmp->device->lun;
|
||||||
|
|
||||||
|
@ -1291,7 +1292,8 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_select (struct Scsi_Host *instance, Scsi_Cmnd *cmd)
|
* Function : int NCR5380_select(struct Scsi_Host *instance,
|
||||||
|
* struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : establishes I_T_L or I_T_L_Q nexus for new or existing command,
|
* Purpose : establishes I_T_L or I_T_L_Q nexus for new or existing command,
|
||||||
* including ARBITRATION, SELECTION, and initial message out for
|
* including ARBITRATION, SELECTION, and initial message out for
|
||||||
|
@ -1318,7 +1320,7 @@ static irqreturn_t NCR5380_intr(int irq, void *dev_id)
|
||||||
* cmd->result host byte set to DID_BAD_TARGET.
|
* cmd->result host byte set to DID_BAD_TARGET.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd *cmd)
|
static int NCR5380_select(struct Scsi_Host *instance, struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
SETUP_HOSTDATA(instance);
|
SETUP_HOSTDATA(instance);
|
||||||
unsigned char tmp[3], phase;
|
unsigned char tmp[3], phase;
|
||||||
|
@ -1917,7 +1919,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
#endif
|
#endif
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
unsigned char phase, tmp, extended_msg[10], old_phase = 0xff;
|
unsigned char phase, tmp, extended_msg[10], old_phase = 0xff;
|
||||||
Scsi_Cmnd *cmd = (Scsi_Cmnd *) hostdata->connected;
|
struct scsi_cmnd *cmd = (struct scsi_cmnd *) hostdata->connected;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
tmp = NCR5380_read(STATUS_REG);
|
tmp = NCR5380_read(STATUS_REG);
|
||||||
|
@ -2154,7 +2156,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
LIST(cmd,hostdata->issue_queue);
|
LIST(cmd,hostdata->issue_queue);
|
||||||
SET_NEXT(cmd, hostdata->issue_queue);
|
SET_NEXT(cmd, hostdata->issue_queue);
|
||||||
hostdata->issue_queue = (Scsi_Cmnd *) cmd;
|
hostdata->issue_queue = (struct scsi_cmnd *) cmd;
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d: REQUEST SENSE added to head of "
|
dprintk(NDEBUG_QUEUES, "scsi%d: REQUEST SENSE added to head of "
|
||||||
"issue queue\n", H_NO(cmd));
|
"issue queue\n", H_NO(cmd));
|
||||||
|
@ -2378,7 +2380,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
* Function : void NCR5380_reselect (struct Scsi_Host *instance)
|
* Function : void NCR5380_reselect (struct Scsi_Host *instance)
|
||||||
*
|
*
|
||||||
* Purpose : does reselection, initializing the instance->connected
|
* Purpose : does reselection, initializing the instance->connected
|
||||||
* field to point to the Scsi_Cmnd for which the I_T_L or I_T_L_Q
|
* field to point to the scsi_cmnd for which the I_T_L or I_T_L_Q
|
||||||
* nexus has been reestablished,
|
* nexus has been reestablished,
|
||||||
*
|
*
|
||||||
* Inputs : instance - this instance of the NCR5380.
|
* Inputs : instance - this instance of the NCR5380.
|
||||||
|
@ -2397,7 +2399,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
|
||||||
#endif
|
#endif
|
||||||
unsigned char msg[3];
|
unsigned char msg[3];
|
||||||
unsigned char *data;
|
unsigned char *data;
|
||||||
Scsi_Cmnd *tmp = NULL, *prev;
|
struct scsi_cmnd *tmp = NULL, *prev;
|
||||||
/* unsigned long flags; */
|
/* unsigned long flags; */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2471,7 +2473,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
|
||||||
* just reestablished, and remove it from the disconnected queue.
|
* just reestablished, and remove it from the disconnected queue.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue, prev = NULL;
|
for (tmp = (struct scsi_cmnd *) hostdata->disconnected_queue, prev = NULL;
|
||||||
tmp; prev = tmp, tmp = NEXT(tmp)) {
|
tmp; prev = tmp, tmp = NEXT(tmp)) {
|
||||||
if ((target_mask == (1 << tmp->device->id)) && (lun == tmp->device->lun)
|
if ((target_mask == (1 << tmp->device->id)) && (lun == tmp->device->lun)
|
||||||
#ifdef SUPPORT_TAGS
|
#ifdef SUPPORT_TAGS
|
||||||
|
@ -2522,11 +2524,11 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_abort (Scsi_Cmnd *cmd)
|
* Function : int NCR5380_abort (struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : abort a command
|
* Purpose : abort a command
|
||||||
*
|
*
|
||||||
* Inputs : cmd - the Scsi_Cmnd to abort, code - code to set the
|
* Inputs : cmd - the scsi_cmnd to abort, code - code to set the
|
||||||
* host byte of the result field to, if zero DID_ABORTED is
|
* host byte of the result field to, if zero DID_ABORTED is
|
||||||
* used.
|
* used.
|
||||||
*
|
*
|
||||||
|
@ -2539,11 +2541,11 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static
|
static
|
||||||
int NCR5380_abort(Scsi_Cmnd *cmd)
|
int NCR5380_abort(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
struct Scsi_Host *instance = cmd->device->host;
|
struct Scsi_Host *instance = cmd->device->host;
|
||||||
SETUP_HOSTDATA(instance);
|
SETUP_HOSTDATA(instance);
|
||||||
Scsi_Cmnd *tmp, **prev;
|
struct scsi_cmnd *tmp, **prev;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
scmd_printk(KERN_NOTICE, cmd, "aborting command\n");
|
scmd_printk(KERN_NOTICE, cmd, "aborting command\n");
|
||||||
|
@ -2612,8 +2614,8 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
|
||||||
* Case 2 : If the command hasn't been issued yet, we simply remove it
|
* Case 2 : If the command hasn't been issued yet, we simply remove it
|
||||||
* from the issue queue.
|
* from the issue queue.
|
||||||
*/
|
*/
|
||||||
for (prev = (Scsi_Cmnd **)&(hostdata->issue_queue),
|
for (prev = (struct scsi_cmnd **)&(hostdata->issue_queue),
|
||||||
tmp = (Scsi_Cmnd *)hostdata->issue_queue;
|
tmp = (struct scsi_cmnd *)hostdata->issue_queue;
|
||||||
tmp; prev = NEXTADDR(tmp), tmp = NEXT(tmp)) {
|
tmp; prev = NEXTADDR(tmp), tmp = NEXT(tmp)) {
|
||||||
if (cmd == tmp) {
|
if (cmd == tmp) {
|
||||||
REMOVE(5, *prev, tmp, NEXT(tmp));
|
REMOVE(5, *prev, tmp, NEXT(tmp));
|
||||||
|
@ -2673,7 +2675,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
|
||||||
* it from the disconnected queue.
|
* it from the disconnected queue.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue; tmp;
|
for (tmp = (struct scsi_cmnd *) hostdata->disconnected_queue; tmp;
|
||||||
tmp = NEXT(tmp)) {
|
tmp = NEXT(tmp)) {
|
||||||
if (cmd == tmp) {
|
if (cmd == tmp) {
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
|
@ -2687,8 +2689,8 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
|
||||||
do_abort(instance);
|
do_abort(instance);
|
||||||
|
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
for (prev = (Scsi_Cmnd **)&(hostdata->disconnected_queue),
|
for (prev = (struct scsi_cmnd **)&(hostdata->disconnected_queue),
|
||||||
tmp = (Scsi_Cmnd *)hostdata->disconnected_queue;
|
tmp = (struct scsi_cmnd *)hostdata->disconnected_queue;
|
||||||
tmp; prev = NEXTADDR(tmp), tmp = NEXT(tmp)) {
|
tmp; prev = NEXTADDR(tmp), tmp = NEXT(tmp)) {
|
||||||
if (cmd == tmp) {
|
if (cmd == tmp) {
|
||||||
REMOVE(5, *prev, tmp, NEXT(tmp));
|
REMOVE(5, *prev, tmp, NEXT(tmp));
|
||||||
|
@ -2737,7 +2739,7 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Function : int NCR5380_reset (Scsi_Cmnd *cmd)
|
* Function : int NCR5380_reset (struct scsi_cmnd *cmd)
|
||||||
*
|
*
|
||||||
* Purpose : reset the SCSI bus.
|
* Purpose : reset the SCSI bus.
|
||||||
*
|
*
|
||||||
|
@ -2745,13 +2747,13 @@ int NCR5380_abort(Scsi_Cmnd *cmd)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int NCR5380_bus_reset(Scsi_Cmnd *cmd)
|
static int NCR5380_bus_reset(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
int i;
|
int i;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
#if defined(RESET_RUN_DONE)
|
#if defined(RESET_RUN_DONE)
|
||||||
Scsi_Cmnd *connected, *disconnected_queue;
|
struct scsi_cmnd *connected, *disconnected_queue;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!IS_A_TT() && !falcon_got_lock)
|
if (!IS_A_TT() && !falcon_got_lock)
|
||||||
|
@ -2793,9 +2795,9 @@ static int NCR5380_bus_reset(Scsi_Cmnd *cmd)
|
||||||
* remembered in local variables first.
|
* remembered in local variables first.
|
||||||
*/
|
*/
|
||||||
local_irq_save(flags);
|
local_irq_save(flags);
|
||||||
connected = (Scsi_Cmnd *)hostdata->connected;
|
connected = (struct scsi_cmnd *)hostdata->connected;
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
disconnected_queue = (Scsi_Cmnd *)hostdata->disconnected_queue;
|
disconnected_queue = (struct scsi_cmnd *)hostdata->disconnected_queue;
|
||||||
hostdata->disconnected_queue = NULL;
|
hostdata->disconnected_queue = NULL;
|
||||||
#ifdef SUPPORT_TAGS
|
#ifdef SUPPORT_TAGS
|
||||||
free_all_tags();
|
free_all_tags();
|
||||||
|
|
|
@ -93,7 +93,6 @@
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/traps.h>
|
#include <asm/traps.h>
|
||||||
|
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "atari_scsi.h"
|
#include "atari_scsi.h"
|
||||||
#include "NCR5380.h"
|
#include "NCR5380.h"
|
||||||
|
@ -880,7 +879,7 @@ static long atari_scsi_dma_residual(struct Scsi_Host *instance)
|
||||||
#define CMD_SURELY_BYTE_MODE 1
|
#define CMD_SURELY_BYTE_MODE 1
|
||||||
#define CMD_MODE_UNKNOWN 2
|
#define CMD_MODE_UNKNOWN 2
|
||||||
|
|
||||||
static int falcon_classify_cmd(Scsi_Cmnd *cmd)
|
static int falcon_classify_cmd(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
unsigned char opcode = cmd->cmnd[0];
|
unsigned char opcode = cmd->cmnd[0];
|
||||||
|
|
||||||
|
@ -912,7 +911,7 @@ static int falcon_classify_cmd(Scsi_Cmnd *cmd)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static unsigned long atari_dma_xfer_len(unsigned long wanted_len,
|
static unsigned long atari_dma_xfer_len(unsigned long wanted_len,
|
||||||
Scsi_Cmnd *cmd, int write_flag)
|
struct scsi_cmnd *cmd, int write_flag)
|
||||||
{
|
{
|
||||||
unsigned long possible_len, limit;
|
unsigned long possible_len, limit;
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
* Includes needed for NCR5380.[ch] (XXX: Move them to NCR5380.h)
|
* Includes needed for NCR5380.[ch] (XXX: Move them to NCR5380.h)
|
||||||
*/
|
*/
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include "scsi.h"
|
|
||||||
|
|
||||||
#include "NCR5380.h"
|
#include "NCR5380.h"
|
||||||
#include "NCR5380.c"
|
#include "NCR5380.c"
|
||||||
|
|
|
@ -58,7 +58,6 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "dtc.h"
|
#include "dtc.h"
|
||||||
#define AUTOPROBE_IRQ
|
#define AUTOPROBE_IRQ
|
||||||
|
|
|
@ -72,7 +72,6 @@
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <linux/signal.h>
|
#include <linux/signal.h>
|
||||||
#include <linux/blkdev.h>
|
#include <linux/blkdev.h>
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "g_NCR5380.h"
|
#include "g_NCR5380.h"
|
||||||
#include "NCR5380.h"
|
#include "NCR5380.h"
|
||||||
|
|
|
@ -30,7 +30,6 @@
|
||||||
#include <asm/macints.h>
|
#include <asm/macints.h>
|
||||||
#include <asm/mac_via.h>
|
#include <asm/mac_via.h>
|
||||||
|
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "mac_scsi.h"
|
#include "mac_scsi.h"
|
||||||
|
|
||||||
|
|
|
@ -81,7 +81,6 @@
|
||||||
#include <linux/stat.h>
|
#include <linux/stat.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "pas16.h"
|
#include "pas16.h"
|
||||||
#define AUTOPROBE_IRQ
|
#define AUTOPROBE_IRQ
|
||||||
|
|
|
@ -660,7 +660,7 @@ static void prepare_info(struct Scsi_Host *instance)
|
||||||
* Inputs : instance, pointer to this instance.
|
* Inputs : instance, pointer to this instance.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
static void lprint_Scsi_Cmnd(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
|
@ -677,7 +677,7 @@ static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
||||||
static void NCR5380_print_status(struct Scsi_Host *instance)
|
static void NCR5380_print_status(struct Scsi_Host *instance)
|
||||||
{
|
{
|
||||||
struct NCR5380_hostdata *hostdata;
|
struct NCR5380_hostdata *hostdata;
|
||||||
Scsi_Cmnd *ptr;
|
struct scsi_cmnd *ptr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
NCR5380_dprint(NDEBUG_ANY, instance);
|
NCR5380_dprint(NDEBUG_ANY, instance);
|
||||||
|
@ -691,13 +691,13 @@ static void NCR5380_print_status(struct Scsi_Host *instance)
|
||||||
if (!hostdata->connected)
|
if (!hostdata->connected)
|
||||||
printk("scsi%d: no currently connected command\n", HOSTNO);
|
printk("scsi%d: no currently connected command\n", HOSTNO);
|
||||||
else
|
else
|
||||||
lprint_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected);
|
lprint_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected);
|
||||||
printk("scsi%d: issue_queue\n", HOSTNO);
|
printk("scsi%d: issue_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
for (ptr = (struct scsi_cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
||||||
lprint_Scsi_Cmnd(ptr);
|
lprint_Scsi_Cmnd(ptr);
|
||||||
|
|
||||||
printk("scsi%d: disconnected_queue\n", HOSTNO);
|
printk("scsi%d: disconnected_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr;
|
for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr;
|
||||||
ptr = NEXT(ptr))
|
ptr = NEXT(ptr))
|
||||||
lprint_Scsi_Cmnd(ptr);
|
lprint_Scsi_Cmnd(ptr);
|
||||||
|
|
||||||
|
@ -705,7 +705,7 @@ static void NCR5380_print_status(struct Scsi_Host *instance)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
|
static void show_Scsi_Cmnd(struct scsi_cmnd *cmd, struct seq_file *m)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
|
@ -723,7 +723,7 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
struct Scsi_Host *instance)
|
struct Scsi_Host *instance)
|
||||||
{
|
{
|
||||||
struct NCR5380_hostdata *hostdata;
|
struct NCR5380_hostdata *hostdata;
|
||||||
Scsi_Cmnd *ptr;
|
struct scsi_cmnd *ptr;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
||||||
hostdata = (struct NCR5380_hostdata *)instance->hostdata;
|
hostdata = (struct NCR5380_hostdata *)instance->hostdata;
|
||||||
|
@ -734,13 +734,13 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
if (!hostdata->connected)
|
if (!hostdata->connected)
|
||||||
seq_printf(m, "scsi%d: no currently connected command\n", HOSTNO);
|
seq_printf(m, "scsi%d: no currently connected command\n", HOSTNO);
|
||||||
else
|
else
|
||||||
show_Scsi_Cmnd((Scsi_Cmnd *) hostdata->connected, m);
|
show_Scsi_Cmnd((struct scsi_cmnd *) hostdata->connected, m);
|
||||||
seq_printf(m, "scsi%d: issue_queue\n", HOSTNO);
|
seq_printf(m, "scsi%d: issue_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
for (ptr = (struct scsi_cmnd *)hostdata->issue_queue; ptr; ptr = NEXT(ptr))
|
||||||
show_Scsi_Cmnd(ptr, m);
|
show_Scsi_Cmnd(ptr, m);
|
||||||
|
|
||||||
seq_printf(m, "scsi%d: disconnected_queue\n", HOSTNO);
|
seq_printf(m, "scsi%d: disconnected_queue\n", HOSTNO);
|
||||||
for (ptr = (Scsi_Cmnd *) hostdata->disconnected_queue; ptr;
|
for (ptr = (struct scsi_cmnd *) hostdata->disconnected_queue; ptr;
|
||||||
ptr = NEXT(ptr))
|
ptr = NEXT(ptr))
|
||||||
show_Scsi_Cmnd(ptr, m);
|
show_Scsi_Cmnd(ptr, m);
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
/* dma on! */
|
/* dma on! */
|
||||||
#define REAL_DMA
|
#define REAL_DMA
|
||||||
|
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "sun3_scsi.h"
|
#include "sun3_scsi.h"
|
||||||
#include "NCR5380.h"
|
#include "NCR5380.h"
|
||||||
|
|
|
@ -77,7 +77,6 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#include "scsi.h"
|
|
||||||
#include <scsi/scsi_host.h>
|
#include <scsi/scsi_host.h>
|
||||||
#include "t128.h"
|
#include "t128.h"
|
||||||
#define AUTOPROBE_IRQ
|
#define AUTOPROBE_IRQ
|
||||||
|
|
Loading…
Reference in a new issue