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