Blame include/ipmitool/ipmi_mc.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_MC_H
Packit Service ed0f68
#define IPMI_MC_H
Packit Service ed0f68
Packit Service ed0f68
#include <ipmitool/ipmi.h>
Packit Service ed0f68
Packit Service ed0f68
#define BMC_GET_DEVICE_ID	0x01
Packit Service ed0f68
#define BMC_COLD_RESET		0x02
Packit Service ed0f68
#define BMC_WARM_RESET		0x03
Packit Service ed0f68
#define BMC_GET_SELF_TEST	0x04
Packit Service ed0f68
#define BMC_RESET_WATCHDOG_TIMER	0x22
Packit Service ed0f68
#define BMC_SET_WATCHDOG_TIMER	0x24
Packit Service ed0f68
#define BMC_GET_WATCHDOG_TIMER	0x25
Packit Service ed0f68
#define BMC_SET_GLOBAL_ENABLES	0x2e
Packit Service ed0f68
#define BMC_GET_GLOBAL_ENABLES	0x2f
Packit Service ed0f68
#define BMC_GET_GUID		0x37
Packit Service ed0f68
Packit Service ed0f68
int ipmi_mc_main(struct ipmi_intf *, int, char **);
Packit Service ed0f68
Packit Service ed0f68
/*
Packit Service ed0f68
 * Response data from IPM Get Device ID Command (IPMI rev 1.5, section 17.1)
Packit Service ed0f68
 * The following really apply to any IPM device, not just BMCs...
Packit Service ed0f68
 */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
#pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct ipm_devid_rsp {
Packit Service ed0f68
	uint8_t device_id;
Packit Service ed0f68
	uint8_t device_revision;
Packit Service ed0f68
	uint8_t fw_rev1;
Packit Service ed0f68
	uint8_t fw_rev2;
Packit Service ed0f68
	uint8_t ipmi_version;
Packit Service ed0f68
	uint8_t adtl_device_support;
Packit Service ed0f68
	uint8_t manufacturer_id[3];
Packit Service ed0f68
	uint8_t product_id[2];
Packit Service ed0f68
	uint8_t aux_fw_rev[4];
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 IPM_DEV_DEVICE_ID_SDR_MASK     (0x80)	/* 1 = provides SDRs      */
Packit Service ed0f68
#define IPM_DEV_DEVICE_ID_REV_MASK     (0x0F)	/* BCD-enoded             */
Packit Service ed0f68
Packit Service ed0f68
#define IPM_DEV_FWREV1_AVAIL_MASK      (0x80)	/* 0 = normal operation   */
Packit Service ed0f68
#define IPM_DEV_FWREV1_MAJOR_MASK      (0x3f)	/* Major rev, BCD-encoded */
Packit Service ed0f68
Packit Service ed0f68
#define IPM_DEV_IPMI_VER_MAJOR_MASK    (0x0F)	/* Major rev, BCD-encoded */
Packit Service ed0f68
#define IPM_DEV_IPMI_VER_MINOR_MASK    (0xF0)	/* Minor rev, BCD-encoded */
Packit Service ed0f68
#define IPM_DEV_IPMI_VER_MINOR_SHIFT   (4)	/* Minor rev shift        */
Packit Service ed0f68
#define IPM_DEV_IPMI_VERSION_MAJOR(x) \
Packit Service ed0f68
	(x & IPM_DEV_IPMI_VER_MAJOR_MASK)
Packit Service ed0f68
#define IPM_DEV_IPMI_VERSION_MINOR(x) \
Packit Service ed0f68
	((x & IPM_DEV_IPMI_VER_MINOR_MASK) >> IPM_DEV_IPMI_VER_MINOR_SHIFT)
Packit Service ed0f68
Packit Service ed0f68
#define IPM_DEV_MANUFACTURER_ID(x) \
Packit Service ed0f68
	((uint32_t) ((x[2] & 0x0F) << 16 | x[1] << 8 | x[0]))
Packit Service ed0f68
Packit Service ed0f68
#define IPM_DEV_ADTL_SUPPORT_BITS      (8)
Packit Service ed0f68
Packit Service ed0f68
/* Structure follow the IPMI V.2 Rev 1.0
Packit Service ed0f68
 * See Table 20-10 */
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
#pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct ipmi_guid_t {
Packit Service ed0f68
	uint32_t  time_low;	/* timestamp low field */
Packit Service ed0f68
	uint16_t  time_mid;	/* timestamp middle field */
Packit Service ed0f68
	uint16_t  time_hi_and_version; /* timestamp high field and version number */
Packit Service ed0f68
	uint8_t   clock_seq_hi_variant;/* clock sequence high field and variant */
Packit Service ed0f68
	uint8_t   clock_seq_low; /* clock sequence low field */
Packit Service ed0f68
	uint8_t   node[6];	/* node */
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
int _ipmi_mc_get_guid(struct ipmi_intf *, struct ipmi_guid_t *);
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
#pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct ipm_selftest_rsp {
Packit Service ed0f68
	unsigned char code;
Packit Service ed0f68
	unsigned char test;
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 IPM_SFT_CODE_OK			0x55
Packit Service ed0f68
#define IPM_SFT_CODE_NOT_IMPLEMENTED	0x56
Packit Service ed0f68
#define IPM_SFT_CODE_DEV_CORRUPTED	0x57
Packit Service ed0f68
#define IPM_SFT_CODE_FATAL_ERROR	0x58
Packit Service ed0f68
#define IPM_SFT_CODE_RESERVED		0xff
Packit Service ed0f68
Packit Service ed0f68
#define IPM_SELFTEST_SEL_ERROR		0x80
Packit Service ed0f68
#define IPM_SELFTEST_SDR_ERROR		0x40
Packit Service ed0f68
#define IPM_SELFTEST_FRU_ERROR		0x20
Packit Service ed0f68
#define IPM_SELFTEST_IPMB_ERROR		0x10
Packit Service ed0f68
#define IPM_SELFTEST_SDRR_EMPTY		0x08
Packit Service ed0f68
#define IPM_SELFTEST_INTERNAL_USE	0x04
Packit Service ed0f68
#define IPM_SELFTEST_FW_BOOTBLOCK	0x02
Packit Service ed0f68
#define IPM_SELFTEST_FW_CORRUPTED	0x01
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
#pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct ipm_get_watchdog_rsp {
Packit Service ed0f68
	unsigned char timer_use;
Packit Service ed0f68
	unsigned char timer_actions;
Packit Service ed0f68
	unsigned char pre_timeout;
Packit Service ed0f68
	unsigned char timer_use_exp;
Packit Service ed0f68
	unsigned char initial_countdown_lsb;
Packit Service ed0f68
	unsigned char initial_countdown_msb;
Packit Service ed0f68
	unsigned char present_countdown_lsb;
Packit Service ed0f68
	unsigned char present_countdown_msb;
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 IPM_WATCHDOG_RESET_ERROR	0x80
Packit Service ed0f68
Packit Service ed0f68
#define IPM_WATCHDOG_BIOS_FRB2		0x01
Packit Service ed0f68
#define IPM_WATCHDOG_BIOS_POST		0x02
Packit Service ed0f68
#define IPM_WATCHDOG_OS_LOAD		0x03
Packit Service ed0f68
#define IPM_WATCHDOG_SMS_OS		0x04
Packit Service ed0f68
#define IPM_WATCHDOG_OEM		0x05
Packit Service ed0f68
Packit Service ed0f68
#define IPM_WATCHDOG_NO_ACTION		0x00
Packit Service ed0f68
#define IPM_WATCHDOG_HARD_RESET		0x01
Packit Service ed0f68
#define IPM_WATCHDOG_POWER_DOWN		0x02
Packit Service ed0f68
#define IPM_WATCHDOG_POWER_CYCLE	0x03
Packit Service ed0f68
Packit Service ed0f68
#define IPM_WATCHDOG_CLEAR_OEM		0x20
Packit Service ed0f68
#define IPM_WATCHDOG_CLEAR_SMS_OS	0x10
Packit Service ed0f68
#define IPM_WATCHDOG_CLEAR_OS_LOAD	0x08
Packit Service ed0f68
#define IPM_WATCHDOG_CLEAR_BIOS_POST	0x04
Packit Service ed0f68
#define IPM_WATCHDOG_CLEAR_BIOS_FRB2	0x02
Packit Service ed0f68
Packit Service ed0f68
/* IPMI 2.0 command for system information*/
Packit Service ed0f68
#define IPMI_SET_SYS_INFO                  0x58
Packit Service ed0f68
#define IPMI_GET_SYS_INFO                  0x59
Packit Service ed0f68
#define IPMI_SYSINFO_SET0_SIZE             14
Packit Service ed0f68
#define IPMI_SYSINFO_SETN_SIZE             16
Packit Service ed0f68
Packit Service ed0f68
/* System Information "Parameter selector" values: */
Packit Service ed0f68
#define IPMI_SYSINFO_SET_STATE		0x00
Packit Service ed0f68
#define IPMI_SYSINFO_SYSTEM_FW_VERSION	0x01
Packit Service ed0f68
#define IPMI_SYSINFO_HOSTNAME		0x02
Packit Service ed0f68
#define IPMI_SYSINFO_PRIMARY_OS_NAME	0x03
Packit Service ed0f68
#define IPMI_SYSINFO_OS_NAME		0x04
Packit Service ed0f68
#define IPMI_SYSINFO_DELL_OS_VERSION	0xe4
Packit Service ed0f68
#define IPMI_SYSINFO_DELL_URL		0xde
Packit Service ed0f68
#define IPMI_SYSINFO_DELL_IPV6_COUNT    0xe6
Packit Service ed0f68
#define IPMI_SYSINFO_DELL_IPV6_DESTADDR 0xf0
Packit Service ed0f68
Packit Service ed0f68
int ipmi_mc_getsysinfo(struct ipmi_intf * intf, int param, int block, int set, 
Packit Service ed0f68
		    int len, void *buffer);
Packit Service ed0f68
int ipmi_mc_setsysinfo(struct ipmi_intf * intf, int len, void *buffer);
Packit Service ed0f68
Packit Service ed0f68
#endif				/*IPMI_MC_H */