facebook: ventura: add GPIODeviceDetect for cable

Add GPIODeviceDetect EM config for cables on ventura platform.

Tested:

1. Query xyz.openbmc_project.gpiopresence service
```
root@bmc:~# busctl tree xyz.openbmc_project.gpiopresence
└─ /xyz
  └─ /xyz/openbmc_project
    └─ /xyz/openbmc_project/GPIODeviceDetected
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort1
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort10
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort11
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort12
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort13
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort14
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort15
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort16
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort17
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort18
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort19
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort2
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort20
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort21
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort22
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort23
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort24
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort25
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort26
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort27
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort3
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort4
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort5
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort6
      ├─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort7
      └─ /xyz/openbmc_project/GPIODeviceDetected/LeakPort8
```

2. Introspect specific LeakPort path
```
root@bmc:~# busctl introspect xyz.openbmc_project.gpiopresence  /xyz/openbmc_project/GPIODeviceDetected/LeakPort1
NAME                                                TYPE      SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable                 interface -         -            -
.Introspect                                         method    -         s            -
org.freedesktop.DBus.Peer                           interface -         -            -
.GetMachineId                                       method    -         s            -
.Ping                                               method    -         -            -
org.freedesktop.DBus.Properties                     interface -         -            -
.Get                                                method    ss        v            -
.GetAll                                             method    s         a{sv}        -
.Set                                                method    ssv       -            -
.PropertiesChanged                                  signal    sa{sv}as  -            -
xyz.openbmc_project.Inventory.Source.DevicePresence interface -         -            -
.Name                                               property  s         "LeakPort1"  emits-change writable
```

3. Show cable inventory
```
root@bmc:~# busctl tree xyz.openbmc_project.EntityManager | grep -i cable
        └─ /xyz/openbmc_project/inventory/system/cable
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort1
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort10
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort11
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort12
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort13
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort14
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort15
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort16
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort17
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort18
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort19
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort2
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort20
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort21
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort22
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort23
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort24
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort25
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort26
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort27
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort3
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort4
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort5
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort6
          ├─ /xyz/openbmc_project/inventory/system/cable/LeakPort7
          └─ /xyz/openbmc_project/inventory/system/cable/LeakPort8
```

4. Redfish cable inventory -
```
{
  "@odata.id": "/redfish/v1/Cables",
  "@odata.type": "#CableCollection.CableCollection",
  "Description": "Collection of Cable Entries",
  "Members": [
    {
      "@odata.id": "/redfish/v1/Cables/LeakPort1"
    },
    {
      "@odata.id": "/redfish/v1/Cables/LeakPort2"
    },
    {
      "@odata.id": "/redfish/v1/Cables/LeakPort3"
    },
    ...
    ...
    {
      "@odata.id": "/redfish/v1/Cables/LeakPort27"
    }
  ],
  "Members@odata.count": 26,
  "Name": "Cable Collection"
}

```

5. Redfish query specific cable -
```
{
  "@odata.id": "/redfish/v1/Cables/LeakPort1",
  "@odata.type": "#Cable.v1_0_0.Cable",
  "Id": "LeakPort1",
  "Name": "Cable",
  "Status": {
    "State": "Enabled"
  }
}
```

Change-Id: I473b9b47e65511a81cc0aa9fd64e84d16dec093e
Signed-off-by: Jagpal Singh Gill <paligill@gmail.com>
diff --git a/configurations/meson.build b/configurations/meson.build
index 4e769c0..6a3ffd7 100644
--- a/configurations/meson.build
+++ b/configurations/meson.build
@@ -105,6 +105,7 @@
     'meta/minerva_tahan_smb.json',
     'meta/terminus_2x100g_nic_tsff.json',
     'meta/twinlake.json',
+    'meta/ventura_cable.json',
     'meta/ventura_fanboard_adc_max.json',
     'meta/ventura_fanboard_adc_tic.json',
     'meta/ventura_ioboard.json',
diff --git a/configurations/meta/ventura_cable.json b/configurations/meta/ventura_cable.json
new file mode 100644
index 0000000..45fb7f3
--- /dev/null
+++ b/configurations/meta/ventura_cable.json
@@ -0,0 +1,10 @@
+{
+    "Exposes": [],
+    "Name": "$Name",
+    "Probe": "xyz.openbmc_project.Inventory.Source.DevicePresence({'Name': 'LeakPort*'})",
+    "Type": "Cable",
+    "xyz.openbmc_project.Inventory.Decorator.Cable": {
+        "Length": 0,
+        "Type": "Copper"
+    }
+}
diff --git a/configurations/meta/ventura_scm.json b/configurations/meta/ventura_scm.json
index ecadda1..da353ec 100644
--- a/configurations/meta/ventura_scm.json
+++ b/configurations/meta/ventura_scm.json
@@ -216,6 +216,276 @@
             "Type": "EEPROM"
         },
         {
+            "Name": "LeakPort1",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY1_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort2",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY2_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort3",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY3_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort4",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY4_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort5",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY5_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort6",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY6_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort7",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY7_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort8",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY8_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort9",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY1_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort10",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY2_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort11",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY3_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort12",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY4_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort13",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY5_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort14",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY6_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort15",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY7_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort16",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY8_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort17",
+            "PresencePinNames": [
+                "PRSNT_NVS_TRAY9_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort18",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY9_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort19",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY10_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort20",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY11_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort21",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY12_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort22",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY13_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort23",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY14_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort24",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY15_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort25",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY16_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort26",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY17_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
+            "Name": "LeakPort27",
+            "PresencePinNames": [
+                "PRSNT_COMPUTE_TRAY18_N"
+            ],
+            "PresencePinValues": [
+                0
+            ],
+            "Type": "GPIODeviceDetect"
+        },
+        {
             "Level": "Warning",
             "Name": "LeakPort1_Small",
             "PinName": "SMALL_LEAK_COMPUTE_TRAY1_N",