Messages in this thread Patch in this message | | | Subject | PATCH: update fdomain scsi | Date | Tue, 8 Oct 2002 20:02:54 +0100 (BST) | From | Alan Cox <> |
| |
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/
| |