coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
ipmi_ops.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef __IPMI_OPS_H
4 #define __IPMI_OPS_H
5 
6 #include <types.h>
7 #include "ipmi_kcs.h"
8 #define IPMI_BMC_RESET_WDG_TIMER 0x22
9 #define IPMI_BMC_SET_WDG_TIMER 0x24
10 #define IPMI_BMC_GET_WDG_TIMER 0x25
11 #define IPMI_BMC_GET_SYSTEM_GUID 0x37
12 
13 /* BMC watchdog timeout action */
19 };
20 /* BMC Watchdog timer */
21 struct ipmi_wdt_req {
28 
29 struct ipmi_wdt_rsp {
30  struct ipmi_rsp resp;
31  struct ipmi_wdt_req data;
33 } __packed;
34 
36  struct ipmi_rsp resp;
38 } __packed;
39 
43  uint8_t count; /* count to read, 1-based. */
44 } __packed;
45 
47  struct ipmi_rsp resp;
48  uint8_t count; /* count returned, 1-based. */
49  uint8_t data[CONFIG_IPMI_FRU_SINGLE_RW_SZ];
50 } __packed;
51 
60 };
61 
66 };
67 
70 };
71 
72 /* SEL Event Record */
76  union{
81 } __packed;
82 
84  struct ipmi_rsp resp;
86 } __packed;
87 
88 /* Platform Management FRU Information Storage Definition Spec. */
89 #define PRODUCT_MAN_TYPE_LEN_OFFSET 3
90 #define BOARD_MAN_TYPE_LEN_OFFSET 6
91 #define CHASSIS_TYPE_OFFSET 2
92 
102 } __packed;
103 
104 /* The fru_xxx_info only declares the strings that may be added to SMBIOS. */
111  char *asset_tag;
112  char *fru_file_id;
114  size_t custom_count; /* Number of custom fields */
115 };
116 
121  char *part_number;
122  char *fru_file_id;
123  char **board_custom;
124  size_t custom_count;
125 };
126 
132  size_t custom_count;
133 };
134 
135 struct fru_info_str {
137  struct fru_board_info board_info;
139 };
140 
141 enum typecode {
142  BINARY = 0,
143  BCD_PLUS = 1,
146 };
147 
148 enum fru_area {
154 };
155 /*
156  * Initialize and start BMC FRB2 watchdog timer with the
157  * provided timer countdown and action values.
158  * Returns CB_SUCCESS on success and CB_ERR if an error occurred
159  */
160 enum cb_err ipmi_init_and_start_bmc_wdt(const int port, uint16_t countdown,
161  uint8_t action);
162 /* Returns CB_SUCCESS on success and CB_ERR if an error occurred */
163 enum cb_err ipmi_stop_bmc_wdt(const int port);
164 
165 /* IPMI get BMC system GUID and store it to parameter uuid.
166  * Returns CB_SUCCESS on success and CB_ERR if an error occurred */
167 enum cb_err ipmi_get_system_guid(const int port, uint8_t *uuid);
168 
169 /* Read all FRU inventory areas string data into fru_info_str with
170  * the same FRU device id. */
171 void read_fru_areas(const int port, uint8_t id, uint16_t offset,
172  struct fru_info_str *fru_info_str);
173 
174 /* Read a particular FRU inventory area into fru_info_str. */
175 void read_fru_one_area(const int port, uint8_t id, uint16_t offset,
177 
178 /* Add a SEL record entry, returns CB_SUCCESS on success and CB_ERR
179  * if an error occurred */
180 enum cb_err ipmi_add_sel(const int port, struct sel_event_record *sel);
181 
182 /* Print all IPMI read FRU data */
184 #endif
cb_err
coreboot error codes
Definition: cb_err.h:15
static size_t offset
Definition: flashconsole.c:16
port
Definition: i915.h:29
enum cb_err ipmi_get_system_guid(const int port, uint8_t *uuid)
Definition: ipmi_ops.c:96
enum cb_err ipmi_add_sel(const int port, struct sel_event_record *sel)
Definition: ipmi_ops.c:121
void print_fru_areas(struct fru_info_str *fru_info_str)
Definition: ipmi_fru.c:511
typecode
Definition: ipmi_ops.h:141
@ ASCII_8BIT
Definition: ipmi_ops.h:145
@ BCD_PLUS
Definition: ipmi_ops.h:143
@ BINARY
Definition: ipmi_ops.h:142
@ ASCII_6BIT
Definition: ipmi_ops.h:144
struct ipmi_wdt_req __packed
ipmi_bmc_timeout_action_type
Definition: ipmi_ops.h:14
@ TIMEOUT_HARD_RESET
Definition: ipmi_ops.h:16
@ TIMEOUT_POWER_CYCLE
Definition: ipmi_ops.h:18
@ TIMEOUT_NO_ACTION
Definition: ipmi_ops.h:15
@ TIMEOUT_POWER_DOWN
Definition: ipmi_ops.h:17
fru_area
Definition: ipmi_ops.h:148
@ PRODUCT_INFO_AREA
Definition: ipmi_ops.h:152
@ INTERNAL_USE_AREA
Definition: ipmi_ops.h:149
@ BOARD_INFO_AREA
Definition: ipmi_ops.h:151
@ MULTIRECORD_INFO_AREA
Definition: ipmi_ops.h:153
@ CHASSIS_INFO_AREA
Definition: ipmi_ops.h:150
void read_fru_areas(const int port, uint8_t id, uint16_t offset, struct fru_info_str *fru_info_str)
Definition: ipmi_fru.c:422
enum cb_err ipmi_init_and_start_bmc_wdt(const int port, uint16_t countdown, uint8_t action)
Definition: ipmi_ops.c:8
enum cb_err ipmi_stop_bmc_wdt(const int port)
Definition: ipmi_ops.c:51
void read_fru_one_area(const int port, uint8_t id, uint16_t offset, struct fru_info_str *fru_info_str, enum fru_area fru_area)
Definition: ipmi_fru.c:462
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8
char * product_name
Definition: ipmi_ops.h:119
size_t custom_count
Definition: ipmi_ops.h:124
char * serial_number
Definition: ipmi_ops.h:120
char ** board_custom
Definition: ipmi_ops.h:123
char * part_number
Definition: ipmi_ops.h:121
char * fru_file_id
Definition: ipmi_ops.h:122
char * manufacturer
Definition: ipmi_ops.h:118
uint8_t chassis_type
Definition: ipmi_ops.h:128
size_t custom_count
Definition: ipmi_ops.h:132
char * chassis_partnumber
Definition: ipmi_ops.h:129
char ** chassis_custom
Definition: ipmi_ops.h:131
char * serial_number
Definition: ipmi_ops.h:130
struct fru_board_info board_info
Definition: ipmi_ops.h:137
struct fru_product_info prod_info
Definition: ipmi_ops.h:136
struct fru_chassis_info chassis_info
Definition: ipmi_ops.h:138
char * product_partnumber
Definition: ipmi_ops.h:108
char * manufacturer
Definition: ipmi_ops.h:106
char * asset_tag
Definition: ipmi_ops.h:111
size_t custom_count
Definition: ipmi_ops.h:114
char * product_name
Definition: ipmi_ops.h:107
char * serial_number
Definition: ipmi_ops.h:110
char * product_version
Definition: ipmi_ops.h:109
char ** product_custom
Definition: ipmi_ops.h:113
char * fru_file_id
Definition: ipmi_ops.h:112
struct ipmi_rsp resp
Definition: ipmi_ops.h:84
uint16_t record_id
Definition: ipmi_ops.h:85
uint8_t multirecord_area_offset
Definition: ipmi_ops.h:99
uint8_t format_version
Definition: ipmi_ops.h:94
uint8_t product_area_offset
Definition: ipmi_ops.h:98
uint8_t internal_use_area_offset
Definition: ipmi_ops.h:95
uint8_t chassis_area_offset
Definition: ipmi_ops.h:96
uint8_t board_area_offset
Definition: ipmi_ops.h:97
struct ipmi_rsp resp
Definition: ipmi_ops.h:36
struct ipmi_rsp resp
Definition: ipmi_ops.h:47
uint8_t data[CONFIG_IPMI_FRU_SINGLE_RW_SZ]
Definition: ipmi_ops.h:49
uint16_t initial_countdown_val
Definition: ipmi_ops.h:26
uint8_t timer_actions
Definition: ipmi_ops.h:23
uint8_t pretimeout_interval
Definition: ipmi_ops.h:24
uint8_t timer_use
Definition: ipmi_ops.h:22
uint8_t timer_use_expiration_flags_clr
Definition: ipmi_ops.h:25
uint16_t present_countdown_val
Definition: ipmi_ops.h:32
struct ipmi_wdt_req data
Definition: ipmi_ops.h:31
struct ipmi_rsp resp
Definition: ipmi_ops.h:30
uint8_t oem_defined[13]
Definition: ipmi_ops.h:69
uint8_t manf_id[3]
Definition: ipmi_ops.h:64
uint8_t oem_defined[6]
Definition: ipmi_ops.h:65
uint32_t timestamp
Definition: ipmi_ops.h:63
struct oem_ts_spec_sel_rec oem_ts_type
Definition: ipmi_ops.h:78
uint8_t record_type
Definition: ipmi_ops.h:75
union sel_event_record::@77 sel_type
uint16_t record_id
Definition: ipmi_ops.h:74
struct oem_nots_spec_sel_rec oem_nots_type
Definition: ipmi_ops.h:79
struct standard_spec_sel_rec standard_type
Definition: ipmi_ops.h:77
uint32_t timestamp
Definition: ipmi_ops.h:53
uint8_t event_data[3]
Definition: ipmi_ops.h:59
uint8_t event_dir_type
Definition: ipmi_ops.h:58