Blame include/ipmitool/ipmi_hpmfwupg.h

Packit Service ed0f68
/*
Packit Service ed0f68
 * Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Redistribution and use in source and binary forms, with or without
Packit Service ed0f68
 * modification, are permitted provided that the following conditions
Packit Service ed0f68
 * are met:
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Redistribution of source code must retain the above copyright
Packit Service ed0f68
 * notice, this list of conditions and the following disclaimer.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Redistribution in binary form must reproduce the above copyright
Packit Service ed0f68
 * notice, this list of conditions and the following disclaimer in the
Packit Service ed0f68
 * documentation and/or other materials provided with the distribution.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * Neither the name of Sun Microsystems, Inc. or the names of
Packit Service ed0f68
 * contributors may be used to endorse or promote products derived
Packit Service ed0f68
 * from this software without specific prior written permission.
Packit Service ed0f68
 * 
Packit Service ed0f68
 * This software is provided "AS IS," without a warranty of any kind.
Packit Service ed0f68
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
Packit Service ed0f68
 * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
Packit Service ed0f68
 * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
Packit Service ed0f68
 * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
Packit Service ed0f68
 * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
Packit Service ed0f68
 * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL
Packit Service ed0f68
 * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
Packit Service ed0f68
 * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
Packit Service ed0f68
 * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
Packit Service ed0f68
 * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
Packit Service ed0f68
 * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
Packit Service ed0f68
 */
Packit Service ed0f68
Packit Service ed0f68
#ifndef IPMI_HPMFWUPG_H
Packit Service ed0f68
#define IPMI_HPMFWUPG_H
Packit Service ed0f68
Packit Service ed0f68
#include <inttypes.h>
Packit Service ed0f68
#include <ipmitool/ipmi.h>
Packit Service ed0f68
Packit Service ed0f68
int ipmi_hpmfwupg_main(struct ipmi_intf *, int, char **);
Packit Service ed0f68
Packit Service ed0f68
/* Agent version */
Packit Service ed0f68
#define HPMFWUPG_VERSION_MAJOR    1
Packit Service ed0f68
#define HPMFWUPG_VERSION_MINOR    0
Packit Service ed0f68
#define HPMFWUPG_VERSION_SUBMINOR 9
Packit Service ed0f68
Packit Service ed0f68
/* HPM.1 FIRMWARE UPGRADE COMMANDS (part of PICMG) */
Packit Service ed0f68
#define HPMFWUPG_GET_TARGET_UPG_CAPABILITIES 0x2E
Packit Service ed0f68
#define HPMFWUPG_GET_COMPONENT_PROPERTIES    0x2F
Packit Service ed0f68
#define HPMFWUPG_ABORT_UPGRADE               0x30
Packit Service ed0f68
#define HPMFWUPG_INITIATE_UPGRADE_ACTION     0x31
Packit Service ed0f68
#define HPMFWUPG_UPLOAD_FIRMWARE_BLOCK       0x32
Packit Service ed0f68
#define HPMFWUPG_FINISH_FIRMWARE_UPLOAD      0x33
Packit Service ed0f68
#define HPMFWUPG_GET_UPGRADE_STATUS          0x34
Packit Service ed0f68
#define HPMFWUPG_ACTIVATE_FIRMWARE           0x35
Packit Service ed0f68
#define HPMFWUPG_QUERY_SELFTEST_RESULT       0x36
Packit Service ed0f68
#define HPMFWUPG_QUERY_ROLLBACK_STATUS       0x37
Packit Service ed0f68
#define HPMFWUPG_MANUAL_FIRMWARE_ROLLBACK    0x38
Packit Service ed0f68
Packit Service ed0f68
/*  HPM.1 SPECIFIC COMPLETION CODES */
Packit Service ed0f68
#define HPMFWUPG_ROLLBACK_COMPLETED   0x00
Packit Service ed0f68
#define HPMFWUPG_COMMAND_IN_PROGRESS  0x80
Packit Service ed0f68
#define HPMFWUPG_NOT_SUPPORTED        0x81
Packit Service ed0f68
#define HPMFWUPG_SIZE_MISMATCH        0x81
Packit Service ed0f68
#define HPMFWUPG_ROLLBACK_FAILURE     0x81
Packit Service ed0f68
#define HPMFWUPG_INV_COMP_MASK        0x81
Packit Service ed0f68
#define HPMFWUPG__ABORT_FAILURE       0x81
Packit Service ed0f68
#define HPMFWUPG_INV_COMP_ID          0x82
Packit Service ed0f68
#define HPMFWUPG_INT_CHECKSUM_ERROR   0x82
Packit Service ed0f68
#define HPMFWUPG_INV_UPLOAD_MODE      0x82
Packit Service ed0f68
#define HPMFWUPG_ROLLBACK_OVERRIDE    0x82
Packit Service ed0f68
#define HPMFWUPG_INV_COMP_PROP        0x83
Packit Service ed0f68
#define HPMFWUPG_FW_MISMATCH          0x83
Packit Service ed0f68
#define HPMFWUPG_ROLLBACK_DENIED      0x83
Packit Service ed0f68
Packit Service ed0f68
/*
Packit Service ed0f68
 * This error code is used as a temporary PATCH to
Packit Service ed0f68
 * the latest Open ipmi driver.  This PATCH
Packit Service ed0f68
 * will be removed once a new Open IPMI driver is released.
Packit Service ed0f68
 * (Buggy version = 39)
Packit Service ed0f68
 */
Packit Service ed0f68
#define ENABLE_OPENIPMI_V39_PATCH
Packit Service ed0f68
Packit Service ed0f68
#ifdef ENABLE_OPENIPMI_V39_PATCH
Packit Service ed0f68
# define RETRY_COUNT_MAX 3
Packit Service ed0f68
static int errorCount;
Packit Service ed0f68
# define HPMFWUPG_IS_RETRYABLE(error)                                          \
Packit Service ed0f68
 ((((error==0x83)||(error==0x82)||(error==0x80)) && (errorCount++
Packit Service ed0f68
#else
Packit Service ed0f68
# define HPMFWUPG_IS_RETRYABLE(error) FALSE
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* HPM FIRMWARE UPGRADE GENERAL DEFINITIONS */
Packit Service ed0f68
#define HPMFWUPG_PICMG_IDENTIFIER         0
Packit Service ed0f68
#define HPMFWUPG_VERSION_SIZE             6
Packit Service ed0f68
#define HPMFWUPG_DESC_STRING_LENGTH       12
Packit Service ed0f68
#define HPMFWUPG_DEFAULT_INACCESS_TIMEOUT 60 /* sec */
Packit Service ed0f68
#define HPMFWUPG_DEFAULT_UPGRADE_TIMEOUT  60 /* sec */
Packit Service ed0f68
#define HPMFWUPG_MD5_SIGNATURE_LENGTH     16
Packit Service ed0f68
Packit Service ed0f68
/* Component IDs */
Packit Service ed0f68
typedef enum eHpmfwupgComponentId {
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_0 = 0,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_1,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_2,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_3,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_4,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_5,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_6,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_7,
Packit Service ed0f68
	HPMFWUPG_COMPONENT_ID_MAX
Packit Service ed0f68
} tHpmfwupgComponentId;
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgComponentBitMask {
Packit Service ed0f68
	union {
Packit Service ed0f68
		unsigned char byte;
Packit Service ed0f68
		struct {
Packit Service ed0f68
#ifdef WORDS_BIGENDIAN
Packit Service ed0f68
			unsigned char component7 : 1;
Packit Service ed0f68
			unsigned char component6 : 1;
Packit Service ed0f68
			unsigned char component5 : 1;
Packit Service ed0f68
			unsigned char component4 : 1;
Packit Service ed0f68
			unsigned char component3 : 1;
Packit Service ed0f68
			unsigned char component2 : 1;
Packit Service ed0f68
			unsigned char component1 : 1;
Packit Service ed0f68
			unsigned char component0 : 1;
Packit Service ed0f68
#else
Packit Service ed0f68
			unsigned char component0 : 1;
Packit Service ed0f68
			unsigned char component1 : 1;
Packit Service ed0f68
			unsigned char component2 : 1;
Packit Service ed0f68
			unsigned char component3 : 1;
Packit Service ed0f68
			unsigned char component4 : 1;
Packit Service ed0f68
			unsigned char component5 : 1;
Packit Service ed0f68
			unsigned char component6 : 1;
Packit Service ed0f68
			unsigned char component7 : 1;
Packit Service ed0f68
#endif
Packit Service ed0f68
		} ATTRIBUTE_PACKING bitField;
Packit Service ed0f68
	} ATTRIBUTE_PACKING ComponentBits;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
static const int HPMFWUPG_SUCCESS = 0;
Packit Service ed0f68
static const int HPMFWUPG_ERROR = -1;
Packit Service ed0f68
/* Upload firmware specific error codes */
Packit Service ed0f68
static const int HPMFWUPG_UPLOAD_BLOCK_LENGTH = 1;
Packit Service ed0f68
static const int HPMFWUPG_UPLOAD_RETRY = 2;
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
/* TARGET UPGRADE CAPABILITIES DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetTargetUpgCapabilitiesReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetTargetUpgCapabilitiesResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char hpmVersion;
Packit Service ed0f68
	union {
Packit Service ed0f68
		unsigned char byte;
Packit Service ed0f68
		struct {
Packit Service ed0f68
#if WORDS_BIGENDIAN
Packit Service ed0f68
			unsigned char fwUpgUndesirable    : 1;
Packit Service ed0f68
			unsigned char autRollbackOverride : 1;
Packit Service ed0f68
			unsigned char ipmcDegradedDurinUpg: 1;
Packit Service ed0f68
			unsigned char deferActivation     : 1;
Packit Service ed0f68
			unsigned char servAffectDuringUpg : 1;
Packit Service ed0f68
			unsigned char manualRollback      : 1;
Packit Service ed0f68
			unsigned char autRollback         : 1;
Packit Service ed0f68
			unsigned char ipmcSelftestCap     : 1;
Packit Service ed0f68
#else
Packit Service ed0f68
			unsigned char ipmcSelftestCap     : 1;
Packit Service ed0f68
			unsigned char autRollback         : 1;
Packit Service ed0f68
			unsigned char manualRollback      : 1;
Packit Service ed0f68
			unsigned char servAffectDuringUpg : 1;
Packit Service ed0f68
			unsigned char deferActivation     : 1;
Packit Service ed0f68
			unsigned char ipmcDegradedDurinUpg: 1;
Packit Service ed0f68
			unsigned char autRollbackOverride : 1;
Packit Service ed0f68
			unsigned char fwUpgUndesirable    : 1;
Packit Service ed0f68
#endif
Packit Service ed0f68
		} ATTRIBUTE_PACKING bitField;
Packit Service ed0f68
	} ATTRIBUTE_PACKING GlobalCapabilities;
Packit Service ed0f68
	unsigned char upgradeTimeout;
Packit Service ed0f68
	unsigned char selftestTimeout;
Packit Service ed0f68
	unsigned char rollbackTimeout;
Packit Service ed0f68
	unsigned char inaccessTimeout;
Packit Service ed0f68
	struct HpmfwupgComponentBitMask componentsPresent;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetTargetUpgCapabilitiesCtx {
Packit Service ed0f68
	struct HpmfwupgGetTargetUpgCapabilitiesReq req;
Packit Service ed0f68
	struct HpmfwupgGetTargetUpgCapabilitiesResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* COMPONENT PROPERTIES DEFINITIONS */
Packit Service ed0f68
typedef enum eHpmfwupgCompPropertiesSelect {
Packit Service ed0f68
	HPMFWUPG_COMP_GEN_PROPERTIES = 0,
Packit Service ed0f68
	HPMFWUPG_COMP_CURRENT_VERSION,
Packit Service ed0f68
	HPMFWUPG_COMP_DESCRIPTION_STRING,
Packit Service ed0f68
	HPMFWUPG_COMP_ROLLBACK_FIRMWARE_VERSION,
Packit Service ed0f68
	HPMFWUPG_COMP_DEFERRED_FIRMWARE_VERSION,
Packit Service ed0f68
	HPMFWUPG_COMP_RESERVED,
Packit Service ed0f68
	HPMFWUPG_COMP_OEM_PROPERTIES = 192
Packit Service ed0f68
} tHpmfwupgCompPropertiesSelect;
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetComponentPropertiesReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char componentId;
Packit Service ed0f68
	unsigned char selector;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetGeneralPropResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	union {
Packit Service ed0f68
		unsigned char byte;
Packit Service ed0f68
		struct {
Packit Service ed0f68
#if WORDS_BIGENDIAN
Packit Service ed0f68
			unsigned char reserved           : 2;
Packit Service ed0f68
			unsigned char payloadColdReset   : 1;
Packit Service ed0f68
			unsigned char deferredActivation : 1;
Packit Service ed0f68
			unsigned char comparisonSupport  : 1;
Packit Service ed0f68
			unsigned char preparationSupport : 1;
Packit Service ed0f68
			unsigned char rollbackBackup     : 2;
Packit Service ed0f68
#else
Packit Service ed0f68
			unsigned char rollbackBackup     : 2;
Packit Service ed0f68
			unsigned char preparationSupport : 1;
Packit Service ed0f68
			unsigned char comparisonSupport  : 1;
Packit Service ed0f68
			unsigned char deferredActivation : 1;
Packit Service ed0f68
			unsigned char payloadColdReset   : 1;
Packit Service ed0f68
			unsigned char reserved           : 2;
Packit Service ed0f68
#endif
Packit Service ed0f68
		} ATTRIBUTE_PACKING bitfield;
Packit Service ed0f68
	} ATTRIBUTE_PACKING GeneralCompProperties;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetCurrentVersionResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char currentVersion[HPMFWUPG_VERSION_SIZE];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetDescStringResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	char descString[HPMFWUPG_DESC_STRING_LENGTH];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetRollbackFwVersionResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char rollbackFwVersion[HPMFWUPG_VERSION_SIZE];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetDeferredFwVersionResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char deferredFwVersion[HPMFWUPG_VERSION_SIZE];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* GetComponentProperties - OEM properties (192) */
Packit Service ed0f68
#define HPMFWUPG_OEM_LENGTH 4
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetOemProperties {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char oemRspData[HPMFWUPG_OEM_LENGTH];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetComponentPropertiesResp {
Packit Service ed0f68
	union {
Packit Service ed0f68
		struct HpmfwupgGetGeneralPropResp       generalPropResp;
Packit Service ed0f68
		struct HpmfwupgGetCurrentVersionResp    currentVersionResp;
Packit Service ed0f68
		struct HpmfwupgGetDescStringResp        descStringResp;
Packit Service ed0f68
		struct HpmfwupgGetRollbackFwVersionResp rollbackFwVersionResp;
Packit Service ed0f68
		struct HpmfwupgGetDeferredFwVersionResp deferredFwVersionResp;
Packit Service ed0f68
		struct HpmfwupgGetOemProperties         oemProperties;
Packit Service ed0f68
	} ATTRIBUTE_PACKING Response;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetComponentPropertiesCtx {
Packit Service ed0f68
	struct HpmfwupgGetComponentPropertiesReq  req;
Packit Service ed0f68
	struct HpmfwupgGetComponentPropertiesResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/*  ABORT UPGRADE DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgAbortUpgradeReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgAbortUpgradeResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgAbortUpgradeCtx {
Packit Service ed0f68
	struct HpmfwupgAbortUpgradeReq  req;
Packit Service ed0f68
	struct HpmfwupgAbortUpgradeResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* UPGRADE ACTIONS DEFINITIONS */
Packit Service ed0f68
typedef enum eHpmfwupgUpgradeAction {
Packit Service ed0f68
	HPMFWUPG_UPGRADE_ACTION_BACKUP = 0,
Packit Service ed0f68
	HPMFWUPG_UPGRADE_ACTION_PREPARE,
Packit Service ed0f68
	HPMFWUPG_UPGRADE_ACTION_UPGRADE,
Packit Service ed0f68
	HPMFWUPG_UPGRADE_ACTION_COMPARE,
Packit Service ed0f68
	HPMFWUPG_UPGRADE_ACTION_INVALID = 0xff
Packit Service ed0f68
}  tHpmfwupgUpgradeAction;
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgInitiateUpgradeActionReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	struct HpmfwupgComponentBitMask componentsMask;
Packit Service ed0f68
	unsigned char upgradeAction;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgInitiateUpgradeActionResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgInitiateUpgradeActionCtx {
Packit Service ed0f68
	struct HpmfwupgInitiateUpgradeActionReq  req;
Packit Service ed0f68
	struct HpmfwupgInitiateUpgradeActionResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* UPLOAD FIRMWARE BLOCK DEFINITIONS */
Packit Service ed0f68
#define HPMFWUPG_SEND_DATA_COUNT_KCS   30
Packit Service ed0f68
#define HPMFWUPG_SEND_DATA_COUNT_LAN   25
Packit Service ed0f68
#define HPMFWUPG_SEND_DATA_COUNT_IPMB  26
Packit Service ed0f68
#define HPMFWUPG_SEND_DATA_COUNT_IPMBL 26
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgUploadFirmwareBlockReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char blockNumber;
Packit Service ed0f68
	unsigned char data[];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgUploadFirmwareBlockResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgUploadFirmwareBlockCtx {
Packit Service ed0f68
	struct HpmfwupgUploadFirmwareBlockReq * req;
Packit Service ed0f68
	struct HpmfwupgUploadFirmwareBlockResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* FINISH FIRMWARE UPLOAD DEFINITIONS */
Packit Service ed0f68
#define HPMFWUPG_IMAGE_SIZE_BYTE_COUNT 4
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgFinishFirmwareUploadReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char componentId;
Packit Service ed0f68
	unsigned char imageLength[HPMFWUPG_IMAGE_SIZE_BYTE_COUNT];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgFinishFirmwareUploadResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgFinishFirmwareUploadCtx {
Packit Service ed0f68
	struct HpmfwupgFinishFirmwareUploadReq  req;
Packit Service ed0f68
	struct HpmfwupgFinishFirmwareUploadResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* ACTIVATE FW DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgActivateFirmwareReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char rollback_override;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgActivateFirmwareResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgActivateFirmwareCtx {
Packit Service ed0f68
	struct HpmfwupgActivateFirmwareReq  req;
Packit Service ed0f68
	struct HpmfwupgActivateFirmwareResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* GET UPGRADE STATUS DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetUpgradeStatusReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetUpgradeStatusResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char cmdInProcess;
Packit Service ed0f68
	unsigned char lastCmdCompCode;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgGetUpgradeStatusCtx {
Packit Service ed0f68
	struct HpmfwupgGetUpgradeStatusReq  req;
Packit Service ed0f68
	struct HpmfwupgGetUpgradeStatusResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* MANUAL FW ROLLBACK DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgManualFirmwareRollbackReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgManualFirmwareRollbackResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgManualFirmwareRollbackCtx {
Packit Service ed0f68
	struct HpmfwupgManualFirmwareRollbackReq  req;
Packit Service ed0f68
	struct HpmfwupgManualFirmwareRollbackResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* QUERY ROLLBACK STATUS DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgQueryRollbackStatusReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgQueryRollbackStatusResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	struct HpmfwupgComponentBitMask rollbackComp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgQueryRollbackStatusCtx {
Packit Service ed0f68
	struct HpmfwupgQueryRollbackStatusReq  req;
Packit Service ed0f68
	struct HpmfwupgQueryRollbackStatusResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* QUERY SELF TEST RESULT DEFINITIONS */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct  HpmfwupgQuerySelftestResultReq {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct  HpmfwupgQuerySelftestResultResp {
Packit Service ed0f68
	unsigned char picmgId;
Packit Service ed0f68
	unsigned char result1;
Packit Service ed0f68
	unsigned char result2;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgQuerySelftestResultCtx {
Packit Service ed0f68
	struct HpmfwupgQuerySelftestResultReq  req;
Packit Service ed0f68
	struct HpmfwupgQuerySelftestResultResp resp;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
/* HPM.1 IMAGE DEFINITIONS */
Packit Service ed0f68
#define HPMFWUPG_HEADER_SIGNATURE_LENGTH 8
Packit Service ed0f68
#define HPMFWUPG_MANUFATURER_ID_LENGTH   3
Packit Service ed0f68
#define HPMFWUPG_PRODUCT_ID_LENGTH       2
Packit Service ed0f68
#define HPMFWUPG_TIME_LENGTH             4
Packit Service ed0f68
#define HPMFWUPG_TIMEOUT_LENGTH          1
Packit Service ed0f68
#define HPMFWUPG_COMP_REVISION_LENGTH    2
Packit Service ed0f68
#define HPMFWUPG_FIRM_REVISION_LENGTH    6
Packit Service ed0f68
#define HPMFWUPG_IMAGE_HEADER_VERSION    0
Packit Service ed0f68
#define HPMFWUPG_IMAGE_SIGNATURE "PICMGFWU"
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
#pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgImageHeader {
Packit Service ed0f68
	char           signature[HPMFWUPG_HEADER_SIGNATURE_LENGTH];
Packit Service ed0f68
	unsigned char  formatVersion;
Packit Service ed0f68
	unsigned char  deviceId;
Packit Service ed0f68
	unsigned char  manId[HPMFWUPG_MANUFATURER_ID_LENGTH];
Packit Service ed0f68
	unsigned char  prodId[HPMFWUPG_PRODUCT_ID_LENGTH];
Packit Service ed0f68
	unsigned char  time[HPMFWUPG_TIME_LENGTH];
Packit Service ed0f68
	union {
Packit Service ed0f68
		struct {
Packit Service ed0f68
#if WORDS_BIGENDIAN
Packit Service ed0f68
			unsigned char imageSelfTest   : 1;
Packit Service ed0f68
			unsigned char autRollback     : 1;
Packit Service ed0f68
			unsigned char manRollback     : 1;
Packit Service ed0f68
			unsigned char servAffected    : 1;
Packit Service ed0f68
			unsigned char reserved        : 4;
Packit Service ed0f68
#else
Packit Service ed0f68
			unsigned char reserved        : 4;
Packit Service ed0f68
			unsigned char servAffected    : 1;
Packit Service ed0f68
			unsigned char manRollback     : 1;
Packit Service ed0f68
			unsigned char autRollback     : 1;
Packit Service ed0f68
			unsigned char imageSelfTest   : 1;
Packit Service ed0f68
#endif
Packit Service ed0f68
		} ATTRIBUTE_PACKING bitField;
Packit Service ed0f68
		unsigned char byte;
Packit Service ed0f68
	}ATTRIBUTE_PACKING imageCapabilities;
Packit Service ed0f68
	struct HpmfwupgComponentBitMask components;
Packit Service ed0f68
	unsigned char  selfTestTimeout;
Packit Service ed0f68
	unsigned char  rollbackTimeout;
Packit Service ed0f68
	unsigned char  inaccessTimeout;
Packit Service ed0f68
	unsigned char  compRevision[HPMFWUPG_COMP_REVISION_LENGTH];
Packit Service ed0f68
	unsigned char  firmRevision[HPMFWUPG_FIRM_REVISION_LENGTH];
Packit Service ed0f68
	unsigned short oemDataLength;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#define HPMFWUPG_DESCRIPTION_LENGTH   21
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgActionRecord {
Packit Service ed0f68
	unsigned char  actionType;
Packit Service ed0f68
	struct HpmfwupgComponentBitMask components;
Packit Service ed0f68
	unsigned char  checksum;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#define HPMFWUPG_FIRMWARE_SIZE_LENGTH 4
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgFirmwareImage {
Packit Service ed0f68
	unsigned char version[HPMFWUPG_FIRM_REVISION_LENGTH];
Packit Service ed0f68
	char          desc[HPMFWUPG_DESCRIPTION_LENGTH];
Packit Service ed0f68
	unsigned char length[HPMFWUPG_FIRMWARE_SIZE_LENGTH];
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct HpmfwupgUpgradeCtx {
Packit Service ed0f68
	struct HpmfwupgComponentBitMask compUpdateMask;
Packit Service ed0f68
	unsigned int   imageSize;
Packit Service ed0f68
	unsigned char* pImageData;
Packit Service ed0f68
	unsigned char  componentId;
Packit Service ed0f68
	struct HpmfwupgGetTargetUpgCapabilitiesResp targetCap;
Packit Service ed0f68
	struct HpmfwupgGetGeneralPropResp genCompProp[HPMFWUPG_COMPONENT_ID_MAX];
Packit Service ed0f68
	struct ipm_devid_rsp devId;
Packit Service ed0f68
} ATTRIBUTE_PACKING;
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
# pragma pack(0)
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
typedef enum eHpmfwupgActionType {
Packit Service ed0f68
	HPMFWUPG_ACTION_BACKUP_COMPONENTS = 0,
Packit Service ed0f68
	HPMFWUPG_ACTION_PREPARE_COMPONENTS,
Packit Service ed0f68
	HPMFWUPG_ACTION_UPLOAD_FIRMWARE,
Packit Service ed0f68
	HPMFWUPG_ACTION_RESERVED = 0xFF
Packit Service ed0f68
} tHpmfwupgActionType;
Packit Service ed0f68
Packit Service ed0f68
/* FUNCTIONS PROTOTYPES */
Packit Service ed0f68
#define HPMFWUPG_MAJORMINOR_VERSION_SIZE        2
Packit Service ed0f68
Packit Service ed0f68
/* Options added for user to check the version and to view both the FILE and
Packit Service ed0f68
 * TARGET Version
Packit Service ed0f68
 */
Packit Service ed0f68
#define VIEW_MODE                     0x01
Packit Service ed0f68
#define DEBUG_MODE                    0x02
Packit Service ed0f68
#define FORCE_MODE                    0x04
Packit Service ed0f68
#define COMPARE_MODE                  0x08
Packit Service ed0f68
Packit Service ed0f68
typedef struct _VERSIONINFO {
Packit Service ed0f68
	unsigned char componentId;
Packit Service ed0f68
	unsigned char targetMajor;
Packit Service ed0f68
	unsigned char targetMinor;
Packit Service ed0f68
	unsigned char targetAux[4];
Packit Service ed0f68
	unsigned char rollbackMajor;
Packit Service ed0f68
	unsigned char rollbackMinor;
Packit Service ed0f68
	unsigned char rollbackAux[4];
Packit Service ed0f68
	unsigned char deferredMajor;
Packit Service ed0f68
	unsigned char deferredMinor;
Packit Service ed0f68
	unsigned char deferredAux[4];
Packit Service ed0f68
	unsigned char imageMajor;
Packit Service ed0f68
	unsigned char imageMinor;
Packit Service ed0f68
	unsigned char imageAux[4];
Packit Service ed0f68
	unsigned char coldResetRequired;
Packit Service ed0f68
	unsigned char rollbackSupported;
Packit Service ed0f68
	unsigned char deferredActivationSupported;
Packit Service ed0f68
	char descString[HPMFWUPG_DESC_STRING_LENGTH + 1];
Packit Service ed0f68
}VERSIONINFO, *PVERSIONINFO;
Packit Service ed0f68
Packit Service ed0f68
VERSIONINFO gVersionInfo[HPMFWUPG_COMPONENT_ID_MAX];
Packit Service ed0f68
Packit Service ed0f68
#define TARGET_VER (0x01)
Packit Service ed0f68
#define ROLLBACK_VER (0x02)
Packit Service ed0f68
#define IMAGE_VER (0x04)
Packit Service ed0f68
Packit Service ed0f68
#endif /* IPMI_KFWUM_H */