aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/fsp/fsp-epow.c10
-rw-r--r--include/fsp.h6
2 files changed, 13 insertions, 3 deletions
diff --git a/hw/fsp/fsp-epow.c b/hw/fsp/fsp-epow.c
index 80142e5..c04880a 100644
--- a/hw/fsp/fsp-epow.c
+++ b/hw/fsp/fsp-epow.c
@@ -157,6 +157,16 @@ static void fsp_process_epow(struct fsp_msg *msg, int epow_type)
epow[2] = msg->data.bytes[2];
epow[3] = msg->data.bytes[3];
+ /*
+ * After receiving the FSP async message, HV needs to
+ * ask for the detailed panel status through corresponding
+ * mbox command. HV need not use the received details status
+ * as it does not have any thing more or new than what came
+ * along with the original FSP async message. But requesting
+ * for the detailed panel status exclussively is necessary as
+ * it forms a kind of handshaking with the FSP. Without this
+ * step, FSP wont be sending any new panel status messages.
+ */
switch(epow_type) {
case EPOW_NORMAL:
fsp_queue_msg(fsp_mkmsg(FSP_CMD_STATUS_REQ, 0), fsp_freemsg);
diff --git a/include/fsp.h b/include/fsp.h
index de9ae9e..9541a8b 100644
--- a/include/fsp.h
+++ b/include/fsp.h
@@ -358,9 +358,9 @@
#define FSP_CMD_GET_IPL_SIDE 0x1ce0600 /* HV->FSP: Get IPL side and speed */
#define FSP_CMD_SET_IPL_SIDE 0x1ce0780 /* HV->FSP: Set next IPL side */
#define FSP_CMD_PCI_POWER_CONF 0x1ce1b00 /* HV->FSP: Send PCIe list to FSP */
-#define FSP_CMD_STATUS_REQ 0x0ce4800 /* HV->FSP: Request normal panel status */
-#define FSP_CMD_STATUS_EX1_REQ 0x0ce4802 /* HV->FSP: Request extended 1 panel status */
-#define FSP_CMD_STATUS_EX2_REQ 0x0ce4803 /* HV->FSP: Request extended 2 panel status */
+#define FSP_CMD_STATUS_REQ 0x1ce4800 /* HV->FSP: Request normal panel status */
+#define FSP_CMD_STATUS_EX1_REQ 0x1ce4802 /* HV->FSP: Request extended 1 panel status */
+#define FSP_CMD_STATUS_EX2_REQ 0x1ce4803 /* HV->FSP: Request extended 2 panel status */
/*
* Class 0xD2