diff --git a/drivers/misc/mei/hdcp/mei_hdcp.c b/drivers/misc/mei/hdcp/mei_hdcp.c
index 4cd6fdd01181..0b4e85511a25 100644
--- a/drivers/misc/mei/hdcp/mei_hdcp.c
+++ b/drivers/misc/mei/hdcp/mei_hdcp.c
@@ -31,6 +31,42 @@
 #include <linux/slab.h>
 #include <linux/uuid.h>
 #include <linux/mei_cl_bus.h>
+#include <linux/notifier.h>
+#include <linux/mei_hdcp.h>
+
+static struct mei_cl_device *mei_cldev;
+static BLOCKING_NOTIFIER_HEAD(mei_cldev_notifier_list);
+
+static void
+mei_cldev_state_notify_clients(struct mei_cl_device *cldev, bool enabled)
+{
+	if (enabled)
+		blocking_notifier_call_chain(&mei_cldev_notifier_list,
+					     MEI_CLDEV_ENABLED, cldev);
+	else
+		blocking_notifier_call_chain(&mei_cldev_notifier_list,
+					     MEI_CLDEV_DISABLED, NULL);
+}
+
+int mei_cldev_register_notify(struct notifier_block *nb)
+{
+	return blocking_notifier_chain_register(&mei_cldev_notifier_list, nb);
+}
+EXPORT_SYMBOL_GPL(mei_cldev_register_notify);
+
+int mei_cldev_unregister_notify(struct notifier_block *nb)
+{
+	return blocking_notifier_chain_unregister(&mei_cldev_notifier_list, nb);
+}
+EXPORT_SYMBOL_GPL(mei_cldev_unregister_notify);
+
+int mei_cldev_poll_notification(void)
+{
+	if (mei_cldev)
+		mei_cldev_state_notify_clients(mei_cldev, true);
+	return 0;
+}
+EXPORT_SYMBOL_GPL(mei_cldev_poll_notification);
 
 static int mei_hdcp_probe(struct mei_cl_device *cldev,
 			  const struct mei_cl_device_id *id)
@@ -38,14 +74,20 @@ static int mei_hdcp_probe(struct mei_cl_device *cldev,
 	int ret;
 
 	ret = mei_cldev_enable(cldev);
-	if (ret < 0)
+	if (ret < 0) {
 		dev_err(&cldev->dev, "mei_cldev_enable Failed. %d\n", ret);
+		return ret;
+	}
 
-	return ret;
+	mei_cldev = cldev;
+	mei_cldev_state_notify_clients(cldev, true);
+	return 0;
 }
 
 static int mei_hdcp_remove(struct mei_cl_device *cldev)
 {
+	mei_cldev = NULL;
+	mei_cldev_state_notify_clients(cldev, false);
 	mei_cldev_set_drvdata(cldev, NULL);
 	return mei_cldev_disable(cldev);
 }
diff --git a/include/linux/mei_hdcp.h b/include/linux/mei_hdcp.h
new file mode 100644
index 000000000000..9c8f140f5344
--- /dev/null
+++ b/include/linux/mei_hdcp.h
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
+/*
+ * Copyright © 2017-2018 Intel Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that copyright
+ * notice and this permission notice appear in supporting documentation, and
+ * that the name of the copyright holders not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission.  The copyright holders make no representations
+ * about the suitability of this software for any purpose.  It is provided "as
+ * is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+ * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+ * OF THIS SOFTWARE.
+ *
+ * Authors:
+ *	Ramalingam C <ramalingam.c@intel.com>
+ */
+
+#ifndef _LINUX_MEI_HDCP_H
+#define _LINUX_MEI_HDCP_H
+
+enum mei_cldev_state {
+	MEI_CLDEV_DISABLED,
+	MEI_CLDEV_ENABLED
+};
+
+#if IS_ENABLED(CONFIG_INTEL_MEI_HDCP)
+int mei_cldev_register_notify(struct notifier_block *nb);
+int mei_cldev_unregister_notify(struct notifier_block *nb);
+int mei_cldev_poll_notification(void);
+#else
+static inline int mei_cldev_register_notify(struct notifier_block *nb)
+{
+	return -ENODEV;
+}
+static inline int mei_cldev_unregister_notify(struct notifier_block *nb)
+{
+	return -ENODEV;
+}
+static inline int mei_cldev_poll_notification(void)
+{
+	return -ENODEV;
+}
+#endif /* IS_ENABLED(CONFIG_INTEL_MEI_HDCP) */
+#endif /* defined (_LINUX_MEI_HDCP_H) */
