/* * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * Redistribution of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistribution in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of Sun Microsystems, Inc. or the names of * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * This software is provided "AS IS," without a warranty of any kind. * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. */ #ifndef IPMI_HPMFWUPG_H #define IPMI_HPMFWUPG_H #include #include int ipmi_hpmfwupg_main(struct ipmi_intf *, int, char **); /* Agent version */ #define HPMFWUPG_VERSION_MAJOR 1 #define HPMFWUPG_VERSION_MINOR 0 #define HPMFWUPG_VERSION_SUBMINOR 9 /* HPM.1 FIRMWARE UPGRADE COMMANDS (part of PICMG) */ #define HPMFWUPG_GET_TARGET_UPG_CAPABILITIES 0x2E #define HPMFWUPG_GET_COMPONENT_PROPERTIES 0x2F #define HPMFWUPG_ABORT_UPGRADE 0x30 #define HPMFWUPG_INITIATE_UPGRADE_ACTION 0x31 #define HPMFWUPG_UPLOAD_FIRMWARE_BLOCK 0x32 #define HPMFWUPG_FINISH_FIRMWARE_UPLOAD 0x33 #define HPMFWUPG_GET_UPGRADE_STATUS 0x34 #define HPMFWUPG_ACTIVATE_FIRMWARE 0x35 #define HPMFWUPG_QUERY_SELFTEST_RESULT 0x36 #define HPMFWUPG_QUERY_ROLLBACK_STATUS 0x37 #define HPMFWUPG_MANUAL_FIRMWARE_ROLLBACK 0x38 /* HPM.1 SPECIFIC COMPLETION CODES */ #define HPMFWUPG_ROLLBACK_COMPLETED 0x00 #define HPMFWUPG_COMMAND_IN_PROGRESS 0x80 #define HPMFWUPG_NOT_SUPPORTED 0x81 #define HPMFWUPG_SIZE_MISMATCH 0x81 #define HPMFWUPG_ROLLBACK_FAILURE 0x81 #define HPMFWUPG_INV_COMP_MASK 0x81 #define HPMFWUPG__ABORT_FAILURE 0x81 #define HPMFWUPG_INV_COMP_ID 0x82 #define HPMFWUPG_INT_CHECKSUM_ERROR 0x82 #define HPMFWUPG_INV_UPLOAD_MODE 0x82 #define HPMFWUPG_ROLLBACK_OVERRIDE 0x82 #define HPMFWUPG_INV_COMP_PROP 0x83 #define HPMFWUPG_FW_MISMATCH 0x83 #define HPMFWUPG_ROLLBACK_DENIED 0x83 /* * This error code is used as a temporary PATCH to * the latest Open ipmi driver. This PATCH * will be removed once a new Open IPMI driver is released. * (Buggy version = 39) */ #define ENABLE_OPENIPMI_V39_PATCH #ifdef ENABLE_OPENIPMI_V39_PATCH # define RETRY_COUNT_MAX 3 static int errorCount; # define HPMFWUPG_IS_RETRYABLE(error) \ ((((error==0x83)||(error==0x82)||(error==0x80)) && (errorCount++