Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bc5ccdbc authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

[media] au0828: Unregister notifiers



If au0828 gets removed, we need to remove the notifiers.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
Reviewed-by: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 88336e17
Loading
Loading
Loading
Loading
+26 −12
Original line number Diff line number Diff line
@@ -131,12 +131,27 @@ static int recv_control_msg(struct au0828_dev *dev, u16 request, u32 value,
	return status;
}

#ifdef CONFIG_MEDIA_CONTROLLER
static void au0828_media_graph_notify(struct media_entity *new,
				      void *notify_data);
#endif

static void au0828_unregister_media_device(struct au0828_dev *dev)
{

#ifdef CONFIG_MEDIA_CONTROLLER
	if (dev->media_dev &&
		media_devnode_is_registered(&dev->media_dev->devnode)) {
	struct media_device *mdev = dev->media_dev;
	struct media_entity_notify *notify, *nextp;

	if (!mdev || !media_devnode_is_registered(&mdev->devnode))
		return;

	/* Remove au0828 entity_notify callbacks */
	list_for_each_entry_safe(notify, nextp, &mdev->entity_notify, list) {
		if (notify->notify != au0828_media_graph_notify)
			continue;
		media_device_unregister_entity_notify(mdev, notify);
	}

	/* clear enable_source, disable_source */
	dev->media_dev->source_priv = NULL;
	dev->media_dev->enable_source = NULL;
@@ -146,7 +161,6 @@ static void au0828_unregister_media_device(struct au0828_dev *dev)
	media_device_cleanup(dev->media_dev);
	kfree(dev->media_dev);
	dev->media_dev = NULL;
	}
#endif
}