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:
committed by
Patrick Georgi
parent
7aeeb9bf96
commit
53509cf15a
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
#include "ipmi_ops.h"
|
#include "ipmi_ops.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
enum cb_err ipmi_init_and_start_bmc_wdt(const int port, uint16_t countdown,
|
enum cb_err ipmi_init_and_start_bmc_wdt(const int port, uint16_t countdown,
|
||||||
uint8_t action)
|
uint8_t action)
|
||||||
@@ -104,3 +105,28 @@ enum cb_err ipmi_stop_bmc_wdt(const int port)
|
|||||||
|
|
||||||
return CB_SUCCESS;
|
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_RESET_WDG_TIMER 0x22
|
||||||
#define IPMI_BMC_SET_WDG_TIMER 0x24
|
#define IPMI_BMC_SET_WDG_TIMER 0x24
|
||||||
#define IPMI_BMC_GET_WDG_TIMER 0x25
|
#define IPMI_BMC_GET_WDG_TIMER 0x25
|
||||||
|
#define IPMI_BMC_GET_SYSTEM_GUID 0x37
|
||||||
|
|
||||||
/* BMC watchdog timeout action */
|
/* BMC watchdog timeout action */
|
||||||
enum ipmi_bmc_timeout_action_type {
|
enum ipmi_bmc_timeout_action_type {
|
||||||
@@ -44,6 +45,10 @@ struct ipmi_wdt_rsp {
|
|||||||
uint16_t present_countdown_val;
|
uint16_t present_countdown_val;
|
||||||
} __packed;
|
} __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
|
* Initialize and start BMC FRB2 watchdog timer with the
|
||||||
* provided timer countdown and action values.
|
* 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 */
|
/* Returns CB_SUCCESS on success and CB_ERR if an error occurred */
|
||||||
enum cb_err ipmi_stop_bmc_wdt(const int port);
|
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
|
#endif
|
||||||
|
Reference in New Issue
Block a user