complete(&wdt->response);
 }
 
+/*
+ * mei_wdt_notify_event - callback for event notification
+ *
+ * @cldev: bus device
+ */
+static void mei_wdt_notify_event(struct mei_cl_device *cldev)
+{
+       struct mei_wdt *wdt = mei_cldev_get_drvdata(cldev);
+
+       if (wdt->state != MEI_WDT_NOT_REQUIRED)
+               return;
+
+       mei_wdt_register(wdt);
+}
+
 /**
  * mei_wdt_event - callback for event receive
  *
 {
        if (events & BIT(MEI_CL_EVENT_RX))
                mei_wdt_event_rx(cldev);
+
+       if (events & BIT(MEI_CL_EVENT_NOTIF))
+               mei_wdt_notify_event(cldev);
 }
 
 #if IS_ENABLED(CONFIG_DEBUG_FS)
                goto err_out;
        }
 
-       ret = mei_cldev_register_event_cb(wdt->cldev, BIT(MEI_CL_EVENT_RX),
+       ret = mei_cldev_register_event_cb(wdt->cldev,
+                                         BIT(MEI_CL_EVENT_RX) |
+                                         BIT(MEI_CL_EVENT_NOTIF),
                                          mei_wdt_event, NULL);
-       if (ret) {
+
+       /* on legacy devices notification is not supported
+        * this doesn't fail the registration for RX event
+        */
+       if (ret && ret != -EOPNOTSUPP) {
                dev_err(&cldev->dev, "Could not register event ret=%d\n", ret);
                goto err_disable;
        }