git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
drivers
/
scsi
/
arm
/
fas216.c
diff --git
a/drivers/scsi/arm/fas216.c
b/drivers/scsi/arm/fas216.c
index
bd60745
..
3e1053f
100644
(file)
--- a/
drivers/scsi/arm/fas216.c
+++ b/
drivers/scsi/arm/fas216.c
@@
-52,6
+52,7
@@
#include <asm/ecard.h>
#include "../scsi.h"
#include <asm/ecard.h>
#include "../scsi.h"
+#include <scsi/scsi_dbg.h>
#include <scsi/scsi_host.h>
#include "fas216.h"
#include "scsi.h"
#include <scsi/scsi_host.h>
#include "fas216.h"
#include "scsi.h"
@@
-96,7
+97,7
@@
static int level_mask = LOG_ERROR;
static int level_mask = LOG_ERROR;
-
MODULE_PARM(level_mask, "i"
);
+
module_param(level_mask, int, 0644
);
static int __init fas216_log_setup(char *str)
{
static int __init fas216_log_setup(char *str)
{
@@
-142,19
+143,13
@@
__setup("fas216_logging=", fas216_log_setup);
static inline unsigned char fas216_readb(FAS216_Info *info, unsigned int reg)
{
unsigned int off = reg << info->scsi.io_shift;
static inline unsigned char fas216_readb(FAS216_Info *info, unsigned int reg)
{
unsigned int off = reg << info->scsi.io_shift;
- if (info->scsi.io_base)
- return readb(info->scsi.io_base + off);
- else
- return inb(info->scsi.io_port + off);
+ return readb(info->scsi.io_base + off);
}
static inline void fas216_writeb(FAS216_Info *info, unsigned int reg, unsigned int val)
{
unsigned int off = reg << info->scsi.io_shift;
}
static inline void fas216_writeb(FAS216_Info *info, unsigned int reg, unsigned int val)
{
unsigned int off = reg << info->scsi.io_shift;
- if (info->scsi.io_base)
- writeb(val, info->scsi.io_base + off);
- else
- outb(val, info->scsi.io_port + off);
+ writeb(val, info->scsi.io_base + off);
}
static void fas216_dumpstate(FAS216_Info *info)
}
static void fas216_dumpstate(FAS216_Info *info)
@@
-178,7
+173,7
@@
static void fas216_dumpstate(FAS216_Info *info)
fas216_readb(info, REG_CTCH));
}
fas216_readb(info, REG_CTCH));
}
-static void print_SCp(
Scsi_P
ointer *SCp, const char *prefix, const char *suffix)
+static void print_SCp(
struct scsi_p
ointer *SCp, const char *prefix, const char *suffix)
{
printk("%sptr %p this_residual 0x%x buffer %p buffers_residual 0x%x%s",
prefix, SCp->ptr, SCp->this_residual, SCp->buffer,
{
printk("%sptr %p this_residual 0x%x buffer %p buffers_residual 0x%x%s",
prefix, SCp->ptr, SCp->this_residual, SCp->buffer,
@@
-197,8
+192,8
@@
static void fas216_dumpinfo(FAS216_Info *info)
printk(" { magic_start=%lX host=%p SCpnt=%p origSCpnt=%p\n",
info->magic_start, info->host, info->SCpnt,
info->origSCpnt);
printk(" { magic_start=%lX host=%p SCpnt=%p origSCpnt=%p\n",
info->magic_start, info->host, info->SCpnt,
info->origSCpnt);
- printk(" scsi={ io_
port=%X io_
shift=%X irq=%X cfg={ %X %X %X %X }\n",
- info->scsi.io_
port, info->scsi.io_
shift, info->scsi.irq,
+ printk(" scsi={ io_shift=%X irq=%X cfg={ %X %X %X %X }\n",
+ info->scsi.io_shift, info->scsi.irq,
info->scsi.cfg[0], info->scsi.cfg[1], info->scsi.cfg[2],
info->scsi.cfg[3]);
printk(" type=%p phase=%X\n",
info->scsi.cfg[0], info->scsi.cfg[1], info->scsi.cfg[2],
info->scsi.cfg[3]);
printk(" type=%p phase=%X\n",
@@
-315,7
+310,7
@@
fas216_log_command(FAS216_Info *info, int level, Scsi_Cmnd *SCpnt, char *fmt, ..
va_end(args);
printk(" CDB: ");
va_end(args);
printk(" CDB: ");
- print_command(SCpnt->cmnd);
+
__scsi_
print_command(SCpnt->cmnd);
}
static void
}
static void
@@
-633,7
+628,7
@@
static void fas216_handlesync(FAS216_Info *info, char *msg)
*/
static void fas216_updateptrs(FAS216_Info *info, int bytes_transferred)
{
*/
static void fas216_updateptrs(FAS216_Info *info, int bytes_transferred)
{
-
Scsi_P
ointer *SCp = &info->scsi.SCp;
+
struct scsi_p
ointer *SCp = &info->scsi.SCp;
fas216_checkmagic(info);
fas216_checkmagic(info);
@@
-673,7
+668,7
@@
static void fas216_updateptrs(FAS216_Info *info, int bytes_transferred)
*/
static void fas216_pio(FAS216_Info *info, fasdmadir_t direction)
{
*/
static void fas216_pio(FAS216_Info *info, fasdmadir_t direction)
{
-
Scsi_P
ointer *SCp = &info->scsi.SCp;
+
struct scsi_p
ointer *SCp = &info->scsi.SCp;
fas216_checkmagic(info);
fas216_checkmagic(info);
@@
-2087,7
+2082,7
@@
fas216_std_done(FAS216_Info *info, Scsi_Cmnd *SCpnt, unsigned int result)
info->host->host_no, '0' + SCpnt->device->id,
SCpnt->result, info->scsi.SCp.ptr,
info->scsi.SCp.this_residual);
info->host->host_no, '0' + SCpnt->device->id,
SCpnt->result, info->scsi.SCp.ptr,
info->scsi.SCp.this_residual);
- print_command(SCpnt->cmnd);
+
__scsi_
print_command(SCpnt->cmnd);
SCpnt->result &= ~(255 << 16);
SCpnt->result |= DID_BAD_TARGET << 16;
goto request_sense;
SCpnt->result &= ~(255 << 16);
SCpnt->result |= DID_BAD_TARGET << 16;
goto request_sense;
@@
-2122,7
+2117,7
@@
request_sense:
SCpnt->SCp.Message = 0;
SCpnt->SCp.Status = 0;
SCpnt->request_bufflen = sizeof(SCpnt->sense_buffer);
SCpnt->SCp.Message = 0;
SCpnt->SCp.Status = 0;
SCpnt->request_bufflen = sizeof(SCpnt->sense_buffer);
- SCpnt->sc_data_direction =
SCSI_DATA_READ
;
+ SCpnt->sc_data_direction =
DMA_FROM_DEVICE
;
SCpnt->use_sg = 0;
SCpnt->tag = 0;
SCpnt->host_scribble = (void *)fas216_rq_sns_done;
SCpnt->use_sg = 0;
SCpnt->tag = 0;
SCpnt->host_scribble = (void *)fas216_rq_sns_done;
@@
-2176,7
+2171,7
@@
static void fas216_done(FAS216_Info *info, unsigned int result)
info->host->host_no, '0' + SCpnt->device->id,
info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
info->scsi.SCp.ptr = NULL;
info->host->host_no, '0' + SCpnt->device->id,
info->scsi.SCp.ptr, info->scsi.SCp.this_residual);
info->scsi.SCp.ptr = NULL;
- print_command(SCpnt->cmnd);
+
__scsi_
print_command(SCpnt->cmnd);
}
/*
}
/*
@@
-2432,7
+2427,7
@@
int fas216_eh_abort(Scsi_Cmnd *SCpnt)
info->stats.aborts += 1;
printk(KERN_WARNING "scsi%d: abort command ", info->host->host_no);
info->stats.aborts += 1;
printk(KERN_WARNING "scsi%d: abort command ", info->host->host_no);
- print_command(SCpnt->data_cmnd);
+
__scsi_
print_command(SCpnt->data_cmnd);
print_debug_list();
fas216_dumpstate(info);
print_debug_list();
fas216_dumpstate(info);
@@
-2564,7
+2559,7
@@
int fas216_eh_bus_reset(Scsi_Cmnd *SCpnt)
{
FAS216_Info *info = (FAS216_Info *)SCpnt->device->host->hostdata;
unsigned long flags;
{
FAS216_Info *info = (FAS216_Info *)SCpnt->device->host->hostdata;
unsigned long flags;
-
Scsi_D
evice *SDpnt;
+
struct scsi_d
evice *SDpnt;
fas216_checkmagic(info);
fas216_log(info, LOG_ERROR, "resetting bus");
fas216_checkmagic(info);
fas216_log(info, LOG_ERROR, "resetting bus");
@@
-2664,6
+2659,8
@@
int fas216_eh_host_reset(Scsi_Cmnd *SCpnt)
{
FAS216_Info *info = (FAS216_Info *)SCpnt->device->host->hostdata;
{
FAS216_Info *info = (FAS216_Info *)SCpnt->device->host->hostdata;
+ spin_lock_irq(info->host->host_lock);
+
fas216_checkmagic(info);
printk("scsi%d.%c: %s: resetting host\n",
fas216_checkmagic(info);
printk("scsi%d.%c: %s: resetting host\n",
@@
-2691,6
+2688,7
@@
int fas216_eh_host_reset(Scsi_Cmnd *SCpnt)
fas216_init_chip(info);
fas216_init_chip(info);
+ spin_unlock_irq(info->host->host_lock);
return SUCCESS;
}
return SUCCESS;
}
@@
-2967,11
+2965,11
@@
int fas216_print_host(FAS216_Info *info, char *buffer)
return sprintf(buffer,
"\n"
"Chip : %s\n"
return sprintf(buffer,
"\n"
"Chip : %s\n"
- " Address: 0x%
08lx
\n"
+ " Address: 0x%
p
\n"
" IRQ : %d\n"
" DMA : %d\n",
" IRQ : %d\n"
" DMA : %d\n",
- info->scsi.type, info->
host->io_port
,
- info->
host->irq, info->host->dma_channel
);
+ info->scsi.type, info->
scsi.io_base
,
+ info->
scsi.irq, info->scsi.dma
);
}
int fas216_print_stats(FAS216_Info *info, char *buffer)
}
int fas216_print_stats(FAS216_Info *info, char *buffer)
@@
-3002,7
+3000,7
@@
int fas216_print_stats(FAS216_Info *info, char *buffer)
int fas216_print_devices(FAS216_Info *info, char *buffer)
{
struct fas216_device *dev;
int fas216_print_devices(FAS216_Info *info, char *buffer)
{
struct fas216_device *dev;
-
Scsi_D
evice *scd;
+
struct scsi_d
evice *scd;
char *p = buffer;
p += sprintf(p, "Device/Lun TaggedQ Parity Sync\n");
char *p = buffer;
p += sprintf(p, "Device/Lun TaggedQ Parity Sync\n");