drivers/ipmi: Add IPMI get system GUID support
Tested on OCP Mono Lake. Change-Id: I541a23341ccce3d45239babb3f0a8a8c8542b226 Signed-off-by: Johnny Lin <johnny_lin@wiwynn.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/36842 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: David Hendricks <david.hendricks@gmail.com>
This commit is contained in:
parent
7aeeb9bf96
commit
53509cf15a
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include <console/console.h>
|
||||
#include "ipmi_ops.h"
|
||||
#include <string.h>
|
||||
|
||||
enum cb_err ipmi_init_and_start_bmc_wdt(const int port, uint16_t countdown,
|
||||
uint8_t action)
|
||||
|
@ -104,3 +105,28 @@ enum cb_err ipmi_stop_bmc_wdt(const int port)
|
|||
|
||||
return CB_SUCCESS;
|
||||
}
|
||||
|
||||
enum cb_err ipmi_get_system_guid(const int port, uint8_t *uuid)
|
||||
{
|
||||
int ret;
|
||||
struct ipmi_get_system_guid_rsp rsp;
|
||||
|
||||
if (uuid == NULL) {
|
||||
printk(BIOS_ERR, "%s failed, null pointer parameter\n",
|
||||
__func__);
|
||||
return CB_ERR;
|
||||
}
|
||||
|
||||
ret = ipmi_kcs_message(port, IPMI_NETFN_APPLICATION, 0x0,
|
||||
IPMI_BMC_GET_SYSTEM_GUID, NULL, 0,
|
||||
(unsigned char *) &rsp, sizeof(rsp));
|
||||
|
||||
if (ret < sizeof(struct ipmi_rsp) || rsp.resp.completion_code) {
|
||||
printk(BIOS_ERR, "IPMI: %s command failed (ret=%d resp=0x%x)\n",
|
||||
__func__, ret, rsp.resp.completion_code);
|
||||
return CB_ERR;
|
||||
}
|
||||
|
||||
memcpy(uuid, rsp.data, 16);
|
||||
return CB_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#define IPMI_BMC_RESET_WDG_TIMER 0x22
|
||||
#define IPMI_BMC_SET_WDG_TIMER 0x24
|
||||
#define IPMI_BMC_GET_WDG_TIMER 0x25
|
||||
#define IPMI_BMC_GET_SYSTEM_GUID 0x37
|
||||
|
||||
/* BMC watchdog timeout action */
|
||||
enum ipmi_bmc_timeout_action_type {
|
||||
|
@ -44,6 +45,10 @@ struct ipmi_wdt_rsp {
|
|||
uint16_t present_countdown_val;
|
||||
} __packed;
|
||||
|
||||
struct ipmi_get_system_guid_rsp {
|
||||
struct ipmi_rsp resp;
|
||||
uint8_t data[16];
|
||||
} __packed;
|
||||
/*
|
||||
* Initialize and start BMC FRB2 watchdog timer with the
|
||||
* provided timer countdown and action values.
|
||||
|
@ -54,4 +59,7 @@ enum cb_err ipmi_init_and_start_bmc_wdt(const int port, uint16_t countdown,
|
|||
/* Returns CB_SUCCESS on success and CB_ERR if an error occurred */
|
||||
enum cb_err ipmi_stop_bmc_wdt(const int port);
|
||||
|
||||
/* IPMI get BMC system GUID and store it to parameter uuid.
|
||||
* Returns CB_SUCCESS on success and CB_ERR if an error occurred */
|
||||
enum cb_err ipmi_get_system_guid(const int port, uint8_t *uuid);
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue