PATCH: update fdomain scsi

From: Alan Cox (alan@lxorguk.ukuu.org.uk)
Date: Tue Oct 08 2002 - 14:02:54 EST


diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.2.5.41/drivers/scsi/fdomain.c linux.2.5.41-ac1/drivers/scsi/fdomain.c
--- linux.2.5.41/drivers/scsi/fdomain.c 2002-10-02 21:33:41.000000000 +0100
+++ linux.2.5.41-ac1/drivers/scsi/fdomain.c 2002-10-07 15:43:18.000000000 +0100
@@ -418,7 +418,7 @@
 static int FIFO_Size = 0x2000; /* 8k FIFO for
                                                 pre-tmc18c30 chips */
 
-extern void do_fdomain_16x0_intr( int irq, void *dev_id,
+static void do_fdomain_16x0_intr( int irq, void *dev_id,
                                             struct pt_regs * regs );
 
 #ifdef MODULE
@@ -528,16 +528,16 @@
    if (!shpnt) return; /* This won't ever happen */
 
    if (bios_major < 0 && bios_minor < 0) {
- printk( "scsi%d: <fdomain> No BIOS; using scsi id %d\n",
- shpnt->host_no, shpnt->this_id );
+ printk(KERN_INFO "scsi%d: <fdomain> No BIOS; using scsi id %d\n",
+ shpnt->host_no, shpnt->this_id);
    } else {
- printk( "scsi%d: <fdomain> BIOS version ", shpnt->host_no );
+ printk(KERN_INFO "scsi%d: <fdomain> BIOS version ", shpnt->host_no);
 
- if (bios_major >= 0) printk( "%d.", bios_major );
- else printk( "?." );
+ if (bios_major >= 0) printk("%d.", bios_major);
+ else printk("?.");
 
- if (bios_minor >= 0) printk( "%d", bios_minor );
- else printk( "?." );
+ if (bios_minor >= 0) printk("%d", bios_minor);
+ else printk("?.");
    
       printk( " at 0x%lx using scsi id %d\n",
               bios_base, shpnt->this_id );
@@ -547,31 +547,28 @@
                                    boards, we will have to modify banner
                                    for additional PCI cards, but for now if
                                    it's PCI it's a TMC-3260 - JTM */
- printk( "scsi%d: <fdomain> %s chip at 0x%x irq ",
+ printk(KERN_INFO "scsi%d: <fdomain> %s chip at 0x%x irq ",
            shpnt->host_no,
- chip == tmc1800 ? "TMC-1800"
- : (chip == tmc18c50 ? "TMC-18C50"
- : (chip == tmc18c30 ?
- (PCI_bus ? "TMC-36C70 (PCI bus)" : "TMC-18C30")
- : "Unknown")),
- port_base );
+ chip == tmc1800 ? "TMC-1800" : (chip == tmc18c50 ? "TMC-18C50" : (chip == tmc18c30 ? (PCI_bus ? "TMC-36C70 (PCI bus)" : "TMC-18C30") : "Unknown")),
+ port_base);
 
- if (interrupt_level) printk( "%d", interrupt_level );
- else printk( "<none>" );
+ if (interrupt_level)
+ printk("%d", interrupt_level);
+ else
+ printk("<none>");
 
    printk( "\n" );
 }
 
-static int __init fdomain_setup( char *str )
+static int __init fdomain_setup(char *str)
 {
         int ints[4];
 
         (void)get_options(str, ARRAY_SIZE(ints), ints);
 
         if (setup_called++ || ints[0] < 2 || ints[0] > 3) {
- printk( "scsi: <fdomain>"
- " Usage: fdomain=<PORT_BASE>,<IRQ>[,<ADAPTER_ID>]\n" );
- printk( "scsi: <fdomain> Bad LILO/INSMOD parameters?\n" );
+ printk(KERN_INFO "scsi: <fdomain> Usage: fdomain=<PORT_BASE>,<IRQ>[,<ADAPTER_ID>]\n");
+ printk(KERN_ERR "scsi: <fdomain> Bad LILO/INSMOD parameters?\n");
                 return 0;
         }
 
@@ -587,9 +584,9 @@
 __setup("fdomain=", fdomain_setup);
 
 
-static void do_pause( unsigned amount ) /* Pause for amount*10 milliseconds */
+static void do_pause(unsigned amount) /* Pause for amount*10 milliseconds */
 {
- mdelay(10*amount);
+ mdelay(10*amount);
 }
 
 inline static void fdomain_make_bus_idle( void )
@@ -672,22 +669,20 @@
 
 static int fdomain_get_irq( int base )
 {
- int options = inb( base + Configuration1 );
+ int options = inb(base + Configuration1);
 
 #if DEBUG_DETECT
- printk( "scsi: <fdomain> Options = %x\n", options );
+ printk("scsi: <fdomain> Options = %x\n", options);
 #endif
-
- /* Check for board with lowest bios_base --
- this isn't valid for the 18c30 or for
- boards on the PCI bus, so just assume we
- have the right board. */
-
- if (chip != tmc18c30
- && !PCI_bus
- && addresses[ (options & 0xc0) >> 6 ] != bios_base) return 0;
+
+ /* Check for board with lowest bios_base --
+ this isn't valid for the 18c30 or for
+ boards on the PCI bus, so just assume we
+ have the right board. */
 
- return ints[ (options & 0x0e) >> 1 ];
+ if (chip != tmc18c30 && !PCI_bus && addresses[(options & 0xc0) >> 6 ] != bios_base)
+ return 0;
+ return ints[(options & 0x0e) >> 1];
 }
 
 static int fdomain_isa_detect( int *irq, int *iobase )
@@ -700,7 +695,6 @@
    printk( "scsi: <fdomain> fdomain_isa_detect:" );
 #endif
 
-
    for (i = 0; !bios_base && i < ADDRESS_COUNT; i++) {
 #if DEBUG_DETECT
       printk( " %lx(%lx),", addresses[i], bios_base );
@@ -811,8 +805,6 @@
    unsigned long pci_base; /* PCI I/O base address */
    struct pci_dev *pdev = NULL;
 
- if (!pci_present()) return 0;
-
 #if DEBUG_DETECT
    /* Tell how to print a list of the known PCI devices from bios32 and
       list vendor and device IDs being used if in debug mode. */
@@ -824,10 +816,8 @@
            PCI_DEVICE_ID_FD_36C70 );
 #endif
 
- if ((pdev = pci_find_device(PCI_VENDOR_ID_FD,
- PCI_DEVICE_ID_FD_36C70,
- pdev)) == NULL)
- return 0;
+ if ((pdev = pci_find_device(PCI_VENDOR_ID_FD, PCI_DEVICE_ID_FD_36C70, pdev)) == NULL)
+ return 0;
    if (pci_enable_device(pdev)) return 0;
        
 #if DEBUG_DETECT
@@ -857,8 +847,7 @@
 #endif
 
    if (!fdomain_is_valid_port( *iobase )) {
- printk( "scsi: <fdomain>"
- " PCI card detected, but driver not loaded (invalid port)\n" );
+ printk(KERN_ERR "scsi: <fdomain> PCI card detected, but driver not loaded (invalid port)\n" );
       return 0;
    }
 
@@ -872,7 +861,7 @@
 }
 #endif
 
-int fdomain_16x0_detect( Scsi_Host_Template *tpnt )
+static int fdomain_16x0_detect( Scsi_Host_Template *tpnt )
 {
    int retcode;
    struct Scsi_Host *shpnt;
@@ -939,13 +928,12 @@
    Write_FIFO_port = port_base + Write_FIFO;
    Write_SCSI_Data_port = port_base + Write_SCSI_Data;
 
- fdomain_16x0_reset( NULL, 0 );
+ fdomain_16x0_bus_reset( NULL);
 
    if (fdomain_test_loopback()) {
- printk( "scsi: <fdomain> Detection failed"
- " (loopback test failed at port base 0x%x)\n", port_base );
+ printk(KERN_ERR "scsi: <fdomain> Detection failed (loopback test failed at port base 0x%x)\n", port_base);
       if (setup_called) {
- printk( "scsi: <fdomain> Bad LILO/INSMOD parameters?\n" );
+ printk(KERN_ERR "scsi: <fdomain> Bad LILO/INSMOD parameters?\n");
       }
       return 0;
    }
@@ -963,8 +951,8 @@
       }
    }
 
- /* Print out a banner here in case we can't
- get resources. */
+/* Print out a banner here in case we can't
+ get resources. */
 
    shpnt = scsi_register( tpnt, 0 );
    if(shpnt == NULL)
@@ -975,10 +963,9 @@
    shpnt->n_io_port = 0x10;
    print_banner( shpnt );
 
- /* Log IRQ with kernel */
+ /* Log IRQ with kernel */
    if (!interrupt_level) {
- printk( "scsi: <fdomain>"
- " Card Detected, but driver not loaded (no IRQ)\n" );
+ printk(KERN_ERR "scsi: <fdomain> Card Detected, but driver not loaded (no IRQ)\n" );
       return 0;
    } else {
       /* Register the IRQ with the kernel */
@@ -988,25 +975,23 @@
 
       if (retcode < 0) {
          if (retcode == -EINVAL) {
- printk( "scsi: <fdomain> IRQ %d is bad!\n", interrupt_level );
- printk( " This shouldn't happen!\n" );
- printk( " Send mail to faith@acm.org\n" );
+ printk(KERN_ERR "scsi: <fdomain> IRQ %d is bad!\n", interrupt_level );
+ printk(KERN_ERR " This shouldn't happen!\n" );
+ printk(KERN_ERR " Send mail to faith@acm.org\n" );
          } else if (retcode == -EBUSY) {
- printk( "scsi: <fdomain> IRQ %d is already in use!\n",
- interrupt_level );
- printk( " Please use another IRQ!\n" );
+ printk(KERN_ERR "scsi: <fdomain> IRQ %d is already in use!\n", interrupt_level );
+ printk(KERN_ERR " Please use another IRQ!\n" );
          } else {
- printk( "scsi: <fdomain> Error getting IRQ %d\n",
- interrupt_level );
- printk( " This shouldn't happen!\n" );
- printk( " Send mail to faith@acm.org\n" );
+ printk(KERN_ERR "scsi: <fdomain> Error getting IRQ %d\n", interrupt_level );
+ printk(KERN_ERR " This shouldn't happen!\n" );
+ printk(KERN_ERR " Send mail to faith@acm.org\n" );
          }
- printk( "scsi: <fdomain> Detected, but driver not loaded (IRQ)\n" );
+ printk(KERN_ERR "scsi: <fdomain> Detected, but driver not loaded (IRQ)\n" );
          return 0;
       }
    }
 
- /* Log I/O ports with kernel */
+ /* Log I/O ports with kernel */
    request_region( port_base, 0x10, "fdomain" );
 
 #if DO_DETECT
@@ -1065,7 +1050,7 @@
    return 1; /* Maximum of one adapter will be detected. */
 }
 
-const char *fdomain_16x0_info( struct Scsi_Host *ignore )
+static const char *fdomain_16x0_info( struct Scsi_Host *ignore )
 {
    static char buffer[128];
    char *pt;
@@ -1097,7 +1082,7 @@
  * length: If inout==FALSE max number of bytes to be written into the buffer
  * else number of bytes in the buffer
  */
-int fdomain_16x0_proc_info( char *buffer, char **start, off_t offset,
+static int fdomain_16x0_proc_info( char *buffer, char **start, off_t offset,
                             int length, int hostno, int inout )
 {
    const char *info = fdomain_16x0_info( NULL );
@@ -1105,7 +1090,7 @@
    int pos;
    int begin;
 
- if (inout) return(-ENOSYS);
+ if (inout) return(-EINVAL);
     
    begin = 0;
    strcpy( buffer, info );
@@ -1200,7 +1185,7 @@
    return 1;
 }
 
-void my_done( int error )
+static void my_done(int error)
 {
    if (in_command) {
       in_command = 0;
@@ -1218,7 +1203,7 @@
 #endif
 }
 
-void do_fdomain_16x0_intr( int irq, void *dev_id, struct pt_regs * regs )
+static void do_fdomain_16x0_intr( int irq, void *dev_id, struct pt_regs * regs )
 {
    unsigned long flags;
    int status;
@@ -1376,167 +1361,18 @@
       }
    }
 
- if (chip == tmc1800
- && !current_SC->SCp.have_data_in
- && (current_SC->SCp.sent_command
- >= current_SC->cmd_len)) {
- /* We have to get the FIFO direction
- correct, so I've made a table based
- on the SCSI Standard of which commands
- appear to require a DATA OUT phase.
- */
- /*
- p. 94: Command for all device types
- CHANGE DEFINITION 40 DATA OUT
- COMPARE 39 DATA OUT
- COPY 18 DATA OUT
- COPY AND VERIFY 3a DATA OUT
- INQUIRY 12
- LOG SELECT 4c DATA OUT
- LOG SENSE 4d
- MODE SELECT (6) 15 DATA OUT
- MODE SELECT (10) 55 DATA OUT
- MODE SENSE (6) 1a
- MODE SENSE (10) 5a
- READ BUFFER 3c
- RECEIVE DIAGNOSTIC RESULTS 1c
- REQUEST SENSE 03
- SEND DIAGNOSTIC 1d DATA OUT
- TEST UNIT READY 00
- WRITE BUFFER 3b DATA OUT
-
- p.178: Commands for direct-access devices (not listed on p. 94)
- FORMAT UNIT 04 DATA OUT
- LOCK-UNLOCK CACHE 36
- PRE-FETCH 34
- PREVENT-ALLOW MEDIUM REMOVAL 1e
- READ (6)/RECEIVE 08
- READ (10) 3c
- READ CAPACITY 25
- READ DEFECT DATA (10) 37
- READ LONG 3e
- REASSIGN BLOCKS 07 DATA OUT
- RELEASE 17
- RESERVE 16 DATA OUT
- REZERO UNIT/REWIND 01
- SEARCH DATA EQUAL (10) 31 DATA OUT
- SEARCH DATA HIGH (10) 30 DATA OUT
- SEARCH DATA LOW (10) 32 DATA OUT
- SEEK (6) 0b
- SEEK (10) 2b
- SET LIMITS (10) 33
- START STOP UNIT 1b
- SYNCHRONIZE CACHE 35
- VERIFY (10) 2f
- WRITE (6)/PRINT/SEND 0a DATA OUT
- WRITE (10)/SEND 2a DATA OUT
- WRITE AND VERIFY (10) 2e DATA OUT
- WRITE LONG 3f DATA OUT
- WRITE SAME 41 DATA OUT ?
-
- p. 261: Commands for sequential-access devices (not previously listed)
- ERASE 19
- LOAD UNLOAD 1b
- LOCATE 2b
- READ BLOCK LIMITS 05
- READ POSITION 34
- READ REVERSE 0f
- RECOVER BUFFERED DATA 14
- SPACE 11
- WRITE FILEMARKS 10 ?
-
- p. 298: Commands for printer devices (not previously listed)
- ****** NOT SUPPORTED BY THIS DRIVER, since 0b is SEEK (6) *****
- SLEW AND PRINT 0b DATA OUT -- same as seek
- STOP PRINT 1b
- SYNCHRONIZE BUFFER 10
-
- p. 315: Commands for processor devices (not previously listed)
-
- p. 321: Commands for write-once devices (not previously listed)
- MEDIUM SCAN 38
- READ (12) a8
- SEARCH DATA EQUAL (12) b1 DATA OUT
- SEARCH DATA HIGH (12) b0 DATA OUT
- SEARCH DATA LOW (12) b2 DATA OUT
- SET LIMITS (12) b3
- VERIFY (12) af
- WRITE (12) aa DATA OUT
- WRITE AND VERIFY (12) ae DATA OUT
-
- p. 332: Commands for CD-ROM devices (not previously listed)
- PAUSE/RESUME 4b
- PLAY AUDIO (10) 45
- PLAY AUDIO (12) a5
- PLAY AUDIO MSF 47
- PLAY TRACK RELATIVE (10) 49
- PLAY TRACK RELATIVE (12) a9
- READ HEADER 44
- READ SUB-CHANNEL 42
- READ TOC 43
-
- p. 370: Commands for scanner devices (not previously listed)
- GET DATA BUFFER STATUS 34
- GET WINDOW 25
- OBJECT POSITION 31
- SCAN 1b
- SET WINDOW 24 DATA OUT
-
- p. 391: Commands for optical memory devices (not listed)
- ERASE (10) 2c
- ERASE (12) ac
- MEDIUM SCAN 38 DATA OUT
- READ DEFECT DATA (12) b7
- READ GENERATION 29
- READ UPDATED BLOCK 2d
- UPDATE BLOCK 3d DATA OUT
-
- p. 419: Commands for medium changer devices (not listed)
- EXCHANGE MEDIUM 46
- INITIALIZE ELEMENT STATUS 07
- MOVE MEDIUM a5
- POSITION TO ELEMENT 2b
- READ ELEMENT STATUS b8
- REQUEST VOL. ELEMENT ADDRESS b5
- SEND VOLUME TAG b6 DATA OUT
-
- p. 454: Commands for communications devices (not listed previously)
- GET MESSAGE (6) 08
- GET MESSAGE (10) 28
- GET MESSAGE (12) a8
- */
-
- switch (current_SC->cmnd[0]) {
- case CHANGE_DEFINITION: case COMPARE: case COPY:
- case COPY_VERIFY: case LOG_SELECT: case MODE_SELECT:
- case MODE_SELECT_10: case SEND_DIAGNOSTIC: case WRITE_BUFFER:
-
- case FORMAT_UNIT: case REASSIGN_BLOCKS: case RESERVE:
- case SEARCH_EQUAL: case SEARCH_HIGH: case SEARCH_LOW:
- case WRITE_6: case WRITE_10: case WRITE_VERIFY:
- case 0x3f: case 0x41:
-
- case 0xb1: case 0xb0: case 0xb2:
- case 0xaa: case 0xae:
-
- case 0x24:
-
- case 0x38: case 0x3d:
-
- case 0xb6:
-
- case 0xea: /* alternate number for WRITE LONG */
-
+ if (chip == tmc1800 && !current_SC->SCp.have_data_in
+ && (current_SC->SCp.sent_command >= current_SC->cmd_len)) {
+
+ if(scsi_to_pci_dma_dir(current_SC->sc_data_direction) == PCI_DMA_TODEVICE)
+ {
          current_SC->SCp.have_data_in = -1;
          outb( 0xd0 | PARITY_MASK, TMC_Cntl_port );
- break;
-
- case 0x00:
- default:
-
+ }
+ else
+ {
          current_SC->SCp.have_data_in = 1;
          outb( 0x90 | PARITY_MASK, TMC_Cntl_port );
- break;
       }
    }
 
@@ -1565,7 +1401,7 @@
             if (current_SC->SCp.buffers_residual) {
                --current_SC->SCp.buffers_residual;
                ++current_SC->SCp.buffer;
- current_SC->SCp.ptr = current_SC->SCp.buffer->address;
+ current_SC->SCp.ptr = page_address(current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset;
                current_SC->SCp.this_residual = current_SC->SCp.buffer->length;
             } else
                   break;
@@ -1598,7 +1434,7 @@
              && current_SC->SCp.buffers_residual) {
             --current_SC->SCp.buffers_residual;
             ++current_SC->SCp.buffer;
- current_SC->SCp.ptr = current_SC->SCp.buffer->address;
+ current_SC->SCp.ptr = page_address(current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset;
             current_SC->SCp.this_residual = current_SC->SCp.buffer->length;
          }
       }
@@ -1661,7 +1497,7 @@
    return;
 }
 
-int fdomain_16x0_queue( Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
+static int fdomain_16x0_queue( Scsi_Cmnd * SCpnt, void (*done)(Scsi_Cmnd *))
 {
    if (in_command) {
       panic( "scsi: <fdomain> fdomain_16x0_queue() NOT REENTRANT!\n" );
@@ -1684,7 +1520,7 @@
    if (current_SC->use_sg) {
       current_SC->SCp.buffer =
             (struct scatterlist *)current_SC->request_buffer;
- current_SC->SCp.ptr = current_SC->SCp.buffer->address;
+ current_SC->SCp.ptr = page_address(current_SC->SCp.buffer->page) + current_SC->SCp.buffer->offset;
       current_SC->SCp.this_residual = current_SC->SCp.buffer->length;
       current_SC->SCp.buffers_residual = current_SC->use_sg - 1;
    } else {
@@ -1719,45 +1555,45 @@
 static volatile int internal_done_flag = 0;
 static volatile int internal_done_errcode = 0;
 
-static void internal_done( Scsi_Cmnd *SCpnt )
+static void internal_done(Scsi_Cmnd *SCpnt)
 {
     internal_done_errcode = SCpnt->result;
     ++internal_done_flag;
 }
 
-int fdomain_16x0_command( Scsi_Cmnd *SCpnt )
+static int fdomain_16x0_command(Scsi_Cmnd *SCpnt)
 {
- fdomain_16x0_queue( SCpnt, internal_done );
+ fdomain_16x0_queue(SCpnt, internal_done);
 
     while (!internal_done_flag)
- ;
+ cpu_relax();
     internal_done_flag = 0;
     return internal_done_errcode;
 }
 
 /* End of code derived from Tommy Thorn's work. */
 
-void print_info( Scsi_Cmnd *SCpnt )
+static void print_info(Scsi_Cmnd *SCpnt)
 {
    unsigned int imr;
    unsigned int irr;
    unsigned int isr;
 
    if (!SCpnt || !SCpnt->host) {
- printk( "scsi: <fdomain> Cannot provide detailed information\n" );
+ printk(KERN_WARNING "scsi: <fdomain> Cannot provide detailed information\n");
       return;
    }
    
- printk( "%s\n", fdomain_16x0_info( SCpnt->host ) );
- print_banner( SCpnt->host );
+ printk(KERN_INFO "%s\n", fdomain_16x0_info( SCpnt->host ) );
+ print_banner(SCpnt->host);
    switch (SCpnt->SCp.phase) {
- case in_arbitration: printk( "arbitration " ); break;
- case in_selection: printk( "selection " ); break;
- case in_other: printk( "other " ); break;
- default: printk( "unknown " ); break;
+ case in_arbitration: printk("arbitration"); break;
+ case in_selection: printk("selection"); break;
+ case in_other: printk("other"); break;
+ default: printk("unknown"); break;
    }
 
- printk( "(%d), target = %d cmnd = 0x%02x pieces = %d size = %u\n",
+ printk( " (%d), target = %d cmnd = 0x%02x pieces = %d size = %u\n",
            SCpnt->SCp.phase,
            SCpnt->target,
            *(unsigned char *)SCpnt->cmnd,
@@ -1807,21 +1643,17 @@
                  inb( port_base + Configuration2 ) );
 }
 
-int fdomain_16x0_abort( Scsi_Cmnd *SCpnt)
+static int fdomain_16x0_abort( Scsi_Cmnd *SCpnt)
 {
- unsigned long flags;
 #if EVERY_ACCESS || ERRORS_ONLY || DEBUG_ABORT
    printk( "scsi: <fdomain> abort " );
 #endif
 
- save_flags( flags );
- cli();
    if (!in_command) {
 #if EVERY_ACCESS || ERRORS_ONLY
       printk( " (not in command)\n" );
 #endif
- restore_flags( flags );
- return SCSI_ABORT_NOT_RUNNING;
+ return FAILED;
    } else printk( "\n" );
 
 #if DEBUG_ABORT
@@ -1829,52 +1661,39 @@
 #endif
 
    fdomain_make_bus_idle();
-
    current_SC->SCp.phase |= aborted;
-
    current_SC->result = DID_ABORT << 16;
-
- restore_flags( flags );
    
    /* Aborts are not done well. . . */
- my_done( DID_ABORT << 16 );
-
- return SCSI_ABORT_SUCCESS;
+ my_done(DID_ABORT << 16);
+ return SUCCESS;
 }
 
-int fdomain_16x0_reset( Scsi_Cmnd *SCpnt, unsigned int ignored )
+static int fdomain_16x0_bus_reset(Scsi_Cmnd *SCpnt)
 {
-#if DEBUG_RESET
- static int called_once = 0;
-#endif
-
-#if ERRORS_ONLY
- if (SCpnt) printk( "scsi: <fdomain> SCSI Bus Reset\n" );
-#endif
-
-#if DEBUG_RESET
- if (called_once) print_info( current_SC );
- called_once = 1;
-#endif
-
    outb( 1, SCSI_Cntl_port );
    do_pause( 2 );
    outb( 0, SCSI_Cntl_port );
    do_pause( 115 );
    outb( 0, SCSI_Mode_Cntl_port );
    outb( PARITY_MASK, TMC_Cntl_port );
+ return SUCCESS;
+}
 
- /* Unless this is the very first call (i.e., SCPnt == NULL), everything
- is probably hosed at this point. We will, however, try to keep
- things going by informing the high-level code that we need help. */
+static int fdomain_16x0_host_reset(Scsi_Cmnd *SCpnt)
+{
+ return FAILED;
+}
 
- return SCSI_RESET_WAKEUP;
+static int fdomain_16x0_device_reset(Scsi_Cmnd *SCpnt)
+{
+ return FAILED;
 }
 
 #include "sd.h"
 #include <scsi/scsi_ioctl.h>
 
-int fdomain_16x0_biosparam( Scsi_Disk *disk, struct block_device *bdev, int *info_array )
+static int fdomain_16x0_biosparam(Scsi_Disk *disk, struct block_device *bdev, int *info_array)
 {
    int drive;
    unsigned char buf[512 + sizeof (Scsi_Ioctl_Command)];
@@ -2036,7 +1855,7 @@
    return 0;
 }
 
-int fdomain_16x0_release(struct Scsi_Host *shpnt)
+static int fdomain_16x0_release(struct Scsi_Host *shpnt)
 {
         if (shpnt->irq)
                 free_irq(shpnt->irq, shpnt);
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.2.5.41/drivers/scsi/fdomain.h linux.2.5.41-ac1/drivers/scsi/fdomain.h
--- linux.2.5.41/drivers/scsi/fdomain.h 2002-10-02 21:32:55.000000000 +0100
+++ linux.2.5.41-ac1/drivers/scsi/fdomain.h 2002-10-07 15:38:33.000000000 +0100
@@ -25,29 +25,34 @@
 #ifndef _FDOMAIN_H
 #define _FDOMAIN_H
 
-int fdomain_16x0_detect( Scsi_Host_Template * );
-int fdomain_16x0_command( Scsi_Cmnd * );
-int fdomain_16x0_abort( Scsi_Cmnd * );
-const char *fdomain_16x0_info( struct Scsi_Host * );
-int fdomain_16x0_reset( Scsi_Cmnd *, unsigned int );
-int fdomain_16x0_queue( Scsi_Cmnd *, void (*done)(Scsi_Cmnd *) );
-int fdomain_16x0_biosparam( Disk *, struct block_device *, int * );
-int fdomain_16x0_proc_info( char *buffer, char **start, off_t offset,
+static int fdomain_16x0_detect( Scsi_Host_Template *);
+static int fdomain_16x0_command( Scsi_Cmnd *);
+static int fdomain_16x0_abort(Scsi_Cmnd *);
+static const char *fdomain_16x0_info(struct Scsi_Host *);
+static int fdomain_16x0_bus_reset(Scsi_Cmnd *);
+static int fdomain_16x0_host_reset(Scsi_Cmnd *);
+static int fdomain_16x0_device_reset(Scsi_Cmnd *);
+static int fdomain_16x0_queue(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
+static int fdomain_16x0_biosparam(Disk *, struct block_device *, int * );
+static int fdomain_16x0_proc_info(char *buffer, char **start, off_t offset,
                                    int length, int hostno, int inout );
-int fdomain_16x0_release( struct Scsi_Host *shpnt );
+static int fdomain_16x0_release(struct Scsi_Host *shpnt);
 
-#define FDOMAIN_16X0 { proc_info: fdomain_16x0_proc_info, \
- detect: fdomain_16x0_detect, \
- info: fdomain_16x0_info, \
- command: fdomain_16x0_command, \
- queuecommand: fdomain_16x0_queue, \
- abort: fdomain_16x0_abort, \
- reset: fdomain_16x0_reset, \
- bios_param: fdomain_16x0_biosparam, \
- release: fdomain_16x0_release, \
- can_queue: 1, \
- this_id: 6, \
- sg_tablesize: 64, \
- cmd_per_lun: 1, \
- use_clustering: DISABLE_CLUSTERING }
+#define FDOMAIN_16X0 { proc_info: fdomain_16x0_proc_info, \
+ detect: fdomain_16x0_detect, \
+ info: fdomain_16x0_info, \
+ command: fdomain_16x0_command, \
+ queuecommand: fdomain_16x0_queue, \
+ eh_abort_handler: fdomain_16x0_abort, \
+ eh_bus_reset_handler: fdomain_16x0_bus_reset, \
+ eh_device_reset_handler: fdomain_16x0_device_reset, \
+ eh_host_reset_handler: fdomain_16x0_host_reset, \
+ bios_param: fdomain_16x0_biosparam, \
+ release: fdomain_16x0_release, \
+ can_queue: 1, \
+ this_id: 6, \
+ sg_tablesize: 64, \
+ cmd_per_lun: 1, \
+ use_clustering: DISABLE_CLUSTERING \
+}
 #endif
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:26 EST