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

📄 ips.h

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 H
📖 第 1 页 / 共 3 页
字号:
   u_int8_t       reserved[512];} IPS_CONF, *PIPS_CONF;typedef struct {   u_int32_t  signature;   u_int8_t   reserved;   u_int8_t   adapter_slot;   u_int16_t  adapter_type;   u_int8_t   bios_high[4];   u_int8_t   bios_low[4];   u_int16_t  reserved2;   u_int8_t   reserved3;   u_int8_t   operating_system;   u_int8_t   driver_high[4];   u_int8_t   driver_low[4];   u_int8_t   reserved4[100];} IPS_NVRAM_P5, *PIPS_NVRAM_P5;typedef struct _IPS_SUBSYS {   u_int32_t  param[128];} IPS_SUBSYS, *PIPS_SUBSYS;/** ** SCSI Structures **//* * Inquiry Data Format */typedef struct {   u_int8_t  DeviceType;   u_int8_t  DeviceTypeQualifier;   u_int8_t  Version;   u_int8_t  ResponseDataFormat;   u_int8_t  AdditionalLength;   u_int8_t  Reserved;   u_int8_t  Flags[2];   char      VendorId[8];   char      ProductId[16];   char      ProductRevisionLevel[4];} IPS_SCSI_INQ_DATA, *PIPS_SCSI_INQ_DATA;/* * Read Capacity Data Format */typedef struct {   u_int32_t lba;   u_int32_t len;} IPS_SCSI_CAPACITY;/* * Request Sense Data Format */typedef struct {   u_int8_t  ResponseCode;   u_int8_t  SegmentNumber;   u_int8_t  Flags;   u_int8_t  Information[4];   u_int8_t  AdditionalLength;   u_int8_t  CommandSpecific[4];   u_int8_t  AdditionalSenseCode;   u_int8_t  AdditionalSenseCodeQual;   u_int8_t  FRUCode;   u_int8_t  SenseKeySpecific[3];} IPS_SCSI_REQSEN;/* * Sense Data Format - Page 3 */typedef struct {   u_int8_t  PageCode;   u_int8_t  PageLength;   u_int16_t TracksPerZone;   u_int16_t AltSectorsPerZone;   u_int16_t AltTracksPerZone;   u_int16_t AltTracksPerVolume;   u_int16_t SectorsPerTrack;   u_int16_t BytesPerSector;   u_int16_t Interleave;   u_int16_t TrackSkew;   u_int16_t CylinderSkew;   u_int8_t  flags;   u_int8_t  reserved[3];} IPS_SCSI_MODE_PAGE3;/* * Sense Data Format - Page 4 */typedef struct {   u_int8_t  PageCode;   u_int8_t  PageLength;   u_int16_t CylindersHigh;   u_int8_t  CylindersLow;   u_int8_t  Heads;   u_int16_t WritePrecompHigh;   u_int8_t  WritePrecompLow;   u_int16_t ReducedWriteCurrentHigh;   u_int8_t  ReducedWriteCurrentLow;   u_int16_t StepRate;   u_int16_t LandingZoneHigh;   u_int8_t  LandingZoneLow;   u_int8_t  flags;   u_int8_t  RotationalOffset;   u_int8_t  Reserved;   u_int16_t MediumRotationRate;   u_int8_t  Reserved2[2];} IPS_SCSI_MODE_PAGE4;/* * Sense Data Format - Block Descriptor (DASD) */typedef struct {   u_int32_t NumberOfBlocks;   u_int8_t  DensityCode;   u_int16_t BlockLengthHigh;   u_int8_t  BlockLengthLow;} IPS_SCSI_MODE_PAGE_BLKDESC;/* * Sense Data Format - Mode Page Header */typedef struct {   u_int8_t  DataLength;   u_int8_t  MediumType;   u_int8_t  Reserved;   u_int8_t  BlockDescLength;} IPS_SCSI_MODE_PAGE_HEADER;typedef struct {   IPS_SCSI_MODE_PAGE_HEADER  hdr;   IPS_SCSI_MODE_PAGE_BLKDESC blkdesc;   union {      IPS_SCSI_MODE_PAGE3 pg3;      IPS_SCSI_MODE_PAGE4 pg4;   } pdata;} IPS_SCSI_MODE_PAGE_DATA;/* * Scatter Gather list format */typedef struct ips_sglist {   u_int32_t address;   u_int32_t length;} IPS_SG_LIST, *PIPS_SG_LIST;typedef struct _IPS_INFOSTR {   char *buffer;   int   length;   int   offset;   int   pos;   int   localpos;} IPS_INFOSTR;typedef struct {   char *option_name;   int  *option_flag;   int   option_value;} IPS_OPTION;typedef struct {   void             *userbuffer;   u_int32_t         usersize;   void             *kernbuffer;   u_int32_t         kernsize;   void             *ha;   void             *SC;   void             *pt;   struct semaphore *sem;   u_int32_t         offset;   u_int32_t         retcode;} IPS_FLASH_DATA;/* * Status Info */typedef struct ips_stat {   u_int32_t residue_len;   void     *scb_addr;   u_int8_t  padding[12 - sizeof(void *)];} ips_stat_t;/* * SCB Queue Format */typedef struct ips_scb_queue {   struct ips_scb *head;   struct ips_scb *tail;   u_int32_t       count;   u_int32_t       cpu_flags;   spinlock_t      lock;} ips_scb_queue_t;/* * Wait queue_format */typedef struct ips_wait_queue {   Scsi_Cmnd      *head;   Scsi_Cmnd      *tail;   u_int32_t       count;   u_int32_t       cpu_flags;   spinlock_t      lock;} ips_wait_queue_t;typedef struct ips_copp_wait_item {   Scsi_Cmnd                 *scsi_cmd;   struct semaphore          *sem;   struct ips_copp_wait_item *next;} ips_copp_wait_item_t;typedef struct ips_copp_queue {   struct ips_copp_wait_item *head;   struct ips_copp_wait_item *tail;   u_int32_t                  count;   u_int32_t                  cpu_flags;   spinlock_t                 lock;} ips_copp_queue_t;/* forward decl for host structure */struct ips_ha;typedef struct {   int       (*reset)(struct ips_ha *);   int       (*issue)(struct ips_ha *, struct ips_scb *);   int       (*isinit)(struct ips_ha *);   int       (*isintr)(struct ips_ha *);   int       (*init)(struct ips_ha *);   int       (*erasebios)(struct ips_ha *);   int       (*programbios)(struct ips_ha *, char *, u_int32_t, u_int32_t);   int       (*verifybios)(struct ips_ha *, char *, u_int32_t, u_int32_t);   void      (*statinit)(struct ips_ha *);   void      (*intr)(struct ips_ha *);   void      (*enableint)(struct ips_ha *);   u_int32_t (*statupd)(struct ips_ha *);} ips_hw_func_t;typedef struct ips_ha {   u_int8_t           ha_id[IPS_MAX_CHANNELS+1];   u_int32_t          dcdb_active[IPS_MAX_CHANNELS];   u_int32_t          io_addr;            /* Base I/O address           */   u_int8_t           irq;                /* IRQ for adapter            */   u_int8_t           ntargets;           /* Number of targets          */   u_int8_t           nbus;               /* Number of buses            */   u_int8_t           nlun;               /* Number of Luns             */   u_int16_t          ad_type;            /* Adapter type               */   u_int16_t          host_num;           /* Adapter number             */   u_int32_t          max_xfer;           /* Maximum Xfer size          */   u_int32_t          max_cmds;           /* Max concurrent commands    */   u_int32_t          num_ioctl;          /* Number of Ioctls           */   ips_stat_t         sp;                 /* Status packer pointer      */   struct ips_scb    *scbs;               /* Array of all CCBS          */   struct ips_scb    *scb_freelist;       /* SCB free list              */   ips_wait_queue_t   scb_waitlist;       /* Pending SCB list           */   ips_copp_queue_t   copp_waitlist;      /* Pending PT list            */   ips_scb_queue_t    scb_activelist;     /* Active SCB list            */   IPS_IO_CMD        *dummy;              /* dummy command              */   IPS_ADAPTER       *adapt;              /* Adapter status area        */   IPS_ENQ           *enq;                /* Adapter Enquiry data       */   IPS_CONF          *conf;               /* Adapter config data        */   IPS_NVRAM_P5      *nvram;              /* NVRAM page 5 data          */   IPS_SUBSYS        *subsys;             /* Subsystem parameters       */   char              *ioctl_data;         /* IOCTL data area            */   u_int32_t          ioctl_datasize;     /* IOCTL data size            */   u_int32_t          cmd_in_progress;    /* Current command in progress*/   unsigned long      flags;              /* HA flags                   */   u_int8_t           waitflag;           /* are we waiting for cmd     */   u_int8_t           active;   u_int16_t          reset_count;        /* number of resets           */   u_int32_t          last_ffdc;          /* last time we sent ffdc info*/   u_int8_t           revision_id;        /* Revision level             */   u_int16_t          device_id;          /* PCI device ID              */   u_int8_t           slot_num;           /* PCI Slot Number            */   u_int16_t          subdevice_id;       /* Subsystem device ID        */   u_int8_t           ioctl_order;        /* Number of pages in ioctl   */   u_int8_t           reserved2;          /* Empty                      */   u_int8_t           bios_version[8];    /* BIOS Revision              */   u_int32_t          mem_addr;           /* Memory mapped address      */   u_int32_t          io_len;             /* Size of IO Address         */   u_int32_t          mem_len;            /* Size of memory address     */   char              *mem_ptr;            /* Memory mapped Ptr          */   char              *ioremap_ptr;        /* ioremapped memory pointer  */   ips_hw_func_t      func;               /* hw function pointers       */   struct pci_dev    *pcidev;             /* PCI device handle          */   spinlock_t         scb_lock;   spinlock_t         copp_lock;   spinlock_t         ips_lock;   struct semaphore   ioctl_sem;          /* Semaphore for new IOCTL's  */   struct semaphore   flash_ioctl_sem;    /* Semaphore for Flashing     */   char              *save_ioctl_data;    /* Save Area for ioctl_data   */   u8                 save_ioctl_order;   /* Save Area for ioctl_order  */   u32                save_ioctl_datasize;/* Save Area for ioctl_datasize */} ips_ha_t;typedef void (*ips_scb_callback) (ips_ha_t *, struct ips_scb *);/* * SCB Format */typedef struct ips_scb {   IPS_HOST_COMMAND  cmd;   IPS_DCDB_TABLE    dcdb;   u_int8_t          target_id;   u_int8_t          bus;   u_int8_t          lun;   u_int8_t          cdb[12];   u_int32_t         scb_busaddr;   u_int32_t         data_busaddr;   u_int32_t         timeout;   u_int8_t          basic_status;   u_int8_t          extended_status;   u_int8_t          breakup;   u_int8_t          sg_break;   u_int32_t         data_len;   u_int32_t         sg_len;   u_int32_t         flags;   u_int32_t         op_code;   IPS_SG_LIST      *sg_list;   Scsi_Cmnd        *scsi_cmd;   struct ips_scb   *q_next;   ips_scb_callback  callback;   struct semaphore *sem;} ips_scb_t;typedef struct ips_scb_pt {   IPS_HOST_COMMAND  cmd;   IPS_DCDB_TABLE    dcdb;   u_int8_t          target_id;   u_int8_t          bus;   u_int8_t          lun;   u_int8_t          cdb[12];   u_int32_t         scb_busaddr;   u_int32_t         data_busaddr;   u_int32_t         timeout;   u_int8_t          basic_status;   u_int8_t          extended_status;   u_int16_t         breakup;   u_int32_t         data_len;   u_int32_t         sg_len;   u_int32_t         flags;   u_int32_t         op_code;   IPS_SG_LIST      *sg_list;   Scsi_Cmnd        *scsi_cmd;   struct ips_scb   *q_next;   ips_scb_callback  callback;} ips_scb_pt_t;/* * Passthru Command Format */typedef struct {   u_int8_t      CoppID[4];   u_int32_t     CoppCmd;   u_int32_t     PtBuffer;   u_int8_t     *CmdBuffer;   u_int32_t     CmdBSize;   ips_scb_pt_t  CoppCP;   u_int32_t     TimeOut;   u_int8_t      BasicStatus;   u_int8_t      ExtendedStatus;   u_int16_t     reserved;} ips_passthru_t;#endif/* * Overrides for Emacs so that we almost follow Linus's tabbing style. * Emacs will notice this stuff at the end of the file and automatically * adjust the settings for this buffer only.  This must remain at the end * of the file. * --------------------------------------------------------------------------- * Local variables: * c-indent-level: 2 * c-brace-imaginary-offset: 0 * c-brace-offset: -2 * c-argdecl-indent: 2 * c-label-offset: -2 * c-continued-statement-offset: 2 * c-continued-brace-offset: 0 * indent-tabs-mode: nil * tab-width: 8 * End: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -