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

📄 osd_scsi.h

📁 RAID卡的测试程序
💻 H
字号:
#if !defined( OSD_SCSI_H )
#define OSD_SCSI_H

#include "gen_typs.h"

#define ocmdEnclosure	0x0
#define ocmdBattery		0x1
#define ocmdGetAdapter	0x5
//add 20050812
#define ocmdFlash		0x6
#define ocmdMemory		0x8
//add end
#define ocmdGetIOP		0x7

/* For ocmdEnclosure: Enclosure Control */
#define CAM_MAX_ENCLOSURE				0x10	/* SX4 is 4,EX8350 is 16 */
#define CAM_MAX_SENSOR_PER_ENCLOSURE	0x06	/* SS4100 has 6 sensors */
#define MAX_VOLTAGES_PER_ENCLOSURE		0x0a
#define MAX_TEMPERATURE_PER_ENCLOSURE   0x0a
#define MAX_FANS_PER_ENCLOSURE			0x0a
#define MAX_CARRIERS_PER_ENCLOSURE      64

#define BASE_ADDRESS_MAX_NUM	6

#define DIMM_TYPE_NORMAL	0
#define DIMM_TYPE_ECC		1
#define DIMM_TYPE_DDR		2
#define DIMM_TYPE_SIMULATED	3 

/* 
 * To avoid inconsistent enum type size on different platforms, we decide to cancel all
 * enum definitions in driver and application shared definitions.
 */
#define ENCLOSURE_NONE		0
#define ENCLOSURE_SS4100	1
#define ENCLOSURE_SS1100	2
#define ENCLOSURE_NEC		3
#define ENCLOSURE_FSC		4
#define ENCLOSURE_HPQ		5
#define ENCLOSURE_RN4100	6
#define ENCLOSURE_DS1300	7

// for Aurora firmware
#define ENCLOSURE_SAFTE         6
#define ENCLOSURE_J300          7
#define ENCLOSURE_VITESSE_7153  8
#define ENCLOSURE_VITESSE_7154  9
#define ENCLOSURE_VITESSE_7155  10
#define ENCLOSURE_VITESSE_7157  11
#define ENCLOSURE_VITESSE_7160  12
#define ENCLOSURE_LSI           13
#define ENCLOSURE_OTHER         14

#define SENSOR_NONE			0
#define SENSOR_FAN			1
#define SENSOR_VOLTAGE33	2
#define SENSOR_VOLTAGE5		3
#define SENSOR_VOLTAGE12	4
#define SENSOR_TEMPERATURE	5

typedef struct _APIFRAME_ENCLOSURE
{
	U8 EnclosureIndex;
	U8 EnclosureType;
	U8 NumberOfFan;
	U8 NumberOfTemperature;

	U8 NumberOfVoltage;
	U8 NumberOfCarrier;
	U8 Reserved[2];
} APIFRAME_ENCLOSURE, * PAPIFRAME_ENCLOSURE;

typedef struct _APIFRAME_ENCLOSURE_INFORMATION {
	APIFRAME_ENCLOSURE Enclosure[CAM_MAX_ENCLOSURE];
} APIFRAME_ENCLOSURE_INFORMATION, *PAPIFRAME_ENCLOSURE_INFORMATION;


typedef struct _APIFRAME_AURORA_ENCLOSURE
{
	U8 EnclosureIndex;
	U8 NumberOfFan;
	U8 NumberOfTemperature;
	U8 NumberOfVoltage;
	U8 NumberOfCarrier;
	U8 EnclosureType;
	U8 productRevisionLevel[4];
	U8 Reserved[6];
} APIFRAME_ENCLOSURE_AURORA, * PAPIFRAME_ENCLOSURE_AURORA;

typedef struct _APIFRAME_ENCLOSURE_AURORA_INFORMATION {
	APIFRAME_ENCLOSURE_AURORA Enclosure[CAM_MAX_ENCLOSURE];
} APIFRAME_ENCLOSURE_AURORA_INFORMATION, *PAPIFRAME_ENCLOSURE_AURORA_INFORMATION;


typedef struct _APIFRAME_ENCLOSURE_MAPDISKID {
	U8 EnclosureID;
	U8 CarrierID;
	U8 Reserved[6];
} APIFRAME_ENCLOSURE_MAPDISKID, * PAPIFRAME_ENCLOSURE_MAPDISKID;

/* For ocmdBattery: Battery Information */
typedef struct _APIFRAME_BATTERY_INFORMATION {
	U8 BatteryExist;
	U8 BatteryState;
	U8 Reserved[6];
	U32 Temperature;
	U32 Voltage;
} APIFRAME_BATTERY_INFORMATION, *PAPIFRAME_BATTERY_INFORMATION;

#define BATTERY_STATE_CHARGING                0x00
#define BATTERY_STATE_DISCHARGING             0x01
#define BATTERY_STATE_FULLY_CHARGED           0x02
#define BATTERY_STATE_MALFUNCTION             0x03
#define BATTERY_STATE_RECONDITION             0x04

//add 20050812
#if defined(LINUX) || defined(FREEBSD)
#define FLASH_IMAGE_PAGE_SIZE	1024*8
#define FLASH_IMAGE_PAGE_COUNT	256
#else
#define FLASH_IMAGE_PAGE_SIZE	1024*64
#define FLASH_IMAGE_PAGE_COUNT	20
#endif
#define FLASH_IMAGE_MAX_LENGTH	(FLASH_IMAGE_PAGE_SIZE*FLASH_IMAGE_PAGE_COUNT)
#define FLASH_FLAG_LAST_PAGE		bit(0)

/* Image Header has 64 bytes. Late on, we may need add checksum. */
typedef struct _APIFRAME_FLASH_IMAGE_HEADER
{
	U32 ImageSize;
	U32 FlashOffset;
	U32 Reserved[14];
}APIFRAME_FLASH_IMAGE_HEADER, *PAPIFRAME_FLASH_IMAGE_HEADER;

/* Only the first page has the imageheader.
 * For other pages, ImageHeader is used as the ImageBuffer as well. 
 * So it will contain the image data. */
typedef struct _APIFRAME_FLASH_PAGE
{
	APIFRAME_FLASH_IMAGE_HEADER ImageHeader;
	U8 Image[FLASH_IMAGE_PAGE_SIZE];
}APIFRAME_FLASH_PAGE, *PAPIFRAME_FLASH_PAGE;

typedef struct	_CDB_FLASH
{
	U8	OpCode;						/* FIXED: svucPASSTHROUGH_API_COMMAND */
	U8	SubOpCode;					/* FIXED: ocmdFlash */
	U8	FlashCommand;				/* see FLASH_CONTROL_XXX */
	U8	ImageType;					/* see FLASH_IMAGE_TYPE_XXX*/
	U32 PageSize;					/* Size of this page */
	U8  PageNumber;					/* Page Number */
	U8  PageFlag;					/* Page Flag: see FLASH_FLAG_XXX */
	U8	Reserved[6];
} PACKED CDB_FLASH, buf_space * bpCDB_FLASH;

#define FLASH_CONTROL_SHOWINFORMATION	0
#define FLASH_CONTROL_UPLOADIMAGE		1
#define FLASH_CONTROL_DOWNLOADIMAGE		2
#define FLASH_CONTROL_SETUPUPLOAD		3
//add end

#define ENC_DISK_HEALTHY			0x03
#define ENC_ARRAY_MORPHINGPAUSED    0x0a
#define ENC_DISK_REBUILD            0x06
#define ENC_DISK_NODISK             0x02
#define ENC_DISK_SETDOWN            0x04
#define ENC_DISK_SMARTERROR         0x08


#define ENC_FAN_SPEED_LOWEST			0x1		// Fan at lowest speed
#define ENC_FAN_SPEED_SECOND_LOWEST		0x2		// Fan at second lowest speed
#define ENC_FAN_SPEED_THIRDLOWEST		0x3     // Fan at third lowest speed
#define ENC_FAN_SPEED_INTERMEDIATE      0x4		// Fan at intermediate speed
#define ENC_FAN_SPEED_THIRD_HIGHEST		0x5		// Fan at third highest speed
#define ENC_FAN_SPEED_SECOND_HIGHEST	0x6     // Fan at second highest speed
#define ENC_FAN_SPEED_HIGHEST			0x7     // Fan at highest speed


typedef struct _APIFRAME_VOLTAGE
{
	U16 VOLTAGE;
	U8 VoltageIndex;
	U8 Reserved[5];
}APIFRAME_VOLTAGE;

typedef struct _APIFRAME_VOLTAGE_INFORMATION
{
	APIFRAME_VOLTAGE Voltage[MAX_VOLTAGES_PER_ENCLOSURE];
}APIFRAME_VOLTAGE_INFORMATION;

typedef struct _APIFRAME_TEMPERATURE
{
	U8  TemperatureIndex;
	U8  Temperature;
	U8	Reserved[6];
}APIFRAME_TEMPERATURE;

typedef struct _APIFRAME_TEMPERATURE_INFORMATION
{
	APIFRAME_TEMPERATURE temperature[MAX_TEMPERATURE_PER_ENCLOSURE];
}APIFRAME_TEMPERATURE_INFORMATION;

typedef struct _APIFRAME_FAN
{
	U16 ActualFanSpeed;
	U8 SpeedCode;
	U8 FanIndex;
	U8 Reserved[4];
}APIFRAME_FAN;

typedef struct _APIFRAME_FAN_INFORMATION 
{
	APIFRAME_FAN Fan[MAX_FANS_PER_ENCLOSURE];
}APIFRAME_FAN_INFORMATION;


typedef struct _APIFRAME_CARRIER_INFORMATION
{
	U8 CarrierStatus[MAX_CARRIERS_PER_ENCLOSURE];
}APIFRAME_CARRIER_INFORMATION;

typedef struct _APIFRAME_ENCLOSURE_NUMBER
{
	U8 NumberOfEnclosures;
	U8 Reserved[7];
}APIFRAME_ENCLOSURE_NUMBER;

#endif /* OSD_SCSI_H */

⌨️ 快捷键说明

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