Update d-bus interfaces for dimm

Add new properties to support more persistent memory
module specific information.

Tested:
      Successful build and verified changes in
      server.hpp and server.cpp.

Signed-off-by: Nirmal Patel <nirmal.patel@intel.com>
Change-Id: I1c5a367e565020fdb707b4e3400c58850755256d
diff --git a/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml b/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml
index bb19dc5..a7aaa14 100644
--- a/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml
+++ b/xyz/openbmc_project/Inventory/Item/Dimm.interface.yaml
@@ -43,12 +43,127 @@
       description: >
           CAS Latency (CL) values are supported. The CAS latency is the delay
           between the time at which the column address and the column address
-          strobe signal are presented to the memory module and the time at which
-          the corresponding data is made available by the memory module.
+          strobe signal are presented to the memory module and the time at
+          which the corresponding data is made available by the memory module.
     - name: RevisionCode
       type: uint16
       description: >
           Revision code provided by the individual manufacturer.
+    - name: FormFactor
+      type: enum[self.FormFactor]
+      description: >
+          The base module type of the memory.
+    - name: MemoryTotalWidth
+      type: uint16
+      description: >
+          The bus width, in bits.
+    - name: AllowedSpeedsMHz
+      type: array[uint16]
+      description: >
+          Speeds supported by this memory.
+    - name: MaxAveragePowerLimitmW
+      type: array[uint32]
+      description: >
+          Set of maximum power budgets supported by the memory in milliwatts.
+    - name: SpareDeviceCount
+      type: byte
+      description: >
+          Number of unused spare devices available in the memory.
+    - name: Socket
+      type: uint16
+      description: >
+          The socket number to which the memory is connected.
+    - name: MemoryController
+      type: uint16
+      description: >
+          The memory controller number to which the memory is connected.
+    - name: Channel
+      type: uint16
+      description: >
+          The channel number to which the memory is connected.
+    - name: Slot
+      type: uint16
+      description: >
+          The slot number to which the memory is connected.
+    - name: VolatileRegionSizeLimitKiB
+      type: uint32
+      description: >
+          Total size of volatile regions in kibibytes (KiB).
+    - name: PmRegionSizeLimitKiB
+      type: uint32
+      description: >
+          Total size of persistent regions in kibibytes (KiB).
+    - name: AllowedMemoryModes
+      type: array[string]
+      description: >
+          Memory modes supported by the memory.
+    - name: IsSpareDeviceInUse
+      type: boolean
+      description: >
+          An indication of whether a spare device is enabled for this memory.
+    - name: IsRankSpareEnabled
+      type: boolean
+      description: >
+          An indication of whether rank spare is enabled for this memory.
+    - name: VolatileRegionNumberLimit
+      type: uint16
+      description: >
+          Total number of volatile regions this memory can support.
+    - name: PmRegionNumberLimit
+      type: uint16
+      description: >
+          Total number of persistent regions this memory can support.
+    - name: VolatileRegionMaxSizeKiB
+      type: uint32
+      description: >
+          Maximum size of a single volatile region in kibibytes (KiB).
+    - name: PmRegionMaxSizeKiB
+      type: uint32
+      description: >
+          Maximum size of a single persistent region in kibibytes (KiB).
+    - name: AllocationIncrementInKiB
+      type: uint64
+      description: >
+          The size of the smallest unit of allocation for a memory region in
+          kibibytes (KiB).
+    - name: AllocationAlignementInKiB
+      type: uint64
+      description: >
+          The boundary that memory regions are allocated on, measured in
+          kibibytes (KiB).
+    - name: ModuleManufacturerID
+      type: string
+      description: >
+          The manufacturer ID of this memory module.
+    - name: ModuleProductID
+      type: string
+      description: >
+          The product ID of this memory module.
+    - name: SubsystemVendorID
+      type: string
+      description: >
+          The manufacturer ID of the memory subsystem controller of this
+          memory module.
+    - name: SubsystemDeviceID
+      type: string
+      description: >
+          The product ID of the memory subsystem controller of this memory
+          module.
+    - name: VolatileSizeInKiB
+      type: uint32
+      description: >
+          Total size of the volatile portion memory in kibibytes (KiB).
+    - name: PmSizeInKiB
+      type: uint32
+      description: >
+          Total size of the non-volatile portion memory in kibibytes (KiB).
+    - name: CacheSizeInKB
+      type: uint32
+      description: >
+          Total size of the cache portion memory in kibibytes (KiB).
+    - name: MemoryMedia
+      type: array[string]
+      description: Media of this memory.
 
 enumerations:
     - name: Ecc
@@ -64,7 +179,7 @@
         - name: MultiBitECC
           description: >
               Multibit data errors can be corrected by ECC.
-        - name: AddressParit
+        - name: AddressParity
           description: >
               Address parity errors can be corrected.
     - name: Type
@@ -199,3 +314,40 @@
         - name: DDR4E_SDRAM
           description: >
               Double Data Rate 4 Extended Compliant SDRAM.
+    - name: FormFactor
+      description: >
+          Implementation form factor for this memory device.
+      values:
+        - name: RDIMM
+          description: >
+              Registered DIMM.
+        - name: UDIMM
+          description: >
+              Unbuffered DIMM.
+        - name: SO_DIMM
+          description: >
+              Small Outline DIMM.
+        - name: LRDIMM
+          description: >
+              Load-reduced DIMMs.
+        - name: Mini_RDIMM
+          description: >
+              mini Registered DIMM.
+        - name: Mini_UDIMM
+          description: >
+              mini Unbuffered DIMM.
+        - name: SO_RDIMM_72b
+          description: >
+              Small Outline Registered DIMM.
+        - name: SO_UDIMM_72b
+          description: >
+              Small Outline Unbuffered DIMM.
+        - name: SO_DIMM_16b
+          description: >
+              Small Outline DIMM 16 bit.
+        - name: SO_DIMM_32b
+          description: >
+              Small Outline DIMM 32 bit.
+        - name: Die
+          description: >
+              A die within a package.
diff --git a/xyz/openbmc_project/Inventory/Item/Dimm/Partition.interface.yaml b/xyz/openbmc_project/Inventory/Item/Dimm/Partition.interface.yaml
new file mode 100644
index 0000000..45105ac
--- /dev/null
+++ b/xyz/openbmc_project/Inventory/Item/Dimm/Partition.interface.yaml
@@ -0,0 +1,25 @@
+description: >
+    Implement to provide memory partition attributes.
+properties:
+    - name: PartitionId
+      type: string
+      description: >
+          Unique region ID representing a specific region within the Memory.
+    - name: SizeKiB
+      type: uint64
+      description: >
+          Size of this memory region in kibibytes (KiB).
+    - name: MemoryClassification
+      type: string
+      description: >
+          Classification of memory occupied by the given memory region.
+    - name: OffsetMiB
+      type: uint64
+      description: >
+          Offset with in the Memory that corresponds to the starting of this
+          memory region in MiB.
+    - name: PassphraseState
+      type: boolean
+      description: >
+          An indication of whether the state of the passphrase for this region
+          is enabled.
diff --git a/xyz/openbmc_project/Inventory/Item/Dimm/SecurityCapabilities.interface.yaml b/xyz/openbmc_project/Inventory/Item/Dimm/SecurityCapabilities.interface.yaml
new file mode 100644
index 0000000..e99c121
--- /dev/null
+++ b/xyz/openbmc_project/Inventory/Item/Dimm/SecurityCapabilities.interface.yaml
@@ -0,0 +1,15 @@
+description: >
+    Implement to provide security capability attributes.
+properties:
+    - name: MaxPassphraseCount
+      type: int32
+      description: >
+          Maximum number of passphrases supported for this Memory.
+    - name: PassphraseCapable
+      type: boolean
+      description: >
+          Memory passphrase set capability.
+    - name: SecurityStates
+      type: array[string]
+      description: >
+          Security states supported by the Memory.