#include <asm/ecard.h>
#include "../scsi.h"
-#include "../hosts.h"
+#include <scsi/scsi_dbg.h>
+#include <scsi/scsi_host.h>
#include "fas216.h"
#include "scsi.h"
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 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;
- 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)
fas216_readb(info, REG_CTCH));
}
-static void print_SCp(Scsi_Pointer *SCp, const char *prefix, const char *suffix)
+static void print_SCp(struct scsi_pointer *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(" { 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",
va_end(args);
printk(" CDB: ");
- print_command(SCpnt->cmnd);
+ __scsi_print_command(SCpnt->cmnd);
}
static void
*/
static void fas216_updateptrs(FAS216_Info *info, int bytes_transferred)
{
- Scsi_Pointer *SCp = &info->scsi.SCp;
+ struct scsi_pointer *SCp = &info->scsi.SCp;
fas216_checkmagic(info);
*/
static void fas216_pio(FAS216_Info *info, fasdmadir_t direction)
{
- Scsi_Pointer *SCp = &info->scsi.SCp;
+ struct scsi_pointer *SCp = &info->scsi.SCp;
fas216_checkmagic(info);
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->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;
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);
}
/*
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);
{
FAS216_Info *info = (FAS216_Info *)SCpnt->device->host->hostdata;
unsigned long flags;
- Scsi_Device *SDpnt;
+ struct scsi_device *SDpnt;
fas216_checkmagic(info);
fas216_log(info, LOG_ERROR, "resetting bus");
{
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",
* IRQs after the sleep.
*/
spin_unlock_irq(info->host->host_lock);
- scsi_sleep(50 * HZ/100);
+ msleep(50 * 1000/100);
spin_lock_irq(info->host->host_lock);
/*
fas216_init_chip(info);
+ spin_unlock_irq(info->host->host_lock);
return SUCCESS;
}
* scsi standard says wait 250ms
*/
spin_unlock_irq(info->host->host_lock);
- scsi_sleep(100*HZ/100);
+ msleep(100*1000/100);
spin_lock_irq(info->host->host_lock);
fas216_writeb(info, REG_CNTL1, info->scsi.cfg[0]);
return sprintf(buffer,
"\n"
"Chip : %s\n"
- " Address: 0x%08lx\n"
+ " Address: 0x%p\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_devices(FAS216_Info *info, char *buffer)
{
struct fas216_device *dev;
- Scsi_Device *scd;
+ struct scsi_device *scd;
char *p = buffer;
p += sprintf(p, "Device/Lun TaggedQ Parity Sync\n");