linux/drivers/scsi/mpt3sas/mpi/mpi2_raid.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright 2000-2020 Broadcom Inc. All rights reserved.
 *
 *
 *          Name:  mpi2_raid.h
 *         Title:  MPI Integrated RAID messages and structures
 * Creation Date:  April 26, 2007
 *
 *   mpi2_raid.h Version:  02.00.11
 *
 * Version History
 * ---------------
 *
 * Date      Version   Description
 * --------  --------  ------------------------------------------------------
 * 04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
 * 08-31-07  02.00.01  Modifications to RAID Action request and reply,
 *                     including the Actions and ActionData.
 * 02-29-08  02.00.02  Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD.
 * 05-21-08  02.00.03  Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that
 *                     the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT
 *                     can be sized by the build environment.
 * 07-30-09  02.00.04  Added proper define for the Use Default Settings bit of
 *                     VolumeCreationFlags and marked the old one as obsolete.
 * 05-12-10  02.00.05  Added MPI2_RAID_VOL_FLAGS_OP_MDC define.
 * 08-24-10  02.00.06  Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with
 *                     related structures and defines.
 *                     Added product-specific range to RAID Action values.
 * 11-18-11  02.00.07  Incorporating additions for MPI v2.5.
 * 02-06-12  02.00.08  Added MPI2_RAID_ACTION_PHYSDISK_HIDDEN.
 * 07-26-12  02.00.09  Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR.
 *                     Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define.
 * 04-17-13  02.00.10  Added MPI25_RAID_ACTION_ADATA_ALLOW_PI.
 * 11-18-14  02.00.11  Updated copyright information.
 * --------------------------------------------------------------------------
 */

#ifndef MPI2_RAID_H
#define MPI2_RAID_H

/*****************************************************************************
*
*              Integrated RAID Messages
*
*****************************************************************************/

/****************************************************************************
* RAID Action messages
****************************************************************************/

/* ActionDataWord defines for use with MPI2_RAID_ACTION_CREATE_VOLUME action */
#define MPI25_RAID_ACTION_ADATA_ALLOW_PI

/*ActionDataWord defines for use with MPI2_RAID_ACTION_DELETE_VOLUME action */
#define MPI2_RAID_ACTION_ADATA_KEEP_LBA0
#define MPI2_RAID_ACTION_ADATA_ZERO_LBA0

/*use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for
 *MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */

/*ActionDataWord defines for use with
 *MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES action */
#define MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD

/*ActionDataWord for MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE Action */
pMpi2RaidActionRateData_t;

#define MPI2_RAID_ACTION_SET_RATE_RESYNC
#define MPI2_RAID_ACTION_SET_RATE_DATA_SCRUB
#define MPI2_RAID_ACTION_SET_RATE_POWERSAVE_MODE

/*ActionDataWord for MPI2_RAID_ACTION_START_RAID_FUNCTION Action */
pMpi2RaidActionStartRaidFunction_t;

/*defines for the RAIDFunction field */
#define MPI2_RAID_ACTION_START_BACKGROUND_INIT
#define MPI2_RAID_ACTION_START_ONLINE_CAP_EXPANSION
#define MPI2_RAID_ACTION_START_CONSISTENCY_CHECK

/*defines for the Flags field */
#define MPI2_RAID_ACTION_START_NEW
#define MPI2_RAID_ACTION_START_RESUME

/*ActionDataWord for MPI2_RAID_ACTION_STOP_RAID_FUNCTION Action */
pMpi2RaidActionStopRaidFunction_t;

/*defines for the RAIDFunction field */
#define MPI2_RAID_ACTION_STOP_BACKGROUND_INIT
#define MPI2_RAID_ACTION_STOP_ONLINE_CAP_EXPANSION
#define MPI2_RAID_ACTION_STOP_CONSISTENCY_CHECK

/*defines for the Flags field */
#define MPI2_RAID_ACTION_STOP_ABORT
#define MPI2_RAID_ACTION_STOP_PAUSE

/*ActionDataWord for MPI2_RAID_ACTION_CREATE_HOT_SPARE Action */
pMpi2RaidActionHotSpare_t;

/*ActionDataWord for MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE Action */
pMpi2RaidActionFwUpdateMode_t;

/*ActionDataWord defines for use with
 *MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE action */
#define MPI2_RAID_ACTION_ADATA_DISABLE_FW_UPDATE
#define MPI2_RAID_ACTION_ADATA_ENABLE_FW_UPDATE

pMpi2RaidActionData_t;

/*RAID Action Request Message */
pMpi2RaidActionRequest_t;

/*RAID Action request Action values */

#define MPI2_RAID_ACTION_INDICATOR_STRUCT
#define MPI2_RAID_ACTION_CREATE_VOLUME
#define MPI2_RAID_ACTION_DELETE_VOLUME
#define MPI2_RAID_ACTION_DISABLE_ALL_VOLUMES
#define MPI2_RAID_ACTION_ENABLE_ALL_VOLUMES
#define MPI2_RAID_ACTION_PHYSDISK_OFFLINE
#define MPI2_RAID_ACTION_PHYSDISK_ONLINE
#define MPI2_RAID_ACTION_FAIL_PHYSDISK
#define MPI2_RAID_ACTION_ACTIVATE_VOLUME
#define MPI2_RAID_ACTION_DEVICE_FW_UPDATE_MODE
#define MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE
#define MPI2_RAID_ACTION_SET_VOLUME_NAME
#define MPI2_RAID_ACTION_SET_RAID_FUNCTION_RATE
#define MPI2_RAID_ACTION_ENABLE_FAILED_VOLUME
#define MPI2_RAID_ACTION_CREATE_HOT_SPARE
#define MPI2_RAID_ACTION_DELETE_HOT_SPARE
#define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED
#define MPI2_RAID_ACTION_START_RAID_FUNCTION
#define MPI2_RAID_ACTION_STOP_RAID_FUNCTION
#define MPI2_RAID_ACTION_COMPATIBILITY_CHECK
#define MPI2_RAID_ACTION_PHYSDISK_HIDDEN
#define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC
#define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC

/*RAID Volume Creation Structure */

/*
 *The following define can be customized for the targeted product.
 */
#ifndef MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS
#define MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS
#endif

pMpi2RaidVolumePhysDisk_t;

/*defines for the PhysDiskMap field */
#define MPI2_RAIDACTION_PHYSDISK_PRIMARY
#define MPI2_RAIDACTION_PHYSDISK_SECONDARY

pMpi2RaidVolumeCreationStruct_t;

/*use MPI2_RAID_VOL_TYPE_ defines from mpi2_cnfg.h for VolumeType */

/*defines for the VolumeCreationFlags field */
#define MPI2_RAID_VOL_CREATION_DEFAULT_SETTINGS
#define MPI2_RAID_VOL_CREATION_BACKGROUND_INIT
#define MPI2_RAID_VOL_CREATION_LOW_LEVEL_INIT
#define MPI2_RAID_VOL_CREATION_MIGRATE_DATA
/*The following is an obsolete define.
 *It must be shifted left 24 bits in order to set the proper bit.
 */
#define MPI2_RAID_VOL_CREATION_USE_DEFAULT_SETTINGS

/*RAID Online Capacity Expansion Structure */

pMpi2RaidOnlineCapacityExpansion_t;

/*RAID Compatibility Input Structure */

pMpi2RaidCompatibilityInputStruct_t;

/*defines for RAID Compatibility Structure Flags field */
#define MPI2_RAID_COMPAT_SOURCE_IS_VOLUME_FLAG
#define MPI2_RAID_COMPAT_REPORT_SOURCE_INFO_FLAG

/*RAID Volume Indicator Structure */

pMpi2RaidVolIndicator_t;

/*defines for RAID Volume Indicator Flags field */
#define MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID
#define MPI2_RAID_VOL_FLAGS_OP_MASK
#define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT
#define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION
#define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK
#define MPI2_RAID_VOL_FLAGS_OP_RESYNC
#define MPI2_RAID_VOL_FLAGS_OP_MDC

/*RAID Compatibility Result Structure */

pMpi2RaidCompatibilityResultStruct_t;

/*defines for RAID Compatibility Result Structure State field */
#define MPI2_RAID_COMPAT_STATE_COMPATIBLE
#define MPI2_RAID_COMPAT_STATE_NOT_COMPATIBLE

/*defines for RAID Compatibility Result Structure GenericAttributes field */
#define MPI2_RAID_COMPAT_GENATTRIB_4K_SECTOR

#define MPI2_RAID_COMPAT_GENATTRIB_MEDIA_MASK
#define MPI2_RAID_COMPAT_GENATTRIB_SOLID_STATE_DRIVE
#define MPI2_RAID_COMPAT_GENATTRIB_HARD_DISK_DRIVE

#define MPI2_RAID_COMPAT_GENATTRIB_PROTOCOL_MASK
#define MPI2_RAID_COMPAT_GENATTRIB_SAS_PROTOCOL
#define MPI2_RAID_COMPAT_GENATTRIB_SATA_PROTOCOL

/*RAID Action Reply ActionData union */
pMpi2RaidActionReplyData_t;

/*use MPI2_RAIDVOL0_SETTING_ defines from mpi2_cnfg.h for
 *MPI2_RAID_ACTION_CHANGE_VOL_WRITE_CACHE action */

/*RAID Action Reply Message */
pMpi2RaidActionReply_t;

#endif