Move downstream package to upstream

Use upstream cpu interface

Signed-off-by: Zhikui Ren <zhikui.ren@intel.com>
Change-Id: I490482b212df4b73cbdedaba0bc5fefa229a5489
diff --git a/include/cpu.hpp b/include/cpu.hpp
index 22b6c08..5c8ca86 100644
--- a/include/cpu.hpp
+++ b/include/cpu.hpp
@@ -15,12 +15,11 @@
 */
 
 #pragma once
-#include "smbios.hpp"
+#include "smbios_mdrv2.hpp"
 
 #include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
+#include <xyz/openbmc_project/Inventory/Decorator/Revision/server.hpp>
 #include <xyz/openbmc_project/Inventory/Item/Cpu/server.hpp>
-#include <xyz/openbmc_project/Inventory/Item/server.hpp>
-#include <xyz/openbmc_project/State/Decorator/OperationalStatus/server.hpp>
 
 namespace phosphor
 {
@@ -28,11 +27,11 @@
 namespace smbios
 {
 
-// Definition follow smbios spec DSP0134 3.0.0
-static const std::map<uint8_t, const char*> processorTypeTable = {
-    {0x1, "Other"},          {0x2, "Unknown"},       {0x3, "Central Processor"},
-    {0x4, "Math Processor"}, {0x5, "DSP Processor"}, {0x6, "Video Processor"},
-};
+using rev =
+    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Revision;
+using asset =
+    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset;
+using processor = sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu;
 
 // Definition follow smbios spec DSP0134 3.0.0
 static const std::map<uint8_t, const char*> familyTable = {
@@ -71,34 +70,25 @@
 };
 
 // Definition follow smbios spec DSP0134 3.0.0
-static const std::array<std::string, 16> characteristicsTable{
-    "Reserved",
-    "Unknown",
-    "64-bit Capable",
-    "Multi-Core",
-    "Hardware Thread",
-    "Execute Protection",
-    "Enhanced Virtualization",
-    "Power/Performance Control",
-    "Reserved",
-    "Reserved",
-    "Reserved",
-    "Reserved",
-    "Reserved",
-    "Reserved",
-    "Reserved",
-    "Reserved"};
+static const std::array<std::optional<processor::Capability>, 16>
+    characteristicsTable{std::nullopt,
+                         std::nullopt,
+                         processor::Capability::Capable64bit,
+                         processor::Capability::MultiCore,
+                         processor::Capability::HardwareThread,
+                         processor::Capability::ExecuteProtection,
+                         processor::Capability::EnhancedVirtualization,
+                         processor::Capability::PowerPerformanceControl,
+                         std::nullopt,
+                         std::nullopt,
+                         std::nullopt,
+                         std::nullopt,
+                         std::nullopt,
+                         std::nullopt,
+                         std::nullopt,
+                         std::nullopt};
 
-class Cpu
-    : sdbusplus::server::object::object<
-          sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu>,
-      sdbusplus::server::object::object<
-          sdbusplus::xyz::openbmc_project::Inventory::server::Item>,
-      sdbusplus::server::object::object<
-          sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset>,
-      sdbusplus::server::object::object<
-          sdbusplus::xyz::openbmc_project::State::Decorator::server::
-              OperationalStatus>
+class Cpu : sdbusplus::server::object_t<processor, asset, rev>
 {
   public:
     Cpu() = delete;
@@ -110,37 +100,14 @@
 
     Cpu(sdbusplus::bus::bus& bus, const std::string& objPath,
         const uint8_t& cpuId, uint8_t* smbiosTableStorage) :
-        sdbusplus::server::object::object<
-            sdbusplus::xyz::openbmc_project::Inventory::Item::server::Cpu>(
-            bus, objPath.c_str()),
-        sdbusplus::server::object::object<
-            sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::
-                Asset>(bus, objPath.c_str()),
-        sdbusplus::server::object::object<
-            sdbusplus::xyz::openbmc_project::Inventory::server::Item>(
-            bus, objPath.c_str()),
-        sdbusplus::server::object::object<
-            sdbusplus::xyz::openbmc_project::State::Decorator::server::
-                OperationalStatus>(bus, objPath.c_str()),
+        sdbusplus::server::object_t<processor, asset, rev>(bus,
+                                                           objPath.c_str()),
         cpuNum(cpuId), storage(smbiosTableStorage)
     {
-        processorInfoUpdate();
+        infoUpdate();
     }
 
-    void processorInfoUpdate(void);
-
-    std::string processorSocket(std::string value) override;
-    std::string processorType(std::string value) override;
-    std::string processorFamily(std::string value) override;
-    std::string manufacturer(std::string value) override;
-    uint32_t processorId(uint32_t value) override;
-    std::string processorVersion(std::string value) override;
-    uint16_t processorMaxSpeed(uint16_t value) override;
-    std::string processorCharacteristics(std::string value) override;
-    uint16_t processorCoreCount(uint16_t value) override;
-    uint16_t processorThreadCount(uint16_t value) override;
-    bool present(bool value) override;
-    bool functional(bool value) override;
+    void infoUpdate(void);
 
   private:
     uint8_t cpuNum;
@@ -180,16 +147,14 @@
         uint16_t threadCount2;
     } __attribute__((packed));
 
-    void cpuSocket(const uint8_t positionNum, const uint8_t structLen,
-                   uint8_t* dataIn);
-    void cpuType(const uint8_t value);
-    void cpuFamily(const uint8_t value);
-    void cpuManufacturer(const uint8_t positionNum, const uint8_t structLen,
-                         uint8_t* dataIn);
-    void cpuVersion(const uint8_t positionNum, const uint8_t structLen,
-                    uint8_t* dataIn);
-    void cpuCharacteristics(const uint16_t value);
-    void cpuStatus(const uint8_t value);
+    void socket(const uint8_t positionNum, const uint8_t structLen,
+                uint8_t* dataIn);
+    void family(const uint8_t value);
+    void manufacturer(const uint8_t positionNum, const uint8_t structLen,
+                      uint8_t* dataIn);
+    void version(const uint8_t positionNum, const uint8_t structLen,
+                 uint8_t* dataIn);
+    void characteristics(const uint16_t value);
 };
 
 } // namespace smbios