Add MTM BMC Feature Control IPMI command

Certain features having security concerns needs to be enabled/disabled
only in manufacturing mode. Add a command to support the same for MCTP
feature.

In addition to starting or stopping a service, add an option to enable
or disable a service which will persist across AC cycles.

Request bytes:
Byte 1 – Supported features
     00h - MCTP
     01h to FFh - reserved (will be adding support for more features
as needed)
Byte 2 – Enable/Disable feature
    00h – Stops the given feature
    01h – Starts the given feature
    02h - Disables the given feature
    03h - Enables the given feature
    04h to FFh – reserved
Byte 3 - Custom feature arguments
  When byte 2 value is 00h:
    00h - MCTP over PCIe
    01h - MCTP over SMBus HSBP
    02h - MCTP over SMBus PCIe slot
    03h to FFh - reserved
Byte 4:5 – reserved

Tested:
Verified MCTP feature can be enabled/disabled as expected in MTM mode
the change will persist across AC cycles.

Signed-off-by: Arun P. Mohanan <arun.p.m@linux.intel.com>
Signed-off-by: Sumanth Bhat <sumanth.bhat@linux.intel.com>
Change-Id: I8f8be36ee3e0fd85cfb1e44599cd0db0a6a8d34a
diff --git a/include/manufacturingcommands.hpp b/include/manufacturingcommands.hpp
index e46d195..03ef9a9 100644
--- a/include/manufacturingcommands.hpp
+++ b/include/manufacturingcommands.hpp
@@ -149,6 +149,26 @@
     tamperingDetected
 };
 
+enum SupportedFeatureControls : uint8_t
+{
+    mctp = 0,
+};
+
+enum SupportedFeatureActions : uint8_t
+{
+    stop = 0,
+    start,
+    disable,
+    enable,
+};
+
+enum SupportedMCTPBindings : uint8_t
+{
+    mctpPCIe = 0,
+    mctpSMBusHSBP,
+    mctpSMBusPCIeSlot
+};
+
 struct SetSmSignalReq
 {
     SmSignalSet Signal;
diff --git a/include/oemcommands.hpp b/include/oemcommands.hpp
index 416cee4..6a5578a 100644
--- a/include/oemcommands.hpp
+++ b/include/oemcommands.hpp
@@ -68,6 +68,7 @@
 static constexpr Cmd cmdSetManufacturingData = 0xA1;
 static constexpr Cmd cmdGetManufacturingData = 0xA2;
 static constexpr Cmd cmdSetFITcLayout = 0xA3;
+static constexpr Cmd cmdMTMBMCFeatureControl = 0xA4;
 static constexpr Cmd cmdGetLEDStatus = 0xB0;
 static constexpr Cmd cmdControlBmcServices = 0xB1;
 static constexpr Cmd cmdGetBmcServiceStatus = 0xB2;