.link_notify = imx_media_link_notify,
 };
 
+static void imx_media_notify(struct v4l2_subdev *sd,
+                            unsigned int notification,
+                            void *arg)
+{
+       struct media_entity *entity = &sd->entity;
+       int i;
+
+       if (notification != V4L2_DEVICE_NOTIFY_EVENT)
+               return;
+
+       for (i = 0; i < entity->num_pads; i++) {
+               struct media_pad *pad = &entity->pads[i];
+               struct imx_media_pad_vdev *pad_vdev;
+               struct list_head *pad_vdev_list;
+
+               pad_vdev_list = to_pad_vdev_list(sd, pad->index);
+               if (!pad_vdev_list)
+                       continue;
+               list_for_each_entry(pad_vdev, pad_vdev_list, list)
+                       v4l2_event_queue(pad_vdev->vdev->vfd, arg);
+       }
+}
+
 static int imx_media_probe(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        mutex_init(&imxmd->mutex);
 
        imxmd->v4l2_dev.mdev = &imxmd->md;
+       imxmd->v4l2_dev.notify = imx_media_notify;
        strscpy(imxmd->v4l2_dev.name, "imx-media",
                sizeof(imxmd->v4l2_dev.name));