?? buslogic.h
字號:
BusLogic_HostAdapterBusType_T HostAdapterBusType; BusLogic_IO_Address_T IO_Address; BusLogic_PCI_Address_T PCI_Address; unsigned short AddressCount; unsigned char HostNumber; unsigned char ModelName[9]; unsigned char FirmwareVersion[6]; unsigned char FullModelName[18]; unsigned char Bus; unsigned char Device; unsigned char IRQ_Channel; unsigned char DMA_Channel; unsigned char SCSI_ID; boolean IRQ_ChannelAcquired:1; boolean DMA_ChannelAcquired:1; boolean ExtendedTranslationEnabled:1; boolean ParityCheckingEnabled:1; boolean BusResetEnabled:1; boolean LevelSensitiveInterrupt:1; boolean HostWideSCSI:1; boolean HostDifferentialSCSI:1; boolean HostSupportsSCAM:1; boolean HostUltraSCSI:1; boolean ExtendedLUNSupport:1; boolean TerminationInfoValid:1; boolean LowByteTerminated:1; boolean HighByteTerminated:1; boolean BounceBuffersRequired:1; boolean StrictRoundRobinModeSupport:1; boolean SCAM_Enabled:1; boolean SCAM_Level2:1; boolean HostAdapterInitialized:1; boolean HostAdapterExternalReset:1; boolean HostAdapterInternalError:1; boolean ProcessCompletedCCBsActive; volatile boolean HostAdapterCommandCompleted; unsigned short HostAdapterScatterGatherLimit; unsigned short DriverScatterGatherLimit; unsigned short MaxTargetDevices; unsigned short MaxLogicalUnits; unsigned short MailboxCount; unsigned short InitialCCBs; unsigned short IncrementalCCBs; unsigned short AllocatedCCBs; unsigned short DriverQueueDepth; unsigned short HostAdapterQueueDepth; unsigned short UntaggedQueueDepth; unsigned short CommonQueueDepth; unsigned short BusSettleTime; unsigned short SynchronousPermitted; unsigned short FastPermitted; unsigned short UltraPermitted; unsigned short WidePermitted; unsigned short DisconnectPermitted; unsigned short TaggedQueuingPermitted; unsigned short ExternalHostAdapterResets; unsigned short HostAdapterInternalErrors; unsigned short TargetDeviceCount; unsigned short MessageBufferLength; BusLogic_BusAddress_T BIOS_Address; BusLogic_DriverOptions_T *DriverOptions; FlashPoint_Info_T FlashPointInfo; FlashPoint_CardHandle_T CardHandle; struct BusLogic_HostAdapter *Next; BusLogic_CCB_T *All_CCBs; BusLogic_CCB_T *Free_CCBs; BusLogic_CCB_T *FirstCompletedCCB; BusLogic_CCB_T *LastCompletedCCB; BusLogic_CCB_T *BusDeviceResetPendingCCB[BusLogic_MaxTargetDevices]; BusLogic_ErrorRecoveryStrategy_T ErrorRecoveryStrategy[BusLogic_MaxTargetDevices]; BusLogic_TargetFlags_T TargetFlags[BusLogic_MaxTargetDevices]; unsigned char QueueDepth[BusLogic_MaxTargetDevices]; unsigned char SynchronousPeriod[BusLogic_MaxTargetDevices]; unsigned char SynchronousOffset[BusLogic_MaxTargetDevices]; unsigned char ActiveCommands[BusLogic_MaxTargetDevices]; unsigned int CommandsSinceReset[BusLogic_MaxTargetDevices]; unsigned long LastSequencePoint[BusLogic_MaxTargetDevices]; unsigned long LastResetAttempted[BusLogic_MaxTargetDevices]; unsigned long LastResetCompleted[BusLogic_MaxTargetDevices]; BusLogic_OutgoingMailbox_T *FirstOutgoingMailbox; BusLogic_OutgoingMailbox_T *LastOutgoingMailbox; BusLogic_OutgoingMailbox_T *NextOutgoingMailbox; BusLogic_IncomingMailbox_T *FirstIncomingMailbox; BusLogic_IncomingMailbox_T *LastIncomingMailbox; BusLogic_IncomingMailbox_T *NextIncomingMailbox; BusLogic_TargetStatistics_T TargetStatistics[BusLogic_MaxTargetDevices]; unsigned char MailboxSpace[BusLogic_MaxMailboxes * (sizeof(BusLogic_OutgoingMailbox_T) + sizeof(BusLogic_IncomingMailbox_T))]; char MessageBuffer[BusLogic_MessageBufferSize];}BusLogic_HostAdapter_T;/* Define a structure for the BIOS Disk Parameters.*/typedef struct BIOS_DiskParameters{ int Heads; int Sectors; int Cylinders;}BIOS_DiskParameters_T;/**/typedef struct SCSI_Inquiry{ unsigned char PeripheralDeviceType:5; /* Byte 0 Bits 0-4 */ unsigned char PeripheralQualifier:3; /* Byte 0 Bits 5-7 */ unsigned char DeviceTypeModifier:7; /* Byte 1 Bits 0-6 */ boolean RMB:1; /* Byte 1 Bit 7 */ unsigned char ANSI_ApprovedVersion:3; /* Byte 2 Bits 0-2 */ unsigned char ECMA_Version:3; /* Byte 2 Bits 3-5 */ unsigned char ISO_Version:2; /* Byte 2 Bits 6-7 */ unsigned char ResponseDataFormat:4; /* Byte 3 Bits 0-3 */ unsigned char :2; /* Byte 3 Bits 4-5 */ boolean TrmIOP:1; /* Byte 3 Bit 6 */ boolean AENC:1; /* Byte 3 Bit 7 */ unsigned char AdditionalLength; /* Byte 4 */ unsigned char :8; /* Byte 5 */ unsigned char :8; /* Byte 6 */ boolean SftRe:1; /* Byte 7 Bit 0 */ boolean CmdQue:1; /* Byte 7 Bit 1 */ boolean :1; /* Byte 7 Bit 2 */ boolean Linked:1; /* Byte 7 Bit 3 */ boolean Sync:1; /* Byte 7 Bit 4 */ boolean WBus16:1; /* Byte 7 Bit 5 */ boolean WBus32:1; /* Byte 7 Bit 6 */ boolean RelAdr:1; /* Byte 7 Bit 7 */ unsigned char VendorIdentification[8]; /* Bytes 8-15 */ unsigned char ProductIdentification[16]; /* Bytes 16-31 */ unsigned char ProductRevisionLevel[4]; /* Bytes 32-35 */}SCSI_Inquiry_T;/* BusLogic_AcquireHostAdapterLock acquires exclusive access to Host Adapter.*/static inlinevoid BusLogic_AcquireHostAdapterLock(BusLogic_HostAdapter_T *HostAdapter, ProcessorFlags_T *ProcessorFlags){}/* BusLogic_ReleaseHostAdapterLock releases exclusive access to Host Adapter.*/static inlinevoid BusLogic_ReleaseHostAdapterLock(BusLogic_HostAdapter_T *HostAdapter, ProcessorFlags_T *ProcessorFlags){}/* BusLogic_AcquireHostAdapterLockIH acquires exclusive access to Host Adapter, but is only called from the interrupt handler.*/static inlinevoid BusLogic_AcquireHostAdapterLockIH(BusLogic_HostAdapter_T *HostAdapter, ProcessorFlags_T *ProcessorFlags){ spin_lock_irqsave(&io_request_lock, *ProcessorFlags);}/* BusLogic_ReleaseHostAdapterLockIH releases exclusive access to Host Adapter, but is only called from the interrupt handler.*/static inlinevoid BusLogic_ReleaseHostAdapterLockIH(BusLogic_HostAdapter_T *HostAdapter, ProcessorFlags_T *ProcessorFlags){ spin_unlock_irqrestore(&io_request_lock, *ProcessorFlags);}/* Define functions to provide an abstraction for reading and writing the Host Adapter I/O Registers.*/static inlinevoid BusLogic_SCSIBusReset(BusLogic_HostAdapter_T *HostAdapter){ BusLogic_ControlRegister_T ControlRegister; ControlRegister.All = 0; ControlRegister.Bits.SCSIBusReset = true; outb(ControlRegister.All, HostAdapter->IO_Address + BusLogic_ControlRegisterOffset);}static inlinevoid BusLogic_InterruptReset(BusLogic_HostAdapter_T *HostAdapter){ BusLogic_ControlRegister_T ControlRegister; ControlRegister.All = 0; ControlRegister.Bits.InterruptReset = true; outb(ControlRegister.All, HostAdapter->IO_Address + BusLogic_ControlRegisterOffset);}static inlinevoid BusLogic_SoftReset(BusLogic_HostAdapter_T *HostAdapter){ BusLogic_ControlRegister_T ControlRegister; ControlRegister.All = 0; ControlRegister.Bits.SoftReset = true; outb(ControlRegister.All, HostAdapter->IO_Address + BusLogic_ControlRegisterOffset);}static inlinevoid BusLogic_HardReset(BusLogic_HostAdapter_T *HostAdapter){ BusLogic_ControlRegister_T ControlRegister; ControlRegister.All = 0; ControlRegister.Bits.HardReset = true; outb(ControlRegister.All, HostAdapter->IO_Address + BusLogic_ControlRegisterOffset);}static inlineunsigned char BusLogic_ReadStatusRegister(BusLogic_HostAdapter_T *HostAdapter){ return inb(HostAdapter->IO_Address + BusLogic_StatusRegisterOffset);}static inlinevoid BusLogic_WriteCommandParameterRegister(BusLogic_HostAdapter_T *HostAdapter, unsigned char Value){ outb(Value, HostAdapter->IO_Address + BusLogic_CommandParameterRegisterOffset);}static inlineunsigned char BusLogic_ReadDataInRegister(BusLogic_HostAdapter_T *HostAdapter){ return inb(HostAdapter->IO_Address + BusLogic_DataInRegisterOffset);}static inlineunsigned char BusLogic_ReadInterruptRegister(BusLogic_HostAdapter_T *HostAdapter){ return inb(HostAdapter->IO_Address + BusLogic_InterruptRegisterOffset);}static inlineunsigned char BusLogic_ReadGeometryRegister(BusLogic_HostAdapter_T *HostAdapter){ return inb(HostAdapter->IO_Address + BusLogic_GeometryRegisterOffset);}/* BusLogic_StartMailboxCommand issues an Execute Mailbox Command, which notifies the Host Adapter that an entry has been made in an Outgoing Mailbox.*/static inlinevoid BusLogic_StartMailboxCommand(BusLogic_HostAdapter_T *HostAdapter){ BusLogic_WriteCommandParameterRegister(HostAdapter, BusLogic_ExecuteMailboxCommand);}/* BusLogic_Delay waits for Seconds to elapse.*/static inline void BusLogic_Delay(int Seconds){ int Milliseconds = 1000 * Seconds; unsigned long ProcessorFlags; save_flags(ProcessorFlags); sti(); while (--Milliseconds >= 0) udelay(1000); restore_flags(ProcessorFlags);}/* Virtual_to_Bus and Bus_to_Virtual map between Kernel Virtual Addresses and PCI/VLB/EISA/ISA Bus Addresses.*/static inline BusLogic_BusAddress_T Virtual_to_Bus(void *VirtualAddress){ return (BusLogic_BusAddress_T) virt_to_bus(VirtualAddress);}static inline void *Bus_to_Virtual(BusLogic_BusAddress_T BusAddress){ return (void *) bus_to_virt(BusAddress);}/* Virtual_to_32Bit_Virtual maps between Kernel Virtual Addresses and 32 bit Kernel Virtual Addresses. This avoids compilation warnings on 64 bit architectures.*/static inlineBusLogic_BusAddress_T Virtual_to_32Bit_Virtual(void *VirtualAddress){ return (BusLogic_BusAddress_T) (unsigned long) VirtualAddress;}/* BusLogic_IncrementErrorCounter increments Error Counter by 1, stopping at 65535 rather than wrapping around to 0.*/static inline void BusLogic_IncrementErrorCounter(unsigned short *ErrorCounter){ if (*ErrorCounter < 65535) (*ErrorCounter)++;}/* BusLogic_IncrementByteCounter increments Byte Counter by Amount.*/static inline void BusLogic_IncrementByteCounter(BusLogic_ByteCounter_T *ByteCounter, unsigned int Amount){ ByteCounter->Units += Amount; if (ByteCounter->Units > 999999999) { ByteCounter->Units -= 1000000000; ByteCounter->Billions++; }}/* BusLogic_IncrementSizeBucket increments the Bucket for Amount.*/static inline void BusLogic_IncrementSizeBucket(BusLogic_CommandSizeBuckets_T CommandSizeBuckets, unsigned int Amount){ int Index = 0; if (Amount < 8*1024) { if (Amount < 2*1024) Index = (Amount < 1*1024 ? 0 : 1); else Index = (Amount < 4*1024 ? 2 : 3); } else if (Amount < 128*1024) { if (Amount < 32*1024) Index = (Amount < 16*1024 ? 4 : 5); else Index = (Amount < 64*1024 ? 6 : 7); } else Index = (Amount < 256*1024 ? 8 : 9); CommandSizeBuckets[Index]++;}/* Define the version number of the FlashPoint Firmware (SCCB Manager).*/#define FlashPoint_FirmwareVersion "5.02"/* Define the possible return values from FlashPoint_HandleInterrupt.*/#define FlashPoint_NormalInterrupt 0x00#define FlashPoint_InternalError 0xFE#define FlashPoint_ExternalBusReset 0xFF/* Define prototypes for the forward referenced BusLogic Driver Internal Functions.*/static void BusLogic_QueueCompletedCCB(BusLogic_CCB_T *);static void BusLogic_InterruptHandler(int, void *, Registers_T *);static int BusLogic_ResetHostAdapter(BusLogic_HostAdapter_T *, SCSI_Command_T *, unsigned int);static void BusLogic_Message(BusLogic_MessageLevel_T, char *, BusLogic_HostAdapter_T *, ...);/* Declare the Initialization Functions.*/static void BusLogic_AnnounceDriver(BusLogic_HostAdapter_T *) __init;static void BusLogic_RegisterHostAdapter(BusLogic_HostAdapter_T *) __init;static void BusLogic_UnregisterHostAdapter(BusLogic_HostAdapter_T *) __init;static boolean BusLogic_CreateInitialCCBs(BusLogic_HostAdapter_T *) __init;static void BusLogic_DestroyCCBs(BusLogic_HostAdapter_T *) __init;static void BusLogic_AppendProbeAddressISA(BusLogic_IO_Address_T) __init;static voidBusLogic_InitializeProbeInfoListISA(BusLogic_HostAdapter_T *) __init;static void BusLogic_SortProbeInfo(BusLogic_ProbeInfo_T *, int) __init;static intBusLogic_InitializeMultiMasterProbeInfo(BusLogic_HostAdapter_T *) __init;static intBusLogic_InitializeFlashPointProbeInfo(BusLogic_HostAdapter_T *) __init;static void BusLogic_InitializeProbeInfoList(BusLogic_HostAdapter_T *) __init;static boolean BusLogic_Failure(BusLogic_HostAdapter_T *, char *) __init;static boolean BusLogic_ProbeHostAdapter(BusLogic_HostAdapter_T *) __init;static boolean BusLogic_CheckHostAdapter(BusLogic_HostAdapter_T *) __init;static booleanBusLogic_ReadHostAdapterConfiguration(BusLogic_HostAdapter_T *) __init;static booleanBusLogic_ReportHostAdapterConfiguration(BusLogic_HostAdapter_T *) __init;static boolean BusLogic_AcquireResources(BusLogic_HostAdapter_T *) __init;static void BusLogic_ReleaseResources(BusLogic_HostAdapter_T *) __init;static boolean BusLogic_TargetDeviceInquiry(BusLogic_HostAdapter_T *) __init;static void BusLogic_InitializeHostStructure(BusLogic_HostAdapter_T *, SCSI_Host_T *) __init;int BusLogic_DetectHostAdapter(SCSI_Host_Template_T *) __init;int BusLogic_ReleaseHostAdapter(SCSI_Host_T *) __init;static boolean BusLogic_ParseKeyword(char **, char *) __init;static int BusLogic_ParseDriverOptions(char *) __init;static int BusLogic_Setup(char *) __init;#endif /* BusLogic_DriverVersion */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -