summaryrefslogtreecommitdiff
path: root/util/ipicmg.h
blob: 6f6554b24d2e955290f4ddea7f0eb0de1e92a23c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
/*
	(C) Kontron
 */

#ifndef _IPMI_PICMG_H_
#define _IPMI_PICMG_H_

#define  uint8_t   unsigned char
#define  uint16_t  unsigned short
#define  uint32_t  unsigned int

#define BMC_SA     0x20
#define PUBLIC_BUS 0
#define BMC_LUN    0

/* PICMG version */
#define PICMG_CPCI_MAJOR_VERSION                   1
#define PICMG_ATCA_MAJOR_VERSION                   2
#define PICMG_AMC_MAJOR_VERSION                    4

#define FRU_PICMGEXT_LINK_TYPE_BASE                     0x01
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET          0x02
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_INFINIBAND        0x03
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR              0x04
#define FRU_PICMGEXT_LINK_TYPE_PCIE                     0x05

#ifndef HAVE_FRU_PICMG_EXT
#define HAVE_FRU_PICMG_EXT
#pragma pack(1)
struct fru_picmgext_link_desc {
#ifndef WORDS_BIGENDIAN
        unsigned int desig_channel:6;
        unsigned int desig_if:2;
        unsigned int desig_port:4;
        unsigned int type:8;
        unsigned int ext:4;
        unsigned int grouping:8;
#else
        unsigned int grouping:8;
        unsigned int ext:4;
        unsigned int type:8;
        unsigned int desig_port:4;
        unsigned int desig_if:2;
        unsigned int desig_channel:6;
#endif
}; /* __attribute__ ((packed)); */
struct fru_picmgext_amc_link_info {
   unsigned char linkInfo[3];
}; /* __attribute__ ((packed)); */
#pragma pack()
#endif

#define OEM_PICMG  12634
//  IPMI_OEM_PICMG      = 12634,

#define FRU_PICMG_BACKPLANE_P2P                 0x04
#define FRU_PICMG_ADDRESS_TABLE                 0x10
#define FRU_PICMG_SHELF_POWER_DIST              0x11
#define FRU_PICMG_SHELF_ACTIVATION              0x12
#define FRU_PICMG_SHMC_IP_CONN                  0x13
#define FRU_PICMG_BOARD_P2P                     0x14
#define FRU_AMC_CURRENT                         0x16
#define FRU_AMC_ACTIVATION                      0x17
#define FRU_AMC_CARRIER_P2P                     0x18
#define FRU_AMC_P2P                             0x19
#define FRU_AMC_CARRIER_INFO                    0x1a
#define FRU_UTCA_FRU_INFO_TABLE                 0x20
#define FRU_UTCA_CARRIER_MNG_IP                 0x21
#define FRU_UTCA_CARRIER_INFO                   0x22
#define FRU_UTCA_CARRIER_LOCATION               0x23
#define FRU_UTCA_SHMC_IP_LINK                   0x24
#define FRU_UTCA_POWER_POLICY                   0x25
#define FRU_UTCA_ACTIVATION                     0x26
#define FRU_UTCA_PM_CAPABILTY                   0x27
#define FRU_UTCA_FAN_GEOGRAPHY                  0x28
#define FRU_UTCA_CLOCK_MAPPING                  0x29
#define FRU_UTCA_MSG_BRIDGE_POLICY              0x2A
#define FRU_UTCA_OEM_MODULE_DESC                0x2B
#define FRU_PICMG_CLK_CARRIER_P2P               0x2C
#define FRU_PICMG_CLK_CONFIG                    0x2D

#define FRU_PICMGEXT_LINK_TYPE_BASE                  0x01
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET       0x02
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_INFINIBAND     0x03
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR           0x04
#define FRU_PICMGEXT_LINK_TYPE_PCIE                  0x05
#define FRU_PICMGEXT_LINK_TYPE_BASE                  0x01
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_ETHERNET       0x02
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_INFINIBAND     0x03
#define FRU_PICMGEXT_LINK_TYPE_FABRIC_STAR           0x04
#define FRU_PICMGEXT_LINK_TYPE_PCIE                  0x05
#define FRU_PICMGEXT_AMC_LINK_TYPE_RESERVED 		0x00
#define FRU_PICMGEXT_AMC_LINK_TYPE_RESERVED1            0x01
#define FRU_PICMGEXT_AMC_LINK_TYPE_PCI_EXPRESS          0x02
#define FRU_PICMGEXT_AMC_LINK_TYPE_ADVANCED_SWITCHING1  0x03
#define FRU_PICMGEXT_AMC_LINK_TYPE_ADVANCED_SWITCHING2  0x04
#define FRU_PICMGEXT_AMC_LINK_TYPE_ETHERNET             0x05
#define FRU_PICMGEXT_AMC_LINK_TYPE_RAPIDIO              0x06
#define FRU_PICMGEXT_AMC_LINK_TYPE_STORAGE              0x07
#define FRU_PICMGEXT_OEM_SWFW 			     0x03
#define FRU_PICMGEXT_DESIGN_IF_BASE                  0x00
#define FRU_PICMGEXT_DESIGN_IF_FABRIC                0x01
#define FRU_PICMGEXT_DESIGN_IF_UPDATE_CHANNEL        0x02
#define FRU_PICMGEXT_DESIGN_IF_RESERVED              0x03


     #define FRU_PICMGEXT_AMC_LINK_TYPE_PCIE         0x02
     #define FRU_PICMGEXT_AMC_LINK_TYPE_PCIE_AS1     0x03
     #define FRU_PICMGEXT_AMC_LINK_TYPE_PCIE_AS2     0x04
     #define FRU_PICMGEXT_AMC_LINK_TYPE_ETHERNET     0x05
     #define FRU_PICMGEXT_AMC_LINK_TYPE_RAPIDIO      0x06
     #define FRU_PICMGEXT_AMC_LINK_TYPE_STORAGE      0x07

     #define AMC_LINK_TYPE_EXT_PCIE_G1_NSSC  0x00
     #define AMC_LINK_TYPE_EXT_PCIE_G1_SSC   0x01
     #define AMC_LINK_TYPE_EXT_PCIE_G2_NSSC  0x02
     #define AMC_LINK_TYPE_EXT_PCIE_G2_SSC   0x03
     #define AMC_LINK_TYPE_EXT_ETH_1000_BX   0x00
     #define AMC_LINK_TYPE_EXT_ETH_10G_XAUI  0x01
     #define AMC_LINK_TYPE_EXT_STORAGE_FC    0x00
     #define AMC_LINK_TYPE_EXT_STORAGE_SATA  0x01
     #define AMC_LINK_TYPE_EXT_STORAGE_SAS   0x02

#define IPMI_NETFN_PICMG         0x2C

/* 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

#pragma pack(1)
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__ ((packed));
#pragma pack()

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;

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;
};


#endif