aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/ipmi/ocp/ipmi_ocp.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/ipmi/ocp/ipmi_ocp.h')
-rw-r--r--src/drivers/ipmi/ocp/ipmi_ocp.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/drivers/ipmi/ocp/ipmi_ocp.h b/src/drivers/ipmi/ocp/ipmi_ocp.h
index 96b0086298..0c9f452db5 100644
--- a/src/drivers/ipmi/ocp/ipmi_ocp.h
+++ b/src/drivers/ipmi/ocp/ipmi_ocp.h
@@ -7,6 +7,12 @@
#include <cpu/x86/name.h>
#include "drivers/ipmi/ipmi_kcs.h"
+#define IPMI_NETFN_OEM 0x30
+#define IPMI_OEM_SET_PPIN 0x77
+#define IPMI_BMC_SET_POST_START 0x73
+#define IPMI_OEM_SET_BIOS_BOOT_ORDER 0x52
+#define IPMI_OEM_GET_BIOS_BOOT_ORDER 0x53
+
#define IPMI_NETFN_OEM_COMMON 0x36
#define IPMI_BMC_SET_PROCESSOR_INFORMATION 0x10
#define IPMI_BMC_GET_PROCESSOR_INFORMATION 0x11
@@ -14,6 +20,12 @@
#define MSR_CORE_THREAD_COUNT 0x35
#define MSR_PLATFORM_INFO 0xce
+#define CMOS_BIT (1 << 1)
+#define VALID_BIT (1 << 7)
+#define CLEAR_CMOS_AND_VALID_BIT(x) ((x) &= ~(CMOS_BIT | VALID_BIT))
+#define SET_CMOS_AND_VALID_BIT(x) ((x) |= (CMOS_BIT | VALID_BIT))
+#define IS_CMOS_AND_VALID_BIT(x) ((x)&CMOS_BIT && (x)&VALID_BIT)
+
struct ipmi_processor_info_req {
uint8_t manufacturer_id[3];
uint8_t index;
@@ -33,4 +45,22 @@ struct ipmi_processor_info_param2_req {
char revision[2];
} __packed;
+struct ppin_req {
+ uint32_t cpu0_lo;
+ uint32_t cpu0_hi;
+ uint32_t cpu1_lo;
+ uint32_t cpu1_hi;
+} __packed;
+
+struct boot_order {
+ uint8_t boot_mode;
+ uint8_t boot_dev0;
+ uint8_t boot_dev1;
+ uint8_t boot_dev2;
+ uint8_t boot_dev3;
+ uint8_t boot_dev4;
+} __packed;
+
+enum cb_err ipmi_set_post_start(const int port);
+enum cb_err ipmi_set_cmos_clear(void);
#endif