Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
aic7xxx_old.c File Reference
#include <linux/module.h>
#include <stdarg.h>
#include <asm/io.h>
#include <asm/irq.h>
#include <asm/byteorder.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/kernel.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/pci.h>
#include <linux/proc_fs.h>
#include <linux/blkdev.h>
#include <linux/init.h>
#include <linux/spinlock.h>
#include <linux/smp.h>
#include <linux/interrupt.h>
#include "scsi.h"
#include <scsi/scsi_host.h>
#include "aic7xxx_old/aic7xxx.h"
#include "aic7xxx_old/sequencer.h"
#include "aic7xxx_old/scsi_message.h"
#include "aic7xxx_old/aic7xxx_reg.h"
#include <scsi/scsicam.h>
#include <linux/stat.h>
#include <linux/slab.h>
#include "aic7xxx_old/aic7xxx_seq.c"
#include "aic7xxx_old/aic7xxx_proc.c"
#include "scsi_module.c"

Go to the source code of this file.

Data Structures

struct  adapter_tag_info_t
 
struct  seeprom_config
 
struct  hw_scatterlist
 
struct  aic7xxx_hwscb
 
struct  aic7xxx_scb_dma
 
struct  aic7xxx_scb
 
struct  scb_queue_type
 
struct  scb_data_type
 
struct  target_cmd
 
struct  transinfo_type
 
struct  aic_dev_data
 
struct  aic7xxx_host
 
struct  aic7xxx_host::aic7xxx_cmd_queue
 
struct  aic7xxx_syncrate
 

Macros

#define AIC7XXX_STRICT_PCI_SETUP
 
#define AIC7XXX_C_VERSION   "5.2.6"
 
#define ALL_TARGETS   -1
 
#define ALL_CHANNELS   -1
 
#define ALL_LUNS   -1
 
#define MAX_TARGETS   16
 
#define MAX_LUNS   8
 
#define AIC7XXX_CMDS_PER_DEVICE   32
 
#define DEFAULT_TAG_COMMANDS
 
#define DID_UNDERFLOW   DID_ERROR
 
#define DID_RETRY_COMMAND   DID_ERROR
 
#define HSCSIID   0x07
 
#define SCSI_RESET   0x040
 
#define MINSLOT   1
 
#define MAXSLOT   15
 
#define SLOTBASE(x)   ((x) << 12)
 
#define BASE_TO_SLOT(x)   ((x) >> 12)
 
#define AHC_HID0   0x80 /* 0,1: msb of ID2, 2-7: ID1 */
 
#define AHC_HID1   0x81 /* 0-4: ID3, 5-7: LSB ID2 */
 
#define AHC_HID2   0x82 /* product */
 
#define AHC_HID3   0x83 /* firmware revision */
 
#define MINREG   0xC00
 
#define MAXREG   0xCFF
 
#define INTDEF   0x5C /* Interrupt Definition Register */
 
#define CLASS_PROGIF_REVID   0x08
 
#define DEVREVID   0x000000FFul
 
#define PROGINFC   0x0000FF00ul
 
#define SUBCLASS   0x00FF0000ul
 
#define BASECLASS   0xFF000000ul
 
#define CSIZE_LATTIME   0x0C
 
#define CACHESIZE   0x0000003Ful /* only 5 bits */
 
#define LATTIME   0x0000FF00ul
 
#define DEVCONFIG   0x40
 
#define SCBSIZE32   0x00010000ul /* aic789X only */
 
#define MPORTMODE   0x00000400ul /* aic7870 only */
 
#define RAMPSM   0x00000200ul /* aic7870 only */
 
#define RAMPSM_ULTRA2   0x00000004
 
#define VOLSENSE   0x00000100ul
 
#define SCBRAMSEL   0x00000080ul
 
#define SCBRAMSEL_ULTRA2   0x00000008
 
#define MRDCEN   0x00000040ul
 
#define EXTSCBTIME   0x00000020ul /* aic7870 only */
 
#define EXTSCBPEN   0x00000010ul /* aic7870 only */
 
#define BERREN   0x00000008ul
 
#define DACEN   0x00000004ul
 
#define STPWLEVEL   0x00000002ul
 
#define DIFACTNEGEN   0x00000001ul /* aic7870 only */
 
#define SCAMCTL   0x1a /* Ultra2 only */
 
#define CCSCBBADDR   0xf0 /* aic7895/6/7 */
 
#define CFXFER   0x0007 /* synchronous transfer rate */
 
#define CFSYNCH   0x0008 /* enable synchronous transfer */
 
#define CFDISC   0x0010 /* enable disconnection */
 
#define CFWIDEB   0x0020 /* wide bus device (wide card) */
 
#define CFSYNCHISULTRA   0x0040 /* CFSYNC is an ultra offset */
 
#define CFNEWULTRAFORMAT   0x0080 /* Use the Ultra2 SEEPROM format */
 
#define CFSTART   0x0100 /* send start unit SCSI command */
 
#define CFINCBIOS   0x0200 /* include in BIOS scan */
 
#define CFRNFOUND   0x0400 /* report even if not found */
 
#define CFMULTILUN   0x0800 /* probe mult luns in BIOS scan */
 
#define CFWBCACHEYES   0x4000 /* Enable W-Behind Cache on drive */
 
#define CFWBCACHENC   0xc000 /* Don't change W-Behind Cache */
 
#define CFSUPREM   0x0001 /* support all removable drives */
 
#define CFSUPREMB   0x0002 /* support removable drives for boot only */
 
#define CFBIOSEN   0x0004 /* BIOS enabled */
 
#define CFSM2DRV   0x0010 /* support more than two drives */
 
#define CF284XEXTEND   0x0020 /* extended translation (284x cards) */
 
#define CFEXTEND   0x0080 /* extended translation enabled */
 
#define CFAUTOTERM   0x0001 /* Perform Auto termination */
 
#define CFULTRAEN   0x0002 /* Ultra SCSI speed enable (Ultra cards) */
 
#define CF284XSELTO   0x0003 /* Selection timeout (284x cards) */
 
#define CF284XFIFO   0x000C /* FIFO Threshold (284x cards) */
 
#define CFSTERM   0x0004 /* SCSI low byte termination */
 
#define CFWSTERM   0x0008 /* SCSI high byte termination (wide card) */
 
#define CFSPARITY   0x0010 /* SCSI parity */
 
#define CF284XSTERM   0x0020 /* SCSI low byte termination (284x cards) */
 
#define CFRESETB   0x0040 /* reset SCSI bus at boot */
 
#define CFBPRIMARY   0x0100 /* Channel B primary on 7895 chipsets */
 
#define CFSEAUTOTERM   0x0400 /* aic7890 Perform SE Auto Term */
 
#define CFLVDSTERM   0x0800 /* aic7890 LVD Termination */
 
#define CFSCSIID   0x000F /* host adapter SCSI ID */
 
#define CFBRTIME   0xFF00 /* bus release time */
 
#define CFMAXTARG   0x00FF /* maximum targets */
 
#define SELBUS_MASK   0x0a
 
#define SELNARROW   0x00
 
#define SELBUSB   0x08
 
#define SINGLE_BUS   0x00
 
#define SCB_TARGET(scb)   (((scb)->hscb->target_channel_lun & TID) >> 4)
 
#define SCB_LUN(scb)   ((scb)->hscb->target_channel_lun & LID)
 
#define SCB_IS_SCSIBUS_B(scb)   (((scb)->hscb->target_channel_lun & SELBUSB) != 0)
 
#define aic7xxx_error(cmd)   ((cmd)->SCp.Status)
 
#define aic7xxx_status(cmd)   ((cmd)->SCp.sent_command)
 
#define aic7xxx_position(cmd)   ((cmd)->SCp.have_data_in)
 
#define aic7xxx_mapping(cmd)   ((cmd)->SCp.phase)
 
#define AIC_DEV(cmd)   ((struct aic_dev_data *)(cmd)->device->hostdata)
 
#define AIC7XXX_MAX_SG   128
 
#define AIC7XXX_MAXSCB   255
 
#define SCB_PIO_TRANSFER_SIZE
 
#define AHC_IN_ISR_BIT   28
 
#define SCB_DMA_ADDR(scb, addr)   ((unsigned long)(addr) + (scb)->scb_dma->dma_offset)
 
#define AHC_TRANS_CUR   0x0001
 
#define AHC_TRANS_ACTIVE   0x0002
 
#define AHC_TRANS_GOAL   0x0004
 
#define AHC_TRANS_USER   0x0008
 
#define AHC_TRANS_QUITE   0x0010
 
#define BUS_DEVICE_RESET_PENDING   0x01
 
#define DEVICE_RESET_DELAY   0x02
 
#define DEVICE_PRINT_DTR   0x04
 
#define DEVICE_WAS_BUSY   0x08
 
#define DEVICE_DTR_SCANNED   0x10
 
#define DEVICE_SCSI_3   0x20
 
#define MSG_TYPE_NONE   0x00
 
#define MSG_TYPE_INITIATOR_MSGOUT   0x01
 
#define MSG_TYPE_INITIATOR_MSGIN   0x02
 
#define AHC_SYNCRATE_ULTRA3   0
 
#define AHC_SYNCRATE_ULTRA2   1
 
#define AHC_SYNCRATE_ULTRA   3
 
#define AHC_SYNCRATE_FAST   6
 
#define AHC_SYNCRATE_CRC   0x40
 
#define AHC_SYNCRATE_SE   0x10
 
#define ULTRA_SXFR   0x100
 
#define CTL_OF_SCB(scb)
 
#define CTL_OF_CMD(cmd)
 
#define TARGET_INDEX(cmd)   ((cmd)->device->id | ((cmd)->device->channel << 3))
 
#define WARN_LEAD   KERN_WARNING "(scsi%d:%d:%d:%d) "
 
#define INFO_LEAD   KERN_INFO "(scsi%d:%d:%d:%d) "
 
#define VERBOSE_NORMAL   0x0000
 
#define VERBOSE_NEGOTIATION   0x0001
 
#define VERBOSE_SEQINT   0x0002
 
#define VERBOSE_SCSIINT   0x0004
 
#define VERBOSE_PROBE   0x0008
 
#define VERBOSE_PROBE2   0x0010
 
#define VERBOSE_NEGOTIATION2   0x0020
 
#define VERBOSE_MINOR_ERROR   0x0040
 
#define VERBOSE_TRACING   0x0080
 
#define VERBOSE_ABORT   0x0f00
 
#define VERBOSE_ABORT_MID   0x0100
 
#define VERBOSE_ABORT_FIND   0x0200
 
#define VERBOSE_ABORT_PROCESS   0x0400
 
#define VERBOSE_ABORT_RETURN   0x0800
 
#define VERBOSE_RESET   0xf000
 
#define VERBOSE_RESET_MID   0x1000
 
#define VERBOSE_RESET_FIND   0x2000
 
#define VERBOSE_RESET_PROCESS   0x4000
 
#define VERBOSE_RESET_RETURN   0x8000
 
#define CLOCK_PULSE(p)
 
#define CLOCK_PULSE(p)
 

Enumerations

enum  seeprom_chip_type { C46 = 6, C56_66 = 8 }
 
enum  scb_flag_type {
  SCB_FREE = 0x0000, SCB_DTR_SCB = 0x0001, SCB_WAITINGQ = 0x0002, SCB_ACTIVE = 0x0004,
  SCB_SENSE = 0x0008, SCB_ABORT = 0x0010, SCB_DEVICE_RESET = 0x0020, SCB_RESET = 0x0040,
  SCB_RECOVERY_SCB = 0x0080, SCB_MSGOUT_PPR = 0x0100, SCB_MSGOUT_SENT = 0x0200, SCB_MSGOUT_SDTR = 0x0400,
  SCB_MSGOUT_WDTR = 0x0800, SCB_MSGOUT_BITS, SCB_QUEUED_ABORT = 0x1000, SCB_QUEUED_FOR_DONE = 0x2000,
  SCB_WAS_BUSY = 0x4000, SCB_QUEUE_FULL = 0x8000
}
 
enum  ahc_flag_type {
  AHC_FNONE = 0x00000000, AHC_PAGESCBS = 0x00000001, AHC_CHANNEL_B_PRIMARY = 0x00000002, AHC_USEDEFAULTS = 0x00000004,
  AHC_INDIRECT_PAGING = 0x00000008, AHC_CHNLB = 0x00000020, AHC_CHNLC = 0x00000040, AHC_EXTEND_TRANS_A = 0x00000100,
  AHC_EXTEND_TRANS_B = 0x00000200, AHC_TERM_ENB_A = 0x00000400, AHC_TERM_ENB_SE_LOW = 0x00000400, AHC_TERM_ENB_B = 0x00000800,
  AHC_TERM_ENB_SE_HIGH = 0x00000800, AHC_HANDLING_REQINITS = 0x00001000, AHC_TARGETMODE = 0x00002000, AHC_NEWEEPROM_FMT = 0x00004000,
  AHC_MOTHERBOARD = 0x00020000, AHC_NO_STPWEN = 0x00040000, AHC_RESET_DELAY = 0x00080000, AHC_A_SCANNED = 0x00100000,
  AHC_B_SCANNED = 0x00200000, AHC_MULTI_CHANNEL = 0x00400000, AHC_BIOS_ENABLED = 0x00800000, AHC_SEEPROM_FOUND = 0x01000000,
  AHC_TERM_ENB_LVD = 0x02000000, AHC_ABORT_PENDING = 0x04000000, AHC_RESET_PENDING = 0x08000000, AHC_IN_ISR = 0x10000000,
  AHC_IN_ABORT = 0x20000000, AHC_IN_RESET = 0x40000000, AHC_EXTERNAL_SRAM = 0x80000000
}
 
enum  ahc_chip {
  AHC_NONE = 0x0000, AHC_CHIPID_MASK = 0x00FF, AHC_AIC7770 = 0x0001, AHC_AIC7850 = 0x0002,
  AHC_AIC7855 = 0x0003, AHC_AIC7859 = 0x0004, AHC_AIC7860 = 0x0005, AHC_AIC7870 = 0x0006,
  AHC_AIC7880 = 0x0007, AHC_AIC7895 = 0x0008, AHC_AIC7895C = 0x0009, AHC_AIC7890 = 0x000a,
  AHC_AIC7896 = 0x000b, AHC_AIC7892 = 0x000c, AHC_AIC7899 = 0x000d, AHC_VL = 0x0100,
  AHC_EISA = 0x0200, AHC_PCI = 0x0400, AHC_BUS_MASK = 0x0F00, AHC_NONE = 0x0000,
  AHC_CHIPID_MASK = 0x00ff, AHC_AIC7770 = 0x0001, AHC_AIC7850 = 0x0002, AHC_AIC7860 = 0x0003,
  AHC_AIC7870 = 0x0004, AHC_AIC7880 = 0x0005, AHC_AIC7890 = 0x0006, AHC_AIC7895 = 0x0007,
  AHC_AIC7896 = 0x0008, AHC_AIC7892 = 0x0009, AHC_AIC7899 = 0x000a, AHC_VL = 0x0100,
  AHC_EISA = 0x0200, AHC_PCI = 0x0400
}
 
enum  ahc_feature {
  AHC_FENONE = 0x00000, AHC_ULTRA = 0x00001, AHC_ULTRA2 = 0x00002, AHC_WIDE = 0x00004,
  AHC_TWIN = 0x00008, AHC_MORE_SRAM = 0x00010, AHC_CMD_CHAN = 0x00020, AHC_QUEUE_REGS = 0x00040,
  AHC_SG_PRELOAD = 0x00080, AHC_SPIOCAP = 0x00100, AHC_MULTI_TID = 0x00200, AHC_HS_MAILBOX = 0x00400,
  AHC_DT = 0x00800, AHC_NEW_TERMCTL = 0x01000, AHC_MULTI_FUNC = 0x02000, AHC_LARGE_SCBS = 0x04000,
  AHC_AUTORATE = 0x08000, AHC_AUTOPAUSE = 0x10000, AHC_TARGETMODE = 0x20000, AHC_MULTIROLE = 0x40000,
  AHC_REMOVABLE = 0x80000, AHC_HVD = 0x100000, AHC_AIC7770_FE = AHC_FENONE, AHC_AIC7850_FE = AHC_SPIOCAP|AHC_AUTOPAUSE|AHC_TARGETMODE|AHC_ULTRA,
  AHC_AIC7860_FE = AHC_AIC7850_FE, AHC_AIC7870_FE = AHC_TARGETMODE|AHC_AUTOPAUSE, AHC_AIC7880_FE = AHC_AIC7870_FE|AHC_ULTRA, AHC_AIC7890_FE,
  AHC_AIC7892_FE = AHC_AIC7890_FE|AHC_DT|AHC_AUTORATE|AHC_AUTOPAUSE, AHC_AIC7895_FE, AHC_AIC7895C_FE = AHC_AIC7895_FE|AHC_MULTI_TID, AHC_AIC7896_FE = AHC_AIC7890_FE|AHC_MULTI_FUNC,
  AHC_AIC7899_FE = AHC_AIC7892_FE|AHC_MULTI_FUNC, AHC_FENONE = 0x0000, AHC_ULTRA = 0x0001, AHC_ULTRA2 = 0x0002,
  AHC_WIDE = 0x0004, AHC_TWIN = 0x0008, AHC_MORE_SRAM = 0x0010, AHC_CMD_CHAN = 0x0020,
  AHC_QUEUE_REGS = 0x0040, AHC_SG_PRELOAD = 0x0080, AHC_SPIOCAP = 0x0100, AHC_ULTRA3 = 0x0200,
  AHC_NEW_AUTOTERM = 0x0400, AHC_AIC7770_FE = AHC_FENONE, AHC_AIC7850_FE = AHC_SPIOCAP, AHC_AIC7860_FE = AHC_ULTRA|AHC_SPIOCAP,
  AHC_AIC7870_FE = AHC_FENONE, AHC_AIC7880_FE = AHC_ULTRA, AHC_AIC7890_FE, AHC_AIC7895_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA,
  AHC_AIC7896_FE = AHC_AIC7890_FE, AHC_AIC7892_FE = AHC_AIC7890_FE|AHC_ULTRA3, AHC_AIC7899_FE = AHC_AIC7890_FE|AHC_ULTRA3
}
 
enum  ahc_bugs {
  AHC_BUG_NONE = 0x0000, AHC_BUG_TMODE_WIDEODD = 0x0001, AHC_BUG_AUTOFLUSH = 0x0002, AHC_BUG_CACHETHEN = 0x0004,
  AHC_BUG_CACHETHEN_DIS = 0x0008, AHC_BUG_PCI_2_1_RETRY = 0x0010, AHC_BUG_PCI_MWI = 0x0020, AHC_BUG_SCBCHAN_UPLOAD = 0x0040
}
 

Functions

 __setup ("aic7xxx=", aic7xxx_setup)
 
 MODULE_LICENSE ("Dual BSD/GPL")
 
 MODULE_VERSION (AIC7XXX_H_VERSION)
 

Macro Definition Documentation

#define AHC_HID0   0x80 /* 0,1: msb of ID2, 2-7: ID1 */

Definition at line 418 of file aic7xxx_old.c.

#define AHC_HID1   0x81 /* 0-4: ID3, 5-7: LSB ID2 */

Definition at line 419 of file aic7xxx_old.c.

#define AHC_HID2   0x82 /* product */

Definition at line 420 of file aic7xxx_old.c.

#define AHC_HID3   0x83 /* firmware revision */

Definition at line 421 of file aic7xxx_old.c.

#define AHC_IN_ISR_BIT   28

Definition at line 706 of file aic7xxx_old.c.

#define AHC_SYNCRATE_CRC   0x40

Definition at line 1002 of file aic7xxx_old.c.

#define AHC_SYNCRATE_FAST   6

Definition at line 1001 of file aic7xxx_old.c.

#define AHC_SYNCRATE_SE   0x10

Definition at line 1003 of file aic7xxx_old.c.

#define AHC_SYNCRATE_ULTRA   3

Definition at line 1000 of file aic7xxx_old.c.

#define AHC_SYNCRATE_ULTRA2   1

Definition at line 999 of file aic7xxx_old.c.

#define AHC_SYNCRATE_ULTRA3   0

Definition at line 998 of file aic7xxx_old.c.

#define AHC_TRANS_ACTIVE   0x0002

Definition at line 848 of file aic7xxx_old.c.

#define AHC_TRANS_CUR   0x0001

Definition at line 847 of file aic7xxx_old.c.

#define AHC_TRANS_GOAL   0x0004

Definition at line 849 of file aic7xxx_old.c.

#define AHC_TRANS_QUITE   0x0010

Definition at line 851 of file aic7xxx_old.c.

#define AHC_TRANS_USER   0x0008

Definition at line 850 of file aic7xxx_old.c.

#define AIC7XXX_C_VERSION   "5.2.6"

Definition at line 251 of file aic7xxx_old.c.

#define AIC7XXX_CMDS_PER_DEVICE   32

Definition at line 274 of file aic7xxx_old.c.

#define aic7xxx_error (   cmd)    ((cmd)->SCp.Status)

Definition at line 568 of file aic7xxx_old.c.

#define aic7xxx_mapping (   cmd)    ((cmd)->SCp.phase)

Definition at line 583 of file aic7xxx_old.c.

#define AIC7XXX_MAX_SG   128

Definition at line 608 of file aic7xxx_old.c.

#define AIC7XXX_MAXSCB   255

Definition at line 615 of file aic7xxx_old.c.

#define aic7xxx_position (   cmd)    ((cmd)->SCp.have_data_in)

Definition at line 578 of file aic7xxx_old.c.

#define aic7xxx_status (   cmd)    ((cmd)->SCp.sent_command)

Definition at line 573 of file aic7xxx_old.c.

#define AIC7XXX_STRICT_PCI_SETUP

Definition at line 202 of file aic7xxx_old.c.

#define AIC_DEV (   cmd)    ((struct aic_dev_data *)(cmd)->device->hostdata)

Definition at line 588 of file aic7xxx_old.c.

#define ALL_CHANNELS   -1

Definition at line 254 of file aic7xxx_old.c.

#define ALL_LUNS   -1

Definition at line 255 of file aic7xxx_old.c.

#define ALL_TARGETS   -1

Definition at line 253 of file aic7xxx_old.c.

#define BASE_TO_SLOT (   x)    ((x) >> 12)

Definition at line 413 of file aic7xxx_old.c.

#define BASECLASS   0xFF000000ul

Definition at line 438 of file aic7xxx_old.c.

#define BERREN   0x00000008ul

Definition at line 455 of file aic7xxx_old.c.

#define BUS_DEVICE_RESET_PENDING   0x01

Definition at line 883 of file aic7xxx_old.c.

#define CACHESIZE   0x0000003Ful /* only 5 bits */

Definition at line 441 of file aic7xxx_old.c.

#define CCSCBBADDR   0xf0 /* aic7895/6/7 */

Definition at line 461 of file aic7xxx_old.c.

#define CF284XEXTEND   0x0020 /* extended translation (284x cards) */

Definition at line 507 of file aic7xxx_old.c.

#define CF284XFIFO   0x000C /* FIFO Threshold (284x cards) */

Definition at line 519 of file aic7xxx_old.c.

#define CF284XSELTO   0x0003 /* Selection timeout (284x cards) */

Definition at line 518 of file aic7xxx_old.c.

#define CF284XSTERM   0x0020 /* SCSI low byte termination (284x cards) */

Definition at line 523 of file aic7xxx_old.c.

#define CFAUTOTERM   0x0001 /* Perform Auto termination */

Definition at line 516 of file aic7xxx_old.c.

#define CFBIOSEN   0x0004 /* BIOS enabled */

Definition at line 504 of file aic7xxx_old.c.

#define CFBPRIMARY   0x0100 /* Channel B primary on 7895 chipsets */

Definition at line 525 of file aic7xxx_old.c.

#define CFBRTIME   0xFF00 /* bus release time */

Definition at line 536 of file aic7xxx_old.c.

#define CFDISC   0x0010 /* enable disconnection */

Definition at line 486 of file aic7xxx_old.c.

#define CFEXTEND   0x0080 /* extended translation enabled */

Definition at line 509 of file aic7xxx_old.c.

#define CFINCBIOS   0x0200 /* include in BIOS scan */

Definition at line 491 of file aic7xxx_old.c.

#define CFLVDSTERM   0x0800 /* aic7890 LVD Termination */

Definition at line 527 of file aic7xxx_old.c.

#define CFMAXTARG   0x00FF /* maximum targets */

Definition at line 542 of file aic7xxx_old.c.

#define CFMULTILUN   0x0800 /* probe mult luns in BIOS scan */

Definition at line 493 of file aic7xxx_old.c.

#define CFNEWULTRAFORMAT   0x0080 /* Use the Ultra2 SEEPROM format */

Definition at line 489 of file aic7xxx_old.c.

#define CFRESETB   0x0040 /* reset SCSI bus at boot */

Definition at line 524 of file aic7xxx_old.c.

#define CFRNFOUND   0x0400 /* report even if not found */

Definition at line 492 of file aic7xxx_old.c.

#define CFSCSIID   0x000F /* host adapter SCSI ID */

Definition at line 534 of file aic7xxx_old.c.

#define CFSEAUTOTERM   0x0400 /* aic7890 Perform SE Auto Term */

Definition at line 526 of file aic7xxx_old.c.

#define CFSM2DRV   0x0010 /* support more than two drives */

Definition at line 506 of file aic7xxx_old.c.

#define CFSPARITY   0x0010 /* SCSI parity */

Definition at line 522 of file aic7xxx_old.c.

#define CFSTART   0x0100 /* send start unit SCSI command */

Definition at line 490 of file aic7xxx_old.c.

#define CFSTERM   0x0004 /* SCSI low byte termination */

Definition at line 520 of file aic7xxx_old.c.

#define CFSUPREM   0x0001 /* support all removable drives */

Definition at line 502 of file aic7xxx_old.c.

#define CFSUPREMB   0x0002 /* support removable drives for boot only */

Definition at line 503 of file aic7xxx_old.c.

#define CFSYNCH   0x0008 /* enable synchronous transfer */

Definition at line 485 of file aic7xxx_old.c.

#define CFSYNCHISULTRA   0x0040 /* CFSYNC is an ultra offset */

Definition at line 488 of file aic7xxx_old.c.

#define CFULTRAEN   0x0002 /* Ultra SCSI speed enable (Ultra cards) */

Definition at line 517 of file aic7xxx_old.c.

#define CFWBCACHENC   0xc000 /* Don't change W-Behind Cache */

Definition at line 495 of file aic7xxx_old.c.

#define CFWBCACHEYES   0x4000 /* Enable W-Behind Cache on drive */

Definition at line 494 of file aic7xxx_old.c.

#define CFWIDEB   0x0020 /* wide bus device (wide card) */

Definition at line 487 of file aic7xxx_old.c.

#define CFWSTERM   0x0008 /* SCSI high byte termination (wide card) */

Definition at line 521 of file aic7xxx_old.c.

#define CFXFER   0x0007 /* synchronous transfer rate */

Definition at line 484 of file aic7xxx_old.c.

#define CLASS_PROGIF_REVID   0x08

Definition at line 434 of file aic7xxx_old.c.

#define CLOCK_PULSE (   p)
Value:
while ((aic_inb(p, STATUS_2840) & EEPROM_TF) == 0) \
{ \
; /* Do nothing */ \
} \
(void) aic_inb(p, SEECTL_2840);

Definition at line 7004 of file aic7xxx_old.c.

#define CLOCK_PULSE (   p)
Value:
do { \
int limit = 0; \
do { \
mb(); \
pause_sequencer(p); /* This is just to generate some PCI */ \
/* traffic so the PCI read is flushed */ \
/* it shouldn't be needed, but some */ \
/* chipsets do indeed appear to need */ \
/* something to force PCI reads to get */ \
/* flushed */ \
udelay(1); /* Do nothing */ \
} while (((aic_inb(p, SEECTL) & SEERDY) == 0) && (++limit < 1000)); \
} while(0)

Definition at line 7004 of file aic7xxx_old.c.

#define CSIZE_LATTIME   0x0C

Definition at line 440 of file aic7xxx_old.c.

#define CTL_OF_CMD (   cmd)
Value:
((cmd->device->channel) & 0x01), \
((cmd->device->id) & 0x0f), \
((cmd->device->lun) & 0x07)

Definition at line 1033 of file aic7xxx_old.c.

#define CTL_OF_SCB (   scb)
Value:
(((scb->hscb)->target_channel_lun >> 3) & 0x1), \
(((scb->hscb)->target_channel_lun >> 4) & 0xf), \
((scb->hscb)->target_channel_lun & 0x07)

Definition at line 1029 of file aic7xxx_old.c.

#define DACEN   0x00000004ul

Definition at line 456 of file aic7xxx_old.c.

#define DEFAULT_TAG_COMMANDS
Value:
{0, 0, 0, 0, 0, 0, 0, 0,\
0, 0, 0, 0, 0, 0, 0, 0}

Definition at line 285 of file aic7xxx_old.c.

#define DEVCONFIG   0x40

Definition at line 444 of file aic7xxx_old.c.

#define DEVICE_DTR_SCANNED   0x10

Definition at line 887 of file aic7xxx_old.c.

#define DEVICE_PRINT_DTR   0x04

Definition at line 885 of file aic7xxx_old.c.

#define DEVICE_RESET_DELAY   0x02

Definition at line 884 of file aic7xxx_old.c.

#define DEVICE_SCSI_3   0x20

Definition at line 888 of file aic7xxx_old.c.

#define DEVICE_WAS_BUSY   0x08

Definition at line 886 of file aic7xxx_old.c.

#define DEVREVID   0x000000FFul

Definition at line 435 of file aic7xxx_old.c.

#define DID_RETRY_COMMAND   DID_ERROR

Definition at line 402 of file aic7xxx_old.c.

#define DID_UNDERFLOW   DID_ERROR

Definition at line 387 of file aic7xxx_old.c.

#define DIFACTNEGEN   0x00000001ul /* aic7870 only */

Definition at line 458 of file aic7xxx_old.c.

#define EXTSCBPEN   0x00000010ul /* aic7870 only */

Definition at line 454 of file aic7xxx_old.c.

#define EXTSCBTIME   0x00000020ul /* aic7870 only */

Definition at line 453 of file aic7xxx_old.c.

#define HSCSIID   0x07

Definition at line 404 of file aic7xxx_old.c.

#define INFO_LEAD   KERN_INFO "(scsi%d:%d:%d:%d) "

Definition at line 1044 of file aic7xxx_old.c.

#define INTDEF   0x5C /* Interrupt Definition Register */

Definition at line 429 of file aic7xxx_old.c.

#define LATTIME   0x0000FF00ul

Definition at line 442 of file aic7xxx_old.c.

#define MAX_LUNS   8

Definition at line 257 of file aic7xxx_old.c.

#define MAX_TARGETS   16

Definition at line 256 of file aic7xxx_old.c.

#define MAXREG   0xCFF

Definition at line 427 of file aic7xxx_old.c.

#define MAXSLOT   15

Definition at line 411 of file aic7xxx_old.c.

#define MINREG   0xC00

Definition at line 426 of file aic7xxx_old.c.

#define MINSLOT   1

Definition at line 410 of file aic7xxx_old.c.

#define MPORTMODE   0x00000400ul /* aic7870 only */

Definition at line 446 of file aic7xxx_old.c.

#define MRDCEN   0x00000040ul

Definition at line 452 of file aic7xxx_old.c.

#define MSG_TYPE_INITIATOR_MSGIN   0x02

Definition at line 956 of file aic7xxx_old.c.

#define MSG_TYPE_INITIATOR_MSGOUT   0x01

Definition at line 955 of file aic7xxx_old.c.

#define MSG_TYPE_NONE   0x00

Definition at line 954 of file aic7xxx_old.c.

#define PROGINFC   0x0000FF00ul

Definition at line 436 of file aic7xxx_old.c.

#define RAMPSM   0x00000200ul /* aic7870 only */

Definition at line 447 of file aic7xxx_old.c.

#define RAMPSM_ULTRA2   0x00000004

Definition at line 448 of file aic7xxx_old.c.

#define SCAMCTL   0x1a /* Ultra2 only */

Definition at line 460 of file aic7xxx_old.c.

#define SCB_DMA_ADDR (   scb,
  addr 
)    ((unsigned long)(addr) + (scb)->scb_dma->dma_offset)

Definition at line 757 of file aic7xxx_old.c.

#define SCB_IS_SCSIBUS_B (   scb)    (((scb)->hscb->target_channel_lun & SELBUSB) != 0)

Definition at line 559 of file aic7xxx_old.c.

#define SCB_LUN (   scb)    ((scb)->hscb->target_channel_lun & LID)

Definition at line 557 of file aic7xxx_old.c.

#define SCB_PIO_TRANSFER_SIZE
Value:
26 /* amount we need to upload/download
* via PIO to initialize a transaction.
*/

Definition at line 634 of file aic7xxx_old.c.

#define SCB_TARGET (   scb)    (((scb)->hscb->target_channel_lun & TID) >> 4)

Definition at line 555 of file aic7xxx_old.c.

#define SCBRAMSEL   0x00000080ul

Definition at line 450 of file aic7xxx_old.c.

#define SCBRAMSEL_ULTRA2   0x00000008

Definition at line 451 of file aic7xxx_old.c.

#define SCBSIZE32   0x00010000ul /* aic789X only */

Definition at line 445 of file aic7xxx_old.c.

#define SCSI_RESET   0x040

Definition at line 405 of file aic7xxx_old.c.

#define SELBUS_MASK   0x0a

Definition at line 550 of file aic7xxx_old.c.

#define SELBUSB   0x08

Definition at line 552 of file aic7xxx_old.c.

#define SELNARROW   0x00

Definition at line 551 of file aic7xxx_old.c.

#define SINGLE_BUS   0x00

Definition at line 553 of file aic7xxx_old.c.

#define SLOTBASE (   x)    ((x) << 12)

Definition at line 412 of file aic7xxx_old.c.

#define STPWLEVEL   0x00000002ul

Definition at line 457 of file aic7xxx_old.c.

#define SUBCLASS   0x00FF0000ul

Definition at line 437 of file aic7xxx_old.c.

#define TARGET_INDEX (   cmd)    ((cmd)->device->id | ((cmd)->device->channel << 3))

Definition at line 1037 of file aic7xxx_old.c.

#define ULTRA_SXFR   0x100

Definition at line 1006 of file aic7xxx_old.c.

#define VERBOSE_ABORT   0x0f00

Definition at line 1242 of file aic7xxx_old.c.

#define VERBOSE_ABORT_FIND   0x0200

Definition at line 1244 of file aic7xxx_old.c.

#define VERBOSE_ABORT_MID   0x0100

Definition at line 1243 of file aic7xxx_old.c.

#define VERBOSE_ABORT_PROCESS   0x0400

Definition at line 1245 of file aic7xxx_old.c.

#define VERBOSE_ABORT_RETURN   0x0800

Definition at line 1246 of file aic7xxx_old.c.

#define VERBOSE_MINOR_ERROR   0x0040

Definition at line 1240 of file aic7xxx_old.c.

#define VERBOSE_NEGOTIATION   0x0001

Definition at line 1234 of file aic7xxx_old.c.

#define VERBOSE_NEGOTIATION2   0x0020

Definition at line 1239 of file aic7xxx_old.c.

#define VERBOSE_NORMAL   0x0000

Definition at line 1233 of file aic7xxx_old.c.

#define VERBOSE_PROBE   0x0008

Definition at line 1237 of file aic7xxx_old.c.

#define VERBOSE_PROBE2   0x0010

Definition at line 1238 of file aic7xxx_old.c.

#define VERBOSE_RESET   0xf000

Definition at line 1247 of file aic7xxx_old.c.

#define VERBOSE_RESET_FIND   0x2000

Definition at line 1249 of file aic7xxx_old.c.

#define VERBOSE_RESET_MID   0x1000

Definition at line 1248 of file aic7xxx_old.c.

#define VERBOSE_RESET_PROCESS   0x4000

Definition at line 1250 of file aic7xxx_old.c.

#define VERBOSE_RESET_RETURN   0x8000

Definition at line 1251 of file aic7xxx_old.c.

#define VERBOSE_SCSIINT   0x0004

Definition at line 1236 of file aic7xxx_old.c.

#define VERBOSE_SEQINT   0x0002

Definition at line 1235 of file aic7xxx_old.c.

#define VERBOSE_TRACING   0x0080

Definition at line 1241 of file aic7xxx_old.c.

#define VOLSENSE   0x00000100ul

Definition at line 449 of file aic7xxx_old.c.

#define WARN_LEAD   KERN_WARNING "(scsi%d:%d:%d:%d) "

Definition at line 1043 of file aic7xxx_old.c.

Enumeration Type Documentation

enum ahc_bugs
Enumerator:
AHC_BUG_NONE 
AHC_BUG_TMODE_WIDEODD 
AHC_BUG_AUTOFLUSH 
AHC_BUG_CACHETHEN 
AHC_BUG_CACHETHEN_DIS 
AHC_BUG_PCI_2_1_RETRY 
AHC_BUG_PCI_MWI 
AHC_BUG_SCBCHAN_UPLOAD 

Definition at line 768 of file aic7xxx_old.c.

enum ahc_chip
Enumerator:
AHC_NONE 
AHC_CHIPID_MASK 
AHC_AIC7770 
AHC_AIC7850 
AHC_AIC7855 
AHC_AIC7859 
AHC_AIC7860 
AHC_AIC7870 
AHC_AIC7880 
AHC_AIC7895 
AHC_AIC7895C 
AHC_AIC7890 
AHC_AIC7896 
AHC_AIC7892 
AHC_AIC7899 
AHC_VL 
AHC_EISA 
AHC_PCI 
AHC_BUS_MASK 
AHC_NONE 
AHC_CHIPID_MASK 
AHC_AIC7770 
AHC_AIC7850 
AHC_AIC7860 
AHC_AIC7870 
AHC_AIC7880 
AHC_AIC7890 
AHC_AIC7895 
AHC_AIC7896 
AHC_AIC7892 
AHC_AIC7899 
AHC_VL 
AHC_EISA 
AHC_PCI 

Definition at line 713 of file aic7xxx_old.c.

Enumerator:
AHC_FENONE 
AHC_ULTRA 
AHC_ULTRA2 
AHC_WIDE 
AHC_TWIN 
AHC_MORE_SRAM 
AHC_CMD_CHAN 
AHC_QUEUE_REGS 
AHC_SG_PRELOAD 
AHC_SPIOCAP 
AHC_MULTI_TID 
AHC_HS_MAILBOX 
AHC_DT 
AHC_NEW_TERMCTL 
AHC_MULTI_FUNC 
AHC_LARGE_SCBS 
AHC_AUTORATE 
AHC_AUTOPAUSE 
AHC_TARGETMODE 
AHC_MULTIROLE 
AHC_REMOVABLE 
AHC_HVD 
AHC_AIC7770_FE 
AHC_AIC7850_FE 
AHC_AIC7860_FE 
AHC_AIC7870_FE 
AHC_AIC7880_FE 
AHC_AIC7890_FE 
AHC_AIC7892_FE 
AHC_AIC7895_FE 
AHC_AIC7895C_FE 
AHC_AIC7896_FE 
AHC_AIC7899_FE 
AHC_FENONE 
AHC_ULTRA 
AHC_ULTRA2 
AHC_WIDE 
AHC_TWIN 
AHC_MORE_SRAM 
AHC_CMD_CHAN 
AHC_QUEUE_REGS 
AHC_SG_PRELOAD 
AHC_SPIOCAP 
AHC_ULTRA3 
AHC_NEW_AUTOTERM 
AHC_AIC7770_FE 
AHC_AIC7850_FE 
AHC_AIC7860_FE 
AHC_AIC7870_FE 
AHC_AIC7880_FE 
AHC_AIC7890_FE 
AHC_AIC7895_FE 
AHC_AIC7896_FE 
AHC_AIC7892_FE 
AHC_AIC7899_FE 

Definition at line 731 of file aic7xxx_old.c.

Enumerator:
AHC_FNONE 
AHC_PAGESCBS 
AHC_CHANNEL_B_PRIMARY 
AHC_USEDEFAULTS 
AHC_INDIRECT_PAGING 
AHC_CHNLB 
AHC_CHNLC 
AHC_EXTEND_TRANS_A 
AHC_EXTEND_TRANS_B 
AHC_TERM_ENB_A 
AHC_TERM_ENB_SE_LOW 
AHC_TERM_ENB_B 
AHC_TERM_ENB_SE_HIGH 
AHC_HANDLING_REQINITS 
AHC_TARGETMODE 
AHC_NEWEEPROM_FMT 
AHC_MOTHERBOARD 
AHC_NO_STPWEN 
AHC_RESET_DELAY 
AHC_A_SCANNED 
AHC_B_SCANNED 
AHC_MULTI_CHANNEL 
AHC_BIOS_ENABLED 
AHC_SEEPROM_FOUND 
AHC_TERM_ENB_LVD 
AHC_ABORT_PENDING 
AHC_RESET_PENDING 
AHC_IN_ISR 
AHC_IN_ABORT 
AHC_IN_RESET 
AHC_EXTERNAL_SRAM 

Definition at line 671 of file aic7xxx_old.c.

Enumerator:
SCB_FREE 
SCB_DTR_SCB 
SCB_WAITINGQ 
SCB_ACTIVE 
SCB_SENSE 
SCB_ABORT 
SCB_DEVICE_RESET 
SCB_RESET 
SCB_RECOVERY_SCB 
SCB_MSGOUT_PPR 
SCB_MSGOUT_SENT 
SCB_MSGOUT_SDTR 
SCB_MSGOUT_WDTR 
SCB_MSGOUT_BITS 
SCB_QUEUED_ABORT 
SCB_QUEUED_FOR_DONE 
SCB_WAS_BUSY 
SCB_QUEUE_FULL 

Definition at line 647 of file aic7xxx_old.c.

Enumerator:
C46 
C56_66 

Definition at line 472 of file aic7xxx_old.c.

Function Documentation

__setup ( )
MODULE_LICENSE ( "Dual BSD/GPL"  )
MODULE_VERSION ( AIC7XXX_H_VERSION  )

Variable Documentation

const char* errmesg

Definition at line 812 of file aic7xxx_old.c.

unsigned char errno

Definition at line 811 of file aic7xxx_old.c.