diff --git a/systemhelper/aidl/Android.bp b/systemhelper/aidl/Android.bp
new file mode 100644
index 0000000..cdb579b
--- /dev/null
+++ b/systemhelper/aidl/Android.bp
@@ -0,0 +1,32 @@
+aidl_interface {
+    name: "vendor.qti.hardware.systemhelperaidl",
+    vendor_available: true,
+    owner: "qti",
+    srcs: [
+        "vendor/qti/hardware/systemhelperaidl/*.aidl",
+    ],
+    imports: [
+        "android.hardware.common-V2",
+    ],
+    stability: "vintf",
+    backend: {
+        cpp: {
+            enabled: false,
+        },
+        java: {
+            sdk_version: "module_current",
+            enabled: false,
+        },
+        ndk: {
+            enabled: true,
+        },
+    },
+    versions_with_info: [
+        {
+            version: "1",
+            imports: ["android.hardware.common-V2"],
+        },
+    ],
+    frozen: true,
+
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/.hash b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/.hash
new file mode 100644
index 0000000..ac0135f
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/.hash
@@ -0,0 +1 @@
+63abbe6a1e4c2a6c3495d7853b73d3da813e18c9
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl
new file mode 100644
index 0000000..2e2bfc4
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@VintfStability
+interface ISystemEvent {
+  int deRegisterEvent(in long eventIds, in vendor.qti.hardware.systemhelperaidl.ISystemEventCallback cb);
+  int registerEvent(in long eventIds, in vendor.qti.hardware.systemhelperaidl.ISystemEventCallback cb);
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl
new file mode 100644
index 0000000..e199c97
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@VintfStability
+interface ISystemEventCallback {
+  oneway void onEvent(in long eventId);
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl
new file mode 100644
index 0000000..0371bbc
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@VintfStability
+interface ISystemResource {
+  int acquire(in vendor.qti.hardware.systemhelperaidl.SystemResourceType resource);
+  int acquireSurface(in int width, in int height, out android.hardware.common.NativeHandle Handle);
+  void release(in int resourceId);
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl
new file mode 100644
index 0000000..ee16c96
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@Backing(type="long") @VintfStability
+enum SystemEventType {
+  PHONE_STATE_RINGING = 0x1,
+  PHONE_STATE_OFF_HOOK = 0x2,
+  PHONE_STATE_IDLE = 0x4,
+  ACTION_SCREEN_OFF = 0x8,
+  ACTION_SCREEN_ON = 0x10,
+  ACTION_SHUTDOWN = 0x20,
+  ACTION_USER_PRESENT = 0x40,
+  SYSTEM_EVENT_MAX = (0x80 - 1) /* 127 */,
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl
new file mode 100644
index 0000000..f801056
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/1/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@Backing(type="long") @VintfStability
+enum SystemResourceType {
+  WAKE_LOCK = 1,
+  ROTATION_LOCK = 2,
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl
new file mode 100644
index 0000000..2e2bfc4
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@VintfStability
+interface ISystemEvent {
+  int deRegisterEvent(in long eventIds, in vendor.qti.hardware.systemhelperaidl.ISystemEventCallback cb);
+  int registerEvent(in long eventIds, in vendor.qti.hardware.systemhelperaidl.ISystemEventCallback cb);
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl
new file mode 100644
index 0000000..e199c97
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@VintfStability
+interface ISystemEventCallback {
+  oneway void onEvent(in long eventId);
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl
new file mode 100644
index 0000000..0371bbc
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@VintfStability
+interface ISystemResource {
+  int acquire(in vendor.qti.hardware.systemhelperaidl.SystemResourceType resource);
+  int acquireSurface(in int width, in int height, out android.hardware.common.NativeHandle Handle);
+  void release(in int resourceId);
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl
new file mode 100644
index 0000000..ee16c96
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@Backing(type="long") @VintfStability
+enum SystemEventType {
+  PHONE_STATE_RINGING = 0x1,
+  PHONE_STATE_OFF_HOOK = 0x2,
+  PHONE_STATE_IDLE = 0x4,
+  ACTION_SCREEN_OFF = 0x8,
+  ACTION_SCREEN_ON = 0x10,
+  ACTION_SHUTDOWN = 0x20,
+  ACTION_USER_PRESENT = 0x40,
+  SYSTEM_EVENT_MAX = (0x80 - 1) /* 127 */,
+}
diff --git a/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl
new file mode 100644
index 0000000..f801056
--- /dev/null
+++ b/systemhelper/aidl/aidl_api/vendor.qti.hardware.systemhelperaidl/current/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+///////////////////////////////////////////////////////////////////////////////
+// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE.                          //
+///////////////////////////////////////////////////////////////////////////////
+
+// This file is a snapshot of an AIDL file. Do not edit it manually. There are
+// two cases:
+// 1). this is a frozen version file - do not edit this in any case.
+// 2). this is a 'current' file. If you make a backwards compatible change to
+//     the interface (from the latest frozen version), the build system will
+//     prompt you to update this file with `m <name>-update-api`.
+//
+// You must not make a backward incompatible change to any AIDL file built
+// with the aidl_interface module type with versions property set. The module
+// type is used to build AIDL files in a way that they can be used across
+// independently updatable components of the system. If a device is shipped
+// with such a backward incompatible change, it has a high risk of breaking
+// later when a module using the interface is updated, e.g., Mainline modules.
+
+package vendor.qti.hardware.systemhelperaidl;
+@Backing(type="long") @VintfStability
+enum SystemResourceType {
+  WAKE_LOCK = 1,
+  ROTATION_LOCK = 2,
+}
diff --git a/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl
new file mode 100644
index 0000000..e25f7ee
--- /dev/null
+++ b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemEvent.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package vendor.qti.hardware.systemhelperaidl;
+
+import vendor.qti.hardware.systemhelperaidl.ISystemEventCallback;
+import vendor.qti.hardware.systemhelperaidl.SystemEventType;
+
+@VintfStability
+interface ISystemEvent {
+    /**
+     * Deregister for system event notification.
+     *
+     * @param eventIds event mask (of type SystemEventType) to deregister for
+     * @param cb callback interface used for event registration
+     * @return status of event de-registration request
+     *                0 in case of success and negative in case of failure
+     */
+    int deRegisterEvent(in long eventIds, in ISystemEventCallback cb);
+
+    /**
+     * Register for system event notification.
+     *
+     * @param eventIds event mask (of type SystemEventType) to register for
+     * @param cb callback interface for event notification
+     * @return status of event registration request
+     *                0 in case of success and negative in case of failure
+     */
+    int registerEvent(in long eventIds, in ISystemEventCallback cb);
+}
\ No newline at end of file
diff --git a/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl
new file mode 100644
index 0000000..82a4c80
--- /dev/null
+++ b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemEventCallback.aidl
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package vendor.qti.hardware.systemhelperaidl;
+
+@VintfStability
+interface ISystemEventCallback {
+    /**
+     * Event notification.
+     *
+     * @param eventId event occurred (of type SystemEventType)
+     */
+    oneway void onEvent(in long eventId);
+}
\ No newline at end of file
diff --git a/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl
new file mode 100644
index 0000000..8e5eb1a
--- /dev/null
+++ b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/ISystemResource.aidl
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package vendor.qti.hardware.systemhelperaidl;
+
+import vendor.qti.hardware.systemhelperaidl.SystemResourceType;
+import android.hardware.common.NativeHandle;
+
+@VintfStability
+interface ISystemResource {
+    /**
+     * Acquire a system resource
+     *
+     * @param resource resource to acquire
+     * @return resourceId unique resource identifier for acquired resource
+     *                    Note : resourceId stands invalid in case of API returned error
+     */
+    int acquire(in SystemResourceType resource);
+
+    /**
+     * Acquire a system graphics surface.
+     *
+     * @param width surface width
+     * @param height surface height
+     * @param out handle NativeHandle wrapper for IGraphicBufferProducer interface
+     * @return resourceId unique resource identifier for acquired resource
+     *                    Note : resourceId stands invalid in case of API returned error
+     */
+    int acquireSurface(in int width, in int height, out NativeHandle Handle);
+
+    /**
+     * Release an acquired resource
+     *
+     * Both resource and surface shall be released via this API.
+     *
+     * @param resourceId unique resource identifier to be released
+     */
+    void release(in int resourceId);
+}
\ No newline at end of file
diff --git a/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl
new file mode 100644
index 0000000..b229508
--- /dev/null
+++ b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/SystemEventType.aidl
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package vendor.qti.hardware.systemhelperaidl;
+
+/** Types of Events **/
+
+@VintfStability
+@Backing(type="long")
+enum SystemEventType {
+    PHONE_STATE_RINGING  = 0x1,
+    PHONE_STATE_OFF_HOOK = 0x2,
+    PHONE_STATE_IDLE     = 0x4,
+    ACTION_SCREEN_OFF    = 0x8,
+    ACTION_SCREEN_ON     = 0x10,
+    ACTION_SHUTDOWN      = 0x20,
+    ACTION_USER_PRESENT  = 0x40,
+    SYSTEM_EVENT_MAX     = (0x80 - 1),
+}
\ No newline at end of file
diff --git a/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl
new file mode 100644
index 0000000..3728249
--- /dev/null
+++ b/systemhelper/aidl/vendor/qti/hardware/systemhelperaidl/SystemResourceType.aidl
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause-Clear
+ */
+
+package vendor.qti.hardware.systemhelperaidl;
+
+@VintfStability
+@Backing(type="long")
+enum SystemResourceType {
+    WAKE_LOCK = 1,
+    ROTATION_LOCK = 2,
+}
\ No newline at end of file
