Blame include/ipmitool/ipmi_picmg.h

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