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

📄 mbox_defs.h

📁 linux-2.6.15.6
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * *			Linux MegaRAID Unified device driver * * Copyright (c) 2003-2004  LSI Logic Corporation. * *	   This program is free software; you can redistribute it and/or *	   modify it under the terms of the GNU General Public License *	   as published by the Free Software Foundation; either version *	   2 of the License, or (at your option) any later version. * * FILE		: mbox_defs.h * */#ifndef _MRAID_MBOX_DEFS_H_#define _MRAID_MBOX_DEFS_H_#include <linux/types.h>/* * Commands and states for mailbox based controllers */#define MBOXCMD_LREAD		0x01#define MBOXCMD_LWRITE		0x02#define MBOXCMD_PASSTHRU	0x03#define MBOXCMD_ADPEXTINQ	0x04#define MBOXCMD_ADAPTERINQ	0x05#define MBOXCMD_LREAD64		0xA7#define MBOXCMD_LWRITE64	0xA8#define MBOXCMD_PASSTHRU64	0xC3#define MBOXCMD_EXTPTHRU	0xE3#define MAIN_MISC_OPCODE	0xA4#define GET_MAX_SG_SUPPORT	0x01#define SUPPORT_EXT_CDB		0x16#define FC_NEW_CONFIG		0xA1#define NC_SUBOP_PRODUCT_INFO	0x0E#define NC_SUBOP_ENQUIRY3	0x0F#define ENQ3_GET_SOLICITED_FULL	0x02#define OP_DCMD_READ_CONFIG	0x04#define NEW_READ_CONFIG_8LD	0x67#define READ_CONFIG_8LD		0x07#define FLUSH_ADAPTER		0x0A#define FLUSH_SYSTEM		0xFE/* * Command for random deletion of logical drives */#define	FC_DEL_LOGDRV		0xA4#define	OP_SUP_DEL_LOGDRV	0x2A#define OP_GET_LDID_MAP		0x18#define OP_DEL_LOGDRV		0x1C/* * BIOS commands */#define IS_BIOS_ENABLED		0x62#define GET_BIOS		0x01#define CHNL_CLASS		0xA9#define GET_CHNL_CLASS		0x00#define SET_CHNL_CLASS		0x01#define CH_RAID			0x01#define CH_SCSI			0x00#define BIOS_PVT_DATA		0x40#define GET_BIOS_PVT_DATA	0x00/* * Commands to support clustering */#define GET_TARGET_ID		0x7D#define CLUSTER_OP		0x70#define GET_CLUSTER_MODE	0x02#define CLUSTER_CMD		0x6E#define RESERVE_LD		0x01#define RELEASE_LD		0x02#define RESET_RESERVATIONS	0x03#define RESERVATION_STATUS	0x04#define RESERVE_PD		0x05#define RELEASE_PD		0x06/* * Module battery status */#define BATTERY_MODULE_MISSING		0x01#define BATTERY_LOW_VOLTAGE		0x02#define BATTERY_TEMP_HIGH		0x04#define BATTERY_PACK_MISSING		0x08#define BATTERY_CHARGE_MASK		0x30#define BATTERY_CHARGE_DONE		0x00#define BATTERY_CHARGE_INPROG		0x10#define BATTERY_CHARGE_FAIL		0x20#define BATTERY_CYCLES_EXCEEDED		0x40/* * Physical drive states. */#define PDRV_UNCNF	0#define PDRV_ONLINE	3#define PDRV_FAILED	4#define PDRV_RBLD	5#define PDRV_HOTSPARE	6/* * Raid logical drive states. */#define RDRV_OFFLINE	0#define RDRV_DEGRADED	1#define RDRV_OPTIMAL	2#define RDRV_DELETED	3/* * Read, write and cache policies */#define NO_READ_AHEAD		0#define READ_AHEAD		1#define ADAP_READ_AHEAD		2#define WRMODE_WRITE_THRU	0#define WRMODE_WRITE_BACK	1#define CACHED_IO		0#define DIRECT_IO		1#define MAX_LOGICAL_DRIVES_8LD		8#define MAX_LOGICAL_DRIVES_40LD		40#define FC_MAX_PHYSICAL_DEVICES		256#define MAX_MBOX_CHANNELS		5#define MAX_MBOX_TARGET			15#define MBOX_MAX_PHYSICAL_DRIVES	MAX_MBOX_CHANNELS*MAX_MBOX_TARGET#define MAX_ROW_SIZE_40LD		32#define MAX_ROW_SIZE_8LD		8#define SPAN_DEPTH_8_SPANS		8#define SPAN_DEPTH_4_SPANS		4#define MAX_REQ_SENSE_LEN		0x20/** * struct mbox_t - Driver and f/w handshake structure. * @cmd		: firmware command * @cmdid	: command id * @numsectors	: number of sectors to be transferred * @lba		: Logical Block Address on LD * @xferaddr	: DMA address for data transfer * @logdrv	: logical drive number * @numsge	: number of scatter gather elements in sg list * @resvd	: reserved * @busy	: f/w busy, must wait to issue more commands. * @numstatus	: number of commands completed. * @status	: status of the commands completed * @completed	: array of completed command ids. * @poll	: poll and ack sequence * @ack		: poll and ack sequence * * The central handshake structure between the driver and the firmware. This * structure must be allocated by the driver and aligned at 8-byte boundary. */#define MBOX_MAX_FIRMWARE_STATUS	46typedef struct {	uint8_t		cmd;	uint8_t		cmdid;	uint16_t	numsectors;	uint32_t	lba;	uint32_t	xferaddr;	uint8_t		logdrv;	uint8_t		numsge;	uint8_t		resvd;	uint8_t		busy;	uint8_t		numstatus;	uint8_t		status;	uint8_t		completed[MBOX_MAX_FIRMWARE_STATUS];	uint8_t		poll;	uint8_t		ack;} __attribute__ ((packed)) mbox_t;/** * mbox64_t - 64-bit extension for the mailbox * @segment_lo	: the low 32-bits of the address of the scatter-gather list * @segment_hi	: the upper 32-bits of the address of the scatter-gather list * @mbox	: 32-bit mailbox, whose xferadder field must be set to *		0xFFFFFFFF * * This is the extension of the 32-bit mailbox to be able to perform DMA * beyond 4GB address range. */typedef struct {	uint32_t	xferaddr_lo;	uint32_t	xferaddr_hi;	mbox_t		mbox32;} __attribute__ ((packed)) mbox64_t;/* * mailbox structure used for internal commands */typedef struct {	u8	cmd;	u8	cmdid;	u8	opcode;	u8	subopcode;	u32	lba;	u32	xferaddr;	u8	logdrv;	u8	rsvd[3];	u8	numstatus;	u8	status;} __attribute__ ((packed)) int_mbox_t;/** * mraid_passthru_t - passthru structure to issue commands to physical devices * @timeout		: command timeout, 0=6sec, 1=60sec, 2=10min, 3=3hr * @ars			: set if ARS required after check condition * @islogical		: set if command meant for logical devices * @logdrv		: logical drive number if command for LD * @channel		: Channel on which physical device is located * @target		: SCSI target of the device * @queuetag		: unused * @queueaction		: unused * @cdb			: SCSI CDB * @cdblen		: length of the CDB * @reqsenselen		: amount of request sense data to be returned * @reqsensearea	: Sense information buffer * @numsge		: number of scatter-gather elements in the sg list * @scsistatus		: SCSI status of the command completed. * @dataxferaddr	: DMA data transfer address * @dataxferlen		: amount of the data to be transferred. */typedef struct {	uint8_t		timeout		:3;	uint8_t		ars		:1;	uint8_t		reserved	:3;	uint8_t		islogical	:1;	uint8_t		logdrv;	uint8_t		channel;	uint8_t		target;	uint8_t		queuetag;	uint8_t		queueaction;	uint8_t		cdb[10];	uint8_t		cdblen;	uint8_t		reqsenselen;	uint8_t		reqsensearea[MAX_REQ_SENSE_LEN];	uint8_t		numsge;	uint8_t		scsistatus;	uint32_t	dataxferaddr;	uint32_t	dataxferlen;} __attribute__ ((packed)) mraid_passthru_t;typedef struct {	uint32_t		dataxferaddr_lo;	uint32_t		dataxferaddr_hi;	mraid_passthru_t	pthru32;} __attribute__ ((packed)) mega_passthru64_t;/** * mraid_epassthru_t - passthru structure to issue commands to physical devices * @timeout		: command timeout, 0=6sec, 1=60sec, 2=10min, 3=3hr * @ars			: set if ARS required after check condition * @rsvd1		: reserved field * @cd_rom		: (?) * @rsvd2		: reserved field * @islogical		: set if command meant for logical devices * @logdrv		: logical drive number if command for LD * @channel		: Channel on which physical device is located * @target		: SCSI target of the device * @queuetag		: unused * @queueaction		: unused * @cdblen		: length of the CDB * @rsvd3		: reserved field * @cdb			: SCSI CDB * @numsge		: number of scatter-gather elements in the sg list * @status		: SCSI status of the command completed. * @reqsenselen		: amount of request sense data to be returned * @reqsensearea	: Sense information buffer * @rsvd4		: reserved field * @dataxferaddr	: DMA data transfer address * @dataxferlen		: amount of the data to be transferred. */typedef struct {	uint8_t		timeout		:3;	uint8_t		ars		:1;	uint8_t		rsvd1		:1;	uint8_t		cd_rom		:1;	uint8_t		rsvd2		:1;	uint8_t		islogical	:1;	uint8_t		logdrv;	uint8_t		channel;	uint8_t		target;	uint8_t		queuetag;	uint8_t		queueaction;	uint8_t		cdblen;	uint8_t		rsvd3;	uint8_t		cdb[16];	uint8_t		numsge;	uint8_t		status;	uint8_t		reqsenselen;	uint8_t		reqsensearea[MAX_REQ_SENSE_LEN];	uint8_t		rsvd4;	uint32_t	dataxferaddr;	uint32_t	dataxferlen;} __attribute__ ((packed)) mraid_epassthru_t;/** * mraid_pinfo_t - product info, static information about the controller * @data_size		: current size in bytes (not including resvd) * @config_signature	: Current value is 0x00282008 * @fw_version		: Firmware version * @bios_version	: version of the BIOS * @product_name	: Name given to the controller * @max_commands	: Maximum concurrent commands supported * @nchannels		: Number of SCSI Channels detected * @fc_loop_present	: Number of Fibre Loops detected * @mem_type		: EDO, FPM, SDRAM etc * @signature		: * @dram_size		: In terms of MB * @subsysid		: device PCI subsystem ID * @subsysvid		: device PCI subsystem vendor ID * @notify_counters	: * @pad1k		: 135 + 889 resvd = 1024 total size * * This structures holds the information about the controller which is not * expected to change dynamically. * * The current value of config signature is 0x00282008: * 0x28 = MAX_LOGICAL_DRIVES, * 0x20 = Number of stripes and * 0x08 = Number of spans */typedef struct {	uint32_t	data_size;	uint32_t	config_signature;	uint8_t		fw_version[16];	uint8_t		bios_version[16];	uint8_t		product_name[80];	uint8_t		max_commands;	uint8_t		nchannels;	uint8_t		fc_loop_present;	uint8_t		mem_type;	uint32_t	signature;	uint16_t	dram_size;	uint16_t	subsysid;	uint16_t	subsysvid;	uint8_t		notify_counters;	uint8_t		pad1k[889];} __attribute__ ((packed)) mraid_pinfo_t;/** * mraid_notify_t - the notification structure * @global_counter		: Any change increments this counter * @param_counter		: Indicates any params changed * @param_id			: Param modified - defined below * @param_val			: New val of last param modified * @write_config_counter	: write config occurred * @write_config_rsvd		: * @ldrv_op_counter		: Indicates ldrv op started/completed * @ldrv_opid			: ldrv num * @ldrv_opcmd			: ldrv operation - defined below * @ldrv_opstatus		: status of the operation * @ldrv_state_counter		: Indicates change of ldrv state * @ldrv_state_id		: ldrv num * @ldrv_state_new		: New state * @ldrv_state_old		: old state * @pdrv_state_counter		: Indicates change of ldrv state * @pdrv_state_id		: pdrv id * @pdrv_state_new		: New state * @pdrv_state_old		: old state * @pdrv_fmt_counter		: Indicates pdrv format started/over * @pdrv_fmt_id			: pdrv id * @pdrv_fmt_val		: format started/over * @pdrv_fmt_rsvd		: * @targ_xfer_counter		: Indicates SCSI-2 Xfer rate change * @targ_xfer_id		: pdrv Id * @targ_xfer_val		: new Xfer params of last pdrv * @targ_xfer_rsvd		: * @fcloop_id_chg_counter	: Indicates loopid changed * @fcloopid_pdrvid		: pdrv id * @fcloop_id0			: loopid on fc loop 0 * @fcloop_id1			: loopid on fc loop 1 * @fcloop_state_counter	: Indicates loop state changed * @fcloop_state0		: state of fc loop 0 * @fcloop_state1		: state of fc loop 1 * @fcloop_state_rsvd		: */typedef struct {	uint32_t	global_counter;	uint8_t		param_counter;	uint8_t		param_id;	uint16_t	param_val;	uint8_t		write_config_counter;	uint8_t		write_config_rsvd[3];

⌨️ 快捷键说明

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