From b79eec63fb35508772f852e5e402147de17df5fb Mon Sep 17 00:00:00 2001
From: James Harrow <james.harrow@gmail.com>
Date: Sat, 10 Feb 2024 10:33:49 +0000
Subject: [PATCH 1/3] Fixes: #31599 - Changed to remove kOnOff support in
 EEVSEM and DEMM clusters.

---
 .../src/device-energy-management-mode.cpp                       | 2 +-
 .../energy-management-common/src/energy-evse-mode.cpp           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp b/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp
index 9f79f78ee653d5..3d4517286c5f3c 100644
--- a/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp
+++ b/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp
@@ -95,6 +95,6 @@ void emberAfDeviceEnergyManagementModeClusterInitCallback(chip::EndpointId endpo
     gDeviceEnergyManagementModeDelegate = std::make_unique<DeviceEnergyManagementMode::DeviceEnergyManagementModeDelegate>();
     gDeviceEnergyManagementModeInstance =
         std::make_unique<ModeBase::Instance>(gDeviceEnergyManagementModeDelegate.get(), 0x1, DeviceEnergyManagementMode::Id,
-                                             chip::to_underlying(DeviceEnergyManagementMode::Feature::kOnOff));
+                                             chip::to_underlying(DeviceEnergyManagementMode::Feature::kNoFeatures));
     gDeviceEnergyManagementModeInstance->Init();
 }
diff --git a/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp b/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp
index 0d413682d20f84..fde4c316578943 100644
--- a/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp
+++ b/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp
@@ -92,6 +92,6 @@ void emberAfEnergyEvseModeClusterInitCallback(chip::EndpointId endpointId)
     VerifyOrDie(!gEnergyEvseModeDelegate && !gEnergyEvseModeInstance);
     gEnergyEvseModeDelegate = std::make_unique<EnergyEvseMode::EnergyEvseModeDelegate>();
     gEnergyEvseModeInstance = std::make_unique<ModeBase::Instance>(gEnergyEvseModeDelegate.get(), 0x1, EnergyEvseMode::Id,
-                                                                   chip::to_underlying(EnergyEvseMode::Feature::kOnOff));
+                                                                   chip::to_underlying(EnergyEvseMode::Feature::kNoFeatures));
     gEnergyEvseModeInstance->Init();
 }

From c3b870c31383e5ab32e6cbec284aed1e88424e31 Mon Sep 17 00:00:00 2001
From: James Harrow <james.harrow@gmail.com>
Date: Sat, 10 Feb 2024 11:47:33 +0000
Subject: [PATCH 2/3] Added a kNoFeatures enum to eevse and demm xml, and then
 regen_all

---
 .../all-clusters-app.matter                   |  2 ++
 .../energy-management-app.matter              |  2 ++
 .../energy-management-app.zap                 | 26 +++++++++----------
 .../device-energy-management-mode-cluster.xml |  7 +++++
 .../chip/energy-evse-mode-cluster.xml         |  7 ++++-
 .../zcl/data-model/chip/mode-base-cluster.xml |  4 +--
 .../data_model/controller-clusters.matter     |  2 ++
 .../python/chip/clusters/Objects.py           |  2 ++
 .../CHIP/zap-generated/MTRBaseClusters.h      |  2 ++
 .../app-common/zap-generated/cluster-enums.h  |  6 +++--
 10 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 0e24f102d7c8ed..e6faf1b661cc16 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -4466,6 +4466,7 @@ provisional cluster EnergyEvseMode = 157 {
   }
 
   bitmap Feature : bitmap32 {
+    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
@@ -4517,6 +4518,7 @@ provisional cluster DeviceEnergyManagementMode = 159 {
   }
 
   bitmap Feature : bitmap32 {
+    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
diff --git a/examples/energy-management-app/energy-management-common/energy-management-app.matter b/examples/energy-management-app/energy-management-common/energy-management-app.matter
index f593b52d3ab71e..cfb842532636d2 100644
--- a/examples/energy-management-app/energy-management-common/energy-management-app.matter
+++ b/examples/energy-management-app/energy-management-common/energy-management-app.matter
@@ -1568,6 +1568,7 @@ provisional cluster EnergyEvseMode = 157 {
   }
 
   bitmap Feature : bitmap32 {
+    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
@@ -1619,6 +1620,7 @@ provisional cluster DeviceEnergyManagementMode = 159 {
   }
 
   bitmap Feature : bitmap32 {
+    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
diff --git a/examples/energy-management-app/energy-management-common/energy-management-app.zap b/examples/energy-management-app/energy-management-common/energy-management-app.zap
index ed18c81d0738e5..135a54595b316e 100644
--- a/examples/energy-management-app/energy-management-common/energy-management-app.zap
+++ b/examples/energy-management-app/energy-management-common/energy-management-app.zap
@@ -1719,10 +1719,10 @@
               "side": "server",
               "type": "bitmap32",
               "included": 1,
-              "storageOption": "RAM",
+              "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "0",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -1735,10 +1735,10 @@
               "side": "server",
               "type": "int16u",
               "included": 1,
-              "storageOption": "RAM",
+              "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "1",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2812,7 +2812,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2828,7 +2828,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2844,7 +2844,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2860,7 +2860,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2876,7 +2876,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2892,7 +2892,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2908,7 +2908,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2924,7 +2924,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2940,7 +2940,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": "0",
+              "defaultValue": null,
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
diff --git a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml
index b41555e2fe03cd..1f5815c7bb052b 100644
--- a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml
@@ -57,4 +57,11 @@ limitations under the License.
       <arg name="StatusText" type="char_string" length="64" optional="true"/>
     </command>
   </cluster>
+
+  <bitmap name="Feature" type="bitmap32">
+    <cluster code="0x009F"/>
+    <field name="NoFeatures" mask="0x0"/>
+    <field name="OnOff" mask="0x1"/>
+  </bitmap>
+
 </configurator>
diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml
index 4418502ae5e389..133e84d861ea72 100644
--- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml
@@ -55,5 +55,10 @@ limitations under the License.
       <arg name="Status"     type="enum8"                   optional="false"/>
       <arg name="StatusText" type="char_string" length="64" optional="true"/>
     </command>
-  </cluster>
+  </cluster>    
+  <bitmap name="Feature" type="bitmap32">
+    <cluster code="0x009D"/>
+    <field name="NoFeatures" mask="0x0"/>
+    <field name="OnOff" mask="0x1"/>
+  </bitmap>
 </configurator>
diff --git a/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml
index abacba4bafe631..a5971265b1eba5 100644
--- a/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml
@@ -95,8 +95,8 @@ This is because zap does not currently support generating code for clusters that
     <cluster code="0x0059"/> <!-- Dishwasher Mode -->
     <cluster code="0x005E"/> <!-- Microwave Oven Mode -->
     <cluster code="0x0049"/> <!-- Oven Mode -->
-    <cluster code="0x009D"/> <!-- Energy EVSE Mode -->
-    <cluster code="0x009F"/> <!-- Device Energy Management Mode -->
+    <!-- <cluster code="0x009D"/> Energy EVSE Mode. This cluster optionally allows for kNoFeatures or kOnOff -->
+    <!-- <cluster code="0x009F"/> Device Energy Management Mode. This cluster optionally allows for kNoFeatures or kOnOff -->
     <field name="OnOff" mask="0x1"/>
   </bitmap>
 </configurator>
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 5b5890b4ccbb78..9c6fb73a938aa6 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -5042,6 +5042,7 @@ provisional cluster EnergyEvseMode = 157 {
   }
 
   bitmap Feature : bitmap32 {
+    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
@@ -5093,6 +5094,7 @@ provisional cluster DeviceEnergyManagementMode = 159 {
   }
 
   bitmap Feature : bitmap32 {
+    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 3f5c116cc5515b..dee568cf87873d 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -26217,6 +26217,7 @@ class ModeTag(MatterIntEnum):
 
     class Bitmaps:
         class Feature(IntFlag):
+            kNoFeatures = 0x0
             kOnOff = 0x1
 
     class Structs:
@@ -26490,6 +26491,7 @@ class ModeTag(MatterIntEnum):
 
     class Bitmaps:
         class Feature(IntFlag):
+            kNoFeatures = 0x0
             kOnOff = 0x1
 
     class Structs:
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 9f7d6f8ffd5c64..7f8445e6539a80 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -18067,6 +18067,7 @@ typedef NS_ENUM(uint16_t, MTREnergyEVSEModeModeTag) {
 } MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_OPTIONS(uint32_t, MTREnergyEVSEModeFeature) {
+    MTREnergyEVSEModeFeatureNoFeatures MTR_PROVISIONALLY_AVAILABLE = 0x0,
     MTREnergyEVSEModeFeatureOnOff MTR_PROVISIONALLY_AVAILABLE = 0x1,
 } MTR_PROVISIONALLY_AVAILABLE;
 
@@ -18078,6 +18079,7 @@ typedef NS_ENUM(uint16_t, MTRDeviceEnergyManagementModeModeTag) {
 } MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_OPTIONS(uint32_t, MTRDeviceEnergyManagementModeFeature) {
+    MTRDeviceEnergyManagementModeFeatureNoFeatures MTR_PROVISIONALLY_AVAILABLE = 0x0,
     MTRDeviceEnergyManagementModeFeatureOnOff MTR_PROVISIONALLY_AVAILABLE = 0x1,
 } MTR_PROVISIONALLY_AVAILABLE;
 
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 1a1afc11a522d1..221e3642cc354d 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -2735,7 +2735,8 @@ enum class ModeTag : uint16_t
 // Bitmap for Feature
 enum class Feature : uint32_t
 {
-    kOnOff = 0x1,
+    kNoFeatures = 0x0,
+    kOnOff      = 0x1,
 };
 } // namespace EnergyEvseMode
 
@@ -2758,7 +2759,8 @@ enum class ModeTag : uint16_t
 // Bitmap for Feature
 enum class Feature : uint32_t
 {
-    kOnOff = 0x1,
+    kNoFeatures = 0x0,
+    kOnOff      = 0x1,
 };
 } // namespace DeviceEnergyManagementMode
 

From 939472549e96110c19b49edeebe6056250e12cb0 Mon Sep 17 00:00:00 2001
From: James Harrow <james.harrow@gmail.com>
Date: Sun, 11 Feb 2024 14:32:44 +0000
Subject: [PATCH 3/3] Revert "Fixes: #31599 - Changed to remove kOnOff support
 in EEVSEM and DEMM clusters."

This reverts commit b79eec63fb35508772f852e5e402147de17df5fb.
---
 .../all-clusters-app.matter                   |  2 --
 .../energy-management-app.matter              |  2 --
 .../energy-management-app.zap                 | 26 +++++++++----------
 .../src/device-energy-management-mode.cpp     |  3 +--
 .../src/energy-evse-mode.cpp                  |  3 +--
 .../device-energy-management-mode-cluster.xml |  7 -----
 .../chip/energy-evse-mode-cluster.xml         |  7 +----
 .../zcl/data-model/chip/mode-base-cluster.xml |  4 +--
 .../data_model/controller-clusters.matter     |  2 --
 .../python/chip/clusters/Objects.py           |  2 --
 .../CHIP/zap-generated/MTRBaseClusters.h      |  2 --
 .../app-common/zap-generated/cluster-enums.h  |  6 ++---
 12 files changed, 20 insertions(+), 46 deletions(-)

diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index e6faf1b661cc16..0e24f102d7c8ed 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -4466,7 +4466,6 @@ provisional cluster EnergyEvseMode = 157 {
   }
 
   bitmap Feature : bitmap32 {
-    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
@@ -4518,7 +4517,6 @@ provisional cluster DeviceEnergyManagementMode = 159 {
   }
 
   bitmap Feature : bitmap32 {
-    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
diff --git a/examples/energy-management-app/energy-management-common/energy-management-app.matter b/examples/energy-management-app/energy-management-common/energy-management-app.matter
index cfb842532636d2..f593b52d3ab71e 100644
--- a/examples/energy-management-app/energy-management-common/energy-management-app.matter
+++ b/examples/energy-management-app/energy-management-common/energy-management-app.matter
@@ -1568,7 +1568,6 @@ provisional cluster EnergyEvseMode = 157 {
   }
 
   bitmap Feature : bitmap32 {
-    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
@@ -1620,7 +1619,6 @@ provisional cluster DeviceEnergyManagementMode = 159 {
   }
 
   bitmap Feature : bitmap32 {
-    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
diff --git a/examples/energy-management-app/energy-management-common/energy-management-app.zap b/examples/energy-management-app/energy-management-common/energy-management-app.zap
index 135a54595b316e..ed18c81d0738e5 100644
--- a/examples/energy-management-app/energy-management-common/energy-management-app.zap
+++ b/examples/energy-management-app/energy-management-common/energy-management-app.zap
@@ -1719,10 +1719,10 @@
               "side": "server",
               "type": "bitmap32",
               "included": 1,
-              "storageOption": "External",
+              "storageOption": "RAM",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "0",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -1735,10 +1735,10 @@
               "side": "server",
               "type": "int16u",
               "included": 1,
-              "storageOption": "External",
+              "storageOption": "RAM",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "1",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2812,7 +2812,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2828,7 +2828,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2844,7 +2844,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2860,7 +2860,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2876,7 +2876,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2892,7 +2892,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2908,7 +2908,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2924,7 +2924,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
@@ -2940,7 +2940,7 @@
               "storageOption": "External",
               "singleton": 0,
               "bounded": 0,
-              "defaultValue": null,
+              "defaultValue": "0",
               "reportable": 1,
               "minInterval": 1,
               "maxInterval": 65534,
diff --git a/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp b/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp
index 3d4517286c5f3c..33235198752182 100644
--- a/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp
+++ b/examples/energy-management-app/energy-management-common/src/device-energy-management-mode.cpp
@@ -94,7 +94,6 @@ void emberAfDeviceEnergyManagementModeClusterInitCallback(chip::EndpointId endpo
     VerifyOrDie(!gDeviceEnergyManagementModeDelegate && !gDeviceEnergyManagementModeInstance);
     gDeviceEnergyManagementModeDelegate = std::make_unique<DeviceEnergyManagementMode::DeviceEnergyManagementModeDelegate>();
     gDeviceEnergyManagementModeInstance =
-        std::make_unique<ModeBase::Instance>(gDeviceEnergyManagementModeDelegate.get(), 0x1, DeviceEnergyManagementMode::Id,
-                                             chip::to_underlying(DeviceEnergyManagementMode::Feature::kNoFeatures));
+        std::make_unique<ModeBase::Instance>(gDeviceEnergyManagementModeDelegate.get(), 0x1, DeviceEnergyManagementMode::Id, 0);
     gDeviceEnergyManagementModeInstance->Init();
 }
diff --git a/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp b/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp
index fde4c316578943..ce147839a9496f 100644
--- a/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp
+++ b/examples/energy-management-app/energy-management-common/src/energy-evse-mode.cpp
@@ -91,7 +91,6 @@ void emberAfEnergyEvseModeClusterInitCallback(chip::EndpointId endpointId)
 {
     VerifyOrDie(!gEnergyEvseModeDelegate && !gEnergyEvseModeInstance);
     gEnergyEvseModeDelegate = std::make_unique<EnergyEvseMode::EnergyEvseModeDelegate>();
-    gEnergyEvseModeInstance = std::make_unique<ModeBase::Instance>(gEnergyEvseModeDelegate.get(), 0x1, EnergyEvseMode::Id,
-                                                                   chip::to_underlying(EnergyEvseMode::Feature::kNoFeatures));
+    gEnergyEvseModeInstance = std::make_unique<ModeBase::Instance>(gEnergyEvseModeDelegate.get(), 0x1, EnergyEvseMode::Id, 0);
     gEnergyEvseModeInstance->Init();
 }
diff --git a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml
index 1f5815c7bb052b..b41555e2fe03cd 100644
--- a/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/device-energy-management-mode-cluster.xml
@@ -57,11 +57,4 @@ limitations under the License.
       <arg name="StatusText" type="char_string" length="64" optional="true"/>
     </command>
   </cluster>
-
-  <bitmap name="Feature" type="bitmap32">
-    <cluster code="0x009F"/>
-    <field name="NoFeatures" mask="0x0"/>
-    <field name="OnOff" mask="0x1"/>
-  </bitmap>
-
 </configurator>
diff --git a/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml
index 133e84d861ea72..4418502ae5e389 100644
--- a/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml
@@ -55,10 +55,5 @@ limitations under the License.
       <arg name="Status"     type="enum8"                   optional="false"/>
       <arg name="StatusText" type="char_string" length="64" optional="true"/>
     </command>
-  </cluster>    
-  <bitmap name="Feature" type="bitmap32">
-    <cluster code="0x009D"/>
-    <field name="NoFeatures" mask="0x0"/>
-    <field name="OnOff" mask="0x1"/>
-  </bitmap>
+  </cluster>
 </configurator>
diff --git a/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml
index a5971265b1eba5..abacba4bafe631 100644
--- a/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/mode-base-cluster.xml
@@ -95,8 +95,8 @@ This is because zap does not currently support generating code for clusters that
     <cluster code="0x0059"/> <!-- Dishwasher Mode -->
     <cluster code="0x005E"/> <!-- Microwave Oven Mode -->
     <cluster code="0x0049"/> <!-- Oven Mode -->
-    <!-- <cluster code="0x009D"/> Energy EVSE Mode. This cluster optionally allows for kNoFeatures or kOnOff -->
-    <!-- <cluster code="0x009F"/> Device Energy Management Mode. This cluster optionally allows for kNoFeatures or kOnOff -->
+    <cluster code="0x009D"/> <!-- Energy EVSE Mode -->
+    <cluster code="0x009F"/> <!-- Device Energy Management Mode -->
     <field name="OnOff" mask="0x1"/>
   </bitmap>
 </configurator>
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 9c6fb73a938aa6..5b5890b4ccbb78 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -5042,7 +5042,6 @@ provisional cluster EnergyEvseMode = 157 {
   }
 
   bitmap Feature : bitmap32 {
-    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
@@ -5094,7 +5093,6 @@ provisional cluster DeviceEnergyManagementMode = 159 {
   }
 
   bitmap Feature : bitmap32 {
-    kNoFeatures = 0x0;
     kOnOff = 0x1;
   }
 
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index dee568cf87873d..3f5c116cc5515b 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -26217,7 +26217,6 @@ class ModeTag(MatterIntEnum):
 
     class Bitmaps:
         class Feature(IntFlag):
-            kNoFeatures = 0x0
             kOnOff = 0x1
 
     class Structs:
@@ -26491,7 +26490,6 @@ class ModeTag(MatterIntEnum):
 
     class Bitmaps:
         class Feature(IntFlag):
-            kNoFeatures = 0x0
             kOnOff = 0x1
 
     class Structs:
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 7f8445e6539a80..9f7d6f8ffd5c64 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -18067,7 +18067,6 @@ typedef NS_ENUM(uint16_t, MTREnergyEVSEModeModeTag) {
 } MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_OPTIONS(uint32_t, MTREnergyEVSEModeFeature) {
-    MTREnergyEVSEModeFeatureNoFeatures MTR_PROVISIONALLY_AVAILABLE = 0x0,
     MTREnergyEVSEModeFeatureOnOff MTR_PROVISIONALLY_AVAILABLE = 0x1,
 } MTR_PROVISIONALLY_AVAILABLE;
 
@@ -18079,7 +18078,6 @@ typedef NS_ENUM(uint16_t, MTRDeviceEnergyManagementModeModeTag) {
 } MTR_PROVISIONALLY_AVAILABLE;
 
 typedef NS_OPTIONS(uint32_t, MTRDeviceEnergyManagementModeFeature) {
-    MTRDeviceEnergyManagementModeFeatureNoFeatures MTR_PROVISIONALLY_AVAILABLE = 0x0,
     MTRDeviceEnergyManagementModeFeatureOnOff MTR_PROVISIONALLY_AVAILABLE = 0x1,
 } MTR_PROVISIONALLY_AVAILABLE;
 
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 221e3642cc354d..1a1afc11a522d1 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -2735,8 +2735,7 @@ enum class ModeTag : uint16_t
 // Bitmap for Feature
 enum class Feature : uint32_t
 {
-    kNoFeatures = 0x0,
-    kOnOff      = 0x1,
+    kOnOff = 0x1,
 };
 } // namespace EnergyEvseMode
 
@@ -2759,8 +2758,7 @@ enum class ModeTag : uint16_t
 // Bitmap for Feature
 enum class Feature : uint32_t
 {
-    kNoFeatures = 0x0,
-    kOnOff      = 0x1,
+    kOnOff = 0x1,
 };
 } // namespace DeviceEnergyManagementMode