⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buslogic.h

📁 讲述linux的初始化过程
💻 H
📖 第 1 页 / 共 4 页
字号:
  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;/*  Define a structure for the SCSI Inquiry command results.*/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 + -