119757fc8STomi Valkeinen /*
219757fc8STomi Valkeinen  *  linux/drivers/video/fb_notify.c
319757fc8STomi Valkeinen  *
419757fc8STomi Valkeinen  *  Copyright (C) 2006 Antonino Daplas <adaplas@pol.net>
519757fc8STomi Valkeinen  *
619757fc8STomi Valkeinen  *	2001 - Documented with DocBook
719757fc8STomi Valkeinen  *	- Brad Douglas <brad@neruo.com>
819757fc8STomi Valkeinen  *
919757fc8STomi Valkeinen  * This file is subject to the terms and conditions of the GNU General Public
1019757fc8STomi Valkeinen  * License.  See the file COPYING in the main directory of this archive
1119757fc8STomi Valkeinen  * for more details.
1219757fc8STomi Valkeinen  */
1319757fc8STomi Valkeinen #include <linux/fb.h>
1419757fc8STomi Valkeinen #include <linux/notifier.h>
1519757fc8STomi Valkeinen #include <linux/export.h>
1619757fc8STomi Valkeinen 
1719757fc8STomi Valkeinen static BLOCKING_NOTIFIER_HEAD(fb_notifier_list);
1819757fc8STomi Valkeinen 
1919757fc8STomi Valkeinen /**
2019757fc8STomi Valkeinen  *	fb_register_client - register a client notifier
2119757fc8STomi Valkeinen  *	@nb: notifier block to callback on events
22*e994a1b6SSam Ravnborg  *
23*e994a1b6SSam Ravnborg  *	Return: 0 on success, negative error code on failure.
2419757fc8STomi Valkeinen  */
fb_register_client(struct notifier_block * nb)2519757fc8STomi Valkeinen int fb_register_client(struct notifier_block *nb)
2619757fc8STomi Valkeinen {
2719757fc8STomi Valkeinen 	return blocking_notifier_chain_register(&fb_notifier_list, nb);
2819757fc8STomi Valkeinen }
2919757fc8STomi Valkeinen EXPORT_SYMBOL(fb_register_client);
3019757fc8STomi Valkeinen 
3119757fc8STomi Valkeinen /**
3219757fc8STomi Valkeinen  *	fb_unregister_client - unregister a client notifier
3319757fc8STomi Valkeinen  *	@nb: notifier block to callback on events
34*e994a1b6SSam Ravnborg  *
35*e994a1b6SSam Ravnborg  *	Return: 0 on success, negative error code on failure.
3619757fc8STomi Valkeinen  */
fb_unregister_client(struct notifier_block * nb)3719757fc8STomi Valkeinen int fb_unregister_client(struct notifier_block *nb)
3819757fc8STomi Valkeinen {
3919757fc8STomi Valkeinen 	return blocking_notifier_chain_unregister(&fb_notifier_list, nb);
4019757fc8STomi Valkeinen }
4119757fc8STomi Valkeinen EXPORT_SYMBOL(fb_unregister_client);
4219757fc8STomi Valkeinen 
4319757fc8STomi Valkeinen /**
4419757fc8STomi Valkeinen  * fb_notifier_call_chain - notify clients of fb_events
45*e994a1b6SSam Ravnborg  * @val: value passed to callback
46*e994a1b6SSam Ravnborg  * @v: pointer passed to callback
4719757fc8STomi Valkeinen  *
48*e994a1b6SSam Ravnborg  * Return: The return value of the last notifier function
4919757fc8STomi Valkeinen  */
fb_notifier_call_chain(unsigned long val,void * v)5019757fc8STomi Valkeinen int fb_notifier_call_chain(unsigned long val, void *v)
5119757fc8STomi Valkeinen {
5219757fc8STomi Valkeinen 	return blocking_notifier_call_chain(&fb_notifier_list, val, v);
5319757fc8STomi Valkeinen }
5419757fc8STomi Valkeinen EXPORT_SYMBOL_GPL(fb_notifier_call_chain);
55