summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c')
-rw-r--r--meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c b/meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c
index bc215f60b..ff9498696 100644
--- a/meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c
+++ b/meta-openbmc-mods/meta-common/recipes-utilities/lpc-cmds/files/lpc_cmds.c
@@ -342,6 +342,27 @@ static void SIOSetBMCSCIEvent(unsigned short set)
close(fd);
}
+static void SIOSetBMCSMIEvent(unsigned short set)
+{
+ int fd;
+ struct sio_ioctl_data sio_data;
+
+ fd = open(SIO_DEVICE_NAME, O_RDWR | O_CLOEXEC);
+ if (fd < 0) {
+ printf("Error open %s\n", SIO_DEVICE_NAME);
+ exit(1);
+ }
+
+ sio_data.sio_cmd = SIO_SET_BMC_SMI_EVENT;
+ sio_data.param = set;
+
+ if (ioctl(fd, SIO_IOC_COMMAND, &sio_data) == 0)
+ printf("BMC SMI event is %s\n",
+ sio_data.data ? "set" : "cleared");
+
+ close(fd);
+}
+
/*********************************************************************************/
#if SUPPORT_MAILBOX
@@ -413,6 +434,8 @@ static void usage(void)
"\tlpc_cmds sio get_pfail_status\n"
"\tlpc_cmds sio set_bmc_sci_event\n"
"\tlpc_cmds sio clear_bmc_sci_event\n"
+ "\tlpc_cmds sio set_bmc_smi_event\n"
+ "\tlpc_cmds sio clear_bmc_smi_event\n"
"\n"
#if SUPPORT_KCS_ADDR_CMD
"\tlpc_cmds kcs [1 ~ 4] (getaddr / setaddr / quiet)\n"
@@ -472,6 +495,10 @@ int main(int argc, char** argv)
SIOSetBMCSCIEvent(1);
else if (strcmp(argv[2], "clear_bmc_sci_event") == 0)
SIOSetBMCSCIEvent(0);
+ else if (strcmp(argv[2], "set_bmc_smi_event") == 0)
+ SIOSetBMCSMIEvent(1);
+ else if (strcmp(argv[2], "clear_bmc_smi_event") == 0)
+ SIOSetBMCSMIEvent(0);
} else if (strcmp(cmd, "kcs") == 0) {
int ifc;