diff options
author | Chris Austen <austenc@us.ibm.com> | 2015-10-13 12:12:39 -0500 |
---|---|---|
committer | Chris Austen <austenc@us.ibm.com> | 2015-10-13 12:46:15 -0500 |
commit | 1810bec9fc678fa49d3f282347220a6ecf046070 (patch) | |
tree | 8ad5cf75fef6802fb1c3ea3d8c0ef89a7d7a7cab | |
parent | b4f5b9270bb88899ffeb5b81a17f0def0e559d86 (diff) | |
download | phosphor-host-ipmid-1810bec9fc678fa49d3f282347220a6ecf046070.tar.gz phosphor-host-ipmid-1810bec9fc678fa49d3f282347220a6ecf046070.zip |
Add support for the the dcmi package
-rwxr-xr-x | Makefile | 1 | ||||
-rw-r--r-- | dcmihandler.C | 40 | ||||
-rw-r--r-- | dcmihandler.h | 12 | ||||
-rwxr-xr-x | ipmid-api.h | 1 |
4 files changed, 54 insertions, 0 deletions
@@ -5,6 +5,7 @@ DAEMON_OBJ = $(DAEMON).o LIB_APP_OBJ = apphandler.o \ sensorhandler.o \ storagehandler.o \ + dcmihandler.o LIB_APP = libapphandler.so diff --git a/dcmihandler.C b/dcmihandler.C new file mode 100644 index 0000000..fafebdc --- /dev/null +++ b/dcmihandler.C @@ -0,0 +1,40 @@ +#include "dcmihandler.h" +#include "ipmid-api.h" +#include <stdio.h> +#include <string.h> +#include <stdint.h> + +void register_netfn_dcmi_functions() __attribute__((constructor)); + + +ipmi_ret_t ipmi_dcmi_get_power_limit(ipmi_netfn_t netfn, ipmi_cmd_t cmd, + ipmi_request_t request, ipmi_response_t response, + ipmi_data_len_t data_len, ipmi_context_t context) +{ + ipmi_ret_t rc = IPMI_DCMI_CC_NO_ACTIVE_POWER_LIMIT; + + // dcmi-v1-5-rev-spec.pdf 6.6.2. + // This is good enough for OpenBMC support for OpenPOWER based systems + // TODO research if more is needed + uint8_t data_response[] = { 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01}; + + + + printf("IPMI DCMI_GET_POWER_LEVEL\n"); + + memcpy(response, data_response, sizeof(data_response)); + *data_len = sizeof(data_response); + + return rc; +} + + +void register_netfn_dcmi_functions() +{ + printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_POWER); + ipmi_register_callback(NETFUN_GRPEXT, IPMI_CMD_DCMI_GET_POWER, NULL, ipmi_dcmi_get_power_limit); + return; +} +// 956379
\ No newline at end of file diff --git a/dcmihandler.h b/dcmihandler.h new file mode 100644 index 0000000..5fc0c10 --- /dev/null +++ b/dcmihandler.h @@ -0,0 +1,12 @@ +#ifndef __HOST_IPMI_DCMI_HANDLER_H__ +#define __HOST_IPMI_DCMI_HANDLER_H__ + +// IPMI commands for net functions. +enum ipmi_netfn_sen_cmds +{ + // Get capability bits + IPMI_CMD_DCMI_GET_POWER = 0x03, + +}; + +#endif diff --git a/ipmid-api.h b/ipmid-api.h index 615e0d5..caf18e8 100755 --- a/ipmid-api.h +++ b/ipmid-api.h @@ -85,6 +85,7 @@ enum ipmi_netfn_wild_card_cmd enum ipmi_return_codes { IPMI_CC_OK = 0x00, + IPMI_DCMI_CC_NO_ACTIVE_POWER_LIMIT = 0x80, IPMI_CC_INVALID = 0xC1 }; |