Blame include/ipmitool/ipmi_picmg.h

Packit Service ed0f68
Packit Service ed0f68
/*
Packit Service ed0f68
	(C) Kontron
Packit Service ed0f68
 */
Packit Service ed0f68
Packit Service ed0f68
#ifndef _IPMI_PICMG_H_
Packit Service ed0f68
#define _IPMI_PICMG_H_
Packit Service ed0f68
Packit Service ed0f68
#include <ipmitool/ipmi.h>
Packit Service ed0f68
Packit Service ed0f68
/* PICMG version */
Packit Service ed0f68
#define PICMG_CPCI_MAJOR_VERSION                   1
Packit Service ed0f68
#define PICMG_ATCA_MAJOR_VERSION                   2
Packit Service ed0f68
#define PICMG_AMC_MAJOR_VERSION                    4
Packit Service ed0f68
Packit Service ed0f68
/* PICMG commands */
Packit Service ed0f68
#define PICMG_GET_PICMG_PROPERTIES_CMD             0x00
Packit Service ed0f68
#define PICMG_GET_ADDRESS_INFO_CMD                 0x01
Packit Service ed0f68
#define PICMG_GET_SHELF_ADDRESS_INFO_CMD           0x02
Packit Service ed0f68
#define PICMG_SET_SHELF_ADDRESS_INFO_CMD           0x03
Packit Service ed0f68
#define PICMG_FRU_CONTROL_CMD                      0x04
Packit Service ed0f68
#define PICMG_GET_FRU_LED_PROPERTIES_CMD           0x05
Packit Service ed0f68
#define PICMG_GET_LED_COLOR_CAPABILITIES_CMD       0x06
Packit Service ed0f68
#define PICMG_SET_FRU_LED_STATE_CMD                0x07
Packit Service ed0f68
#define PICMG_GET_FRU_LED_STATE_CMD                0x08
Packit Service ed0f68
#define PICMG_SET_IPMB_CMD                         0x09
Packit Service ed0f68
#define PICMG_SET_FRU_POLICY_CMD                   0x0A
Packit Service ed0f68
#define PICMG_GET_FRU_POLICY_CMD                   0x0B
Packit Service ed0f68
#define PICMG_FRU_ACTIVATION_CMD                   0x0C
Packit Service ed0f68
#define PICMG_GET_DEVICE_LOCATOR_RECORD_CMD        0x0D
Packit Service ed0f68
#define PICMG_SET_PORT_STATE_CMD                   0x0E
Packit Service ed0f68
#define PICMG_GET_PORT_STATE_CMD                   0x0F
Packit Service ed0f68
#define PICMG_COMPUTE_POWER_PROPERTIES_CMD         0x10
Packit Service ed0f68
#define PICMG_SET_POWER_LEVEL_CMD                  0x11
Packit Service ed0f68
#define PICMG_GET_POWER_LEVEL_CMD                  0x12
Packit Service ed0f68
#define PICMG_RENEGOTIATE_POWER_CMD                0x13
Packit Service ed0f68
#define PICMG_GET_FAN_SPEED_PROPERTIES_CMD         0x14
Packit Service ed0f68
#define PICMG_SET_FAN_LEVEL_CMD                    0x15
Packit Service ed0f68
#define PICMG_GET_FAN_LEVEL_CMD                    0x16
Packit Service ed0f68
#define PICMG_BUSED_RESOURCE_CMD                   0x17
Packit Service ed0f68
Packit Service ed0f68
/* AMC.0 commands */
Packit Service ed0f68
#define PICMG_AMC_SET_PORT_STATE_CMD			0x19
Packit Service ed0f68
#define PICMG_AMC_GET_PORT_STATE_CMD			0x1A
Packit Service ed0f68
/* AMC.0 R2.0 commands */
Packit Service ed0f68
#define PICMG_AMC_SET_CLK_STATE_CMD				0x2C
Packit Service ed0f68
#define PICMG_AMC_GET_CLK_STATE_CMD				0x2D
Packit Service ed0f68
Packit Service ed0f68
/* Site Types */
Packit Service ed0f68
#define PICMG_ATCA_BOARD                           0x00
Packit Service ed0f68
#define PICMG_POWER_ENTRY                          0x01
Packit Service ed0f68
#define PICMG_SHELF_FRU                            0x02
Packit Service ed0f68
#define PICMG_DEDICATED_SHMC                       0x03
Packit Service ed0f68
#define PICMG_FAN_TRAY                             0x04
Packit Service ed0f68
#define PICMG_FAN_FILTER_TRAY                      0x05
Packit Service ed0f68
#define PICMG_ALARM                                0x06
Packit Service ed0f68
#define PICMG_AMC                                  0x07
Packit Service ed0f68
#define PICMG_PMC                                  0x08
Packit Service ed0f68
#define PICMG_RTM                                  0x09
Packit Service ed0f68
Packit Service ed0f68
#ifdef HAVE_PRAGMA_PACK
Packit Service ed0f68
#pragma pack(1)
Packit Service ed0f68
#endif
Packit Service ed0f68
struct picmg_set_fru_activation_cmd {
Packit Service ed0f68
   unsigned char  picmg_id;      /* always 0*/
Packit Service ed0f68
   unsigned char  fru_id;        /* threshold setting mask */
Packit Service ed0f68
   unsigned char  fru_state;     /* fru activation/deactivation */
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 picmg_busres_board_cmd_types {
Packit Service ed0f68
	PICMG_BUSRES_BOARD_CMD_QUERY =0,
Packit Service ed0f68
	PICMG_BUSRES_BOARD_CMD_RELEASE,
Packit Service ed0f68
	PICMG_BUSRES_BOARD_CMD_FORCE,
Packit Service ed0f68
	PICMG_BUSRES_BOARD_CMD_BUS_FREE
Packit Service ed0f68
} t_picmg_busres_board_cmd_types ;
Packit Service ed0f68
Packit Service ed0f68
typedef enum picmg_busres_shmc_cmd_types {
Packit Service ed0f68
	PICMG_BUSRES_SHMC_CMD_REQUEST =0,
Packit Service ed0f68
	PICMG_BUSRES_SHMC_CMD_RELINQUISH,
Packit Service ed0f68
	PICMG_BUSRES_SHMC_CMD_NOTIFY
Packit Service ed0f68
} t_picmg_busres_shmc_cmd_types ;
Packit Service ed0f68
Packit Service ed0f68
typedef enum picmg_busres_resource_id {
Packit Service ed0f68
	PICMG_BUSRES_METAL_TEST_BUS_1=0,
Packit Service ed0f68
	PICMG_BUSRES_METAL_TEST_BUS_2,
Packit Service ed0f68
	PICMG_BUSRES_SYNC_CLOCK_GROUP_1,
Packit Service ed0f68
	PICMG_BUSRES_SYNC_CLOCK_GROUP_2,
Packit Service ed0f68
	PICMG_BUSRES_SYNC_CLOCK_GROUP_3
Packit Service ed0f68
} t_picmg_busres_resource_id;
Packit Service ed0f68
Packit Service ed0f68
/* the LED color capabilities */
Packit Service ed0f68
static const char* led_color_str[] __attribute__((unused)) = {
Packit Service ed0f68
   "reserved",
Packit Service ed0f68
   "BLUE",
Packit Service ed0f68
   "RED",
Packit Service ed0f68
   "GREEN",
Packit Service ed0f68
   "AMBER",
Packit Service ed0f68
   "ORANGE",
Packit Service ed0f68
   "WHITE",
Packit Service ed0f68
   "reserved"
Packit Service ed0f68
};
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
static const char* amc_link_type_str[] __attribute__((unused)) = {
Packit Service ed0f68
   "RESERVED",
Packit Service ed0f68
   "RESERVED1",
Packit Service ed0f68
   "PCI EXPRESS",
Packit Service ed0f68
   "ADVANCED SWITCHING1",
Packit Service ed0f68
   "ADVANCED SWITCHING2",
Packit Service ed0f68
   "ETHERNET",
Packit Service ed0f68
   "RAPIDIO",
Packit Service ed0f68
   "STORAGE",
Packit Service ed0f68
};
Packit Service ed0f68
Packit Service ed0f68
static const char* amc_link_type_ext_str[][16] __attribute__((unused)) = {
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_RESERVED */
Packit Service ed0f68
	{
Packit Service ed0f68
		"", "", "", "", "", "", "", "",   "", "", "", "", "", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_RESERVED1 */
Packit Service ed0f68
	{
Packit Service ed0f68
		"", "", "", "", "", "", "", "",   "", "", "", "", "", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_PCI_EXPRESS */
Packit Service ed0f68
	{
Packit Service ed0f68
		"Gen 1 - NSSC",
Packit Service ed0f68
		"Gen 1 - SSC",
Packit Service ed0f68
		"Gen 2 - NSSC",
Packit Service ed0f68
		"Gen 2 - SSC",
Packit Service ed0f68
		"", "", "", "",
Packit Service ed0f68
		"", "", "", "", 
Packit Service ed0f68
		"", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_ADVANCED_SWITCHING1 */
Packit Service ed0f68
	{
Packit Service ed0f68
		"Gen 1 - NSSC",
Packit Service ed0f68
		"Gen 1 - SSC",
Packit Service ed0f68
		"Gen 2 - NSSC",
Packit Service ed0f68
		"Gen 2 - SSC",
Packit Service ed0f68
		"", "", "", "",
Packit Service ed0f68
		"", "", "", "", 
Packit Service ed0f68
		"", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_ADVANCED_SWITCHING2 */
Packit Service ed0f68
	{
Packit Service ed0f68
		"Gen 1 - NSSC",
Packit Service ed0f68
		"Gen 1 - SSC",
Packit Service ed0f68
		"Gen 2 - NSSC",
Packit Service ed0f68
		"Gen 2 - SSC",
Packit Service ed0f68
		"", "", "", "",
Packit Service ed0f68
		"", "", "", "", 
Packit Service ed0f68
		"", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_ETHERNET */
Packit Service ed0f68
	{
Packit Service ed0f68
   		"1000BASE-BX (SerDES Gigabit)",
Packit Service ed0f68
   		"10GBASE-BX410 Gigabit XAUI",
Packit Service ed0f68
   		"", "", 
Packit Service ed0f68
   		"", "", "", "",
Packit Service ed0f68
		"", "", "", "", 
Packit Service ed0f68
		"", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_RAPIDIO */
Packit Service ed0f68
	{
Packit Service ed0f68
   		"1.25 Gbaud transmission rate",
Packit Service ed0f68
   		"2.5 Gbaud transmission rate",
Packit Service ed0f68
   		"3.125 Gbaud transmission rate",
Packit Service ed0f68
   		"", "", "", "", "",
Packit Service ed0f68
		"", "", "", "", "", "", "", ""
Packit Service ed0f68
	},
Packit Service ed0f68
	/* FRU_PICMGEXT_AMC_LINK_TYPE_STORAGE */
Packit Service ed0f68
	{
Packit Service ed0f68
   		"Fibre Channel", 
Packit Service ed0f68
   		"Serial ATA", 
Packit Service ed0f68
   		"Serial Attached SCSI",
Packit Service ed0f68
   		"", "", "", "", "",
Packit Service ed0f68
		"", "", "", "", "", "", "", ""
Packit Service ed0f68
	}
Packit Service ed0f68
};
Packit Service ed0f68
Packit Service ed0f68
struct sAmcPortState {
Packit Service ed0f68
#ifndef WORDS_BIGENDIAN
Packit Service ed0f68
   unsigned short lane0       :  1;
Packit Service ed0f68
   unsigned short lane1       :  1;
Packit Service ed0f68
   unsigned short lane2       :  1;
Packit Service ed0f68
   unsigned short lane3       :  1;
Packit Service ed0f68
   unsigned short type        :  8;
Packit Service ed0f68
   unsigned short type_ext    :  4;
Packit Service ed0f68
   unsigned char  group_id    :  8;
Packit Service ed0f68
#else
Packit Service ed0f68
   unsigned char  group_id    :  8;
Packit Service ed0f68
   unsigned short type_ext    :  4;
Packit Service ed0f68
   unsigned short type        :  8;
Packit Service ed0f68
   unsigned short lane3       :  1;
Packit Service ed0f68
   unsigned short lane2       :  1;
Packit Service ed0f68
   unsigned short lane1       :  1;
Packit Service ed0f68
   unsigned short lane0       :  1;
Packit Service ed0f68
#endif
Packit Service ed0f68
Packit Service ed0f68
   unsigned char state;
Packit Service ed0f68
};
Packit Service ed0f68
Packit Service ed0f68
Packit Service ed0f68
int ipmi_picmg_main (struct ipmi_intf * intf, int argc, char ** argv);
Packit Service ed0f68
uint8_t picmg_discover(struct ipmi_intf *intf);
Packit Service ed0f68
uint8_t ipmi_picmg_ipmb_address(struct ipmi_intf *intf);
Packit Service ed0f68
Packit Service ed0f68
#endif