summaryrefslogtreecommitdiffstats
path: root/sensorhandler.h
diff options
context:
space:
mode:
authorEmily Shaffer <emilyshaffer@google.com>2017-04-05 09:08:57 -0700
committerPatrick Williams <patrick@stwcx.xyz>2017-07-17 15:05:58 -0500
commitd06e0e7e5974af83cb4e424ae9af58e26fc41de8 (patch)
tree311c8cacff87623ed1027a4e6ff60d00c3617af2 /sensorhandler.h
parent6edc8a0406bc31fc24f46f15b4db6f7ed0453f8a (diff)
downloadphosphor-host-ipmid-d06e0e7e5974af83cb4e424ae9af58e26fc41de8.tar.gz
phosphor-host-ipmid-d06e0e7e5974af83cb4e424ae9af58e26fc41de8.zip
sensorhandler: add get_sdr_info
Change-Id: I13c82b62cec1c2f505fa81786fdc60cb38b2a636 Signed-off-by: Emily Shaffer <emilyshaffer@google.com> Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Diffstat (limited to 'sensorhandler.h')
-rw-r--r--sensorhandler.h49
1 files changed, 47 insertions, 2 deletions
diff --git a/sensorhandler.h b/sensorhandler.h
index cedb2e4..ef30779 100644
--- a/sensorhandler.h
+++ b/sensorhandler.h
@@ -6,9 +6,10 @@
// IPMI commands for net functions.
enum ipmi_netfn_sen_cmds
{
+ IPMI_CMD_GET_SDR_INFO = 0x20,
IPMI_CMD_GET_SENSOR_READING = 0x2D,
- IPMI_CMD_GET_SENSOR_TYPE = 0x2F,
- IPMI_CMD_SET_SENSOR = 0x30,
+ IPMI_CMD_GET_SENSOR_TYPE = 0x2F,
+ IPMI_CMD_SET_SENSOR = 0x30,
};
// Discrete sensor types.
@@ -53,4 +54,48 @@ struct SetSensorReadingReq
uint8_t eventData3;
} __attribute__((packed));
+/**
+ * Get SDR Info
+ */
+
+namespace get_sdr_info
+{
+namespace request
+{
+// Note: for some reason the ipmi_request_t appears to be the
+// raw value for this call.
+inline bool get_count(void* req)
+{
+ return (bool)((uint64_t)(req) & 1);
+}
+} // namespace request
+
+namespace response
+{
+#define SDR_INFO_RESP_SIZE 2
+inline void set_lun_present(int lun, uint8_t* resp)
+{
+ *resp |= 1 << lun;
+}
+inline void set_lun_not_present(int lun, uint8_t* resp)
+{
+ *resp &= ~(1 << lun);
+}
+inline void set_dynamic_population(uint8_t* resp)
+{
+ *resp |= 1 << 7;
+}
+inline void set_static_population(uint8_t* resp)
+{
+ *resp &= ~(1 << 7);
+}
+} // namespace response
+
+struct GetSdrInfoResp
+{
+ uint8_t count;
+ uint8_t luns_and_dynamic_population;
+};
+
+} // namespace get_sdr_info
#endif
OpenPOWER on IntegriCloud