xref: /freebsd/sys/dev/fb/splashreg.h (revision 617b90803690a7ece8e76a49803385516bac380b)
1 /*-
2  * $Id: $
3  */
4 
5 #ifndef _DEV_FB_SPLASHREG_H_
6 #define _DEV_FB_SPLASHREG_H_
7 
8 #define SPLASH_IMAGE	"splash_image_data"
9 
10 struct video_adapter;
11 
12 typedef struct splash_decoder {
13 	char		*name;
14 	int		(*init)(struct video_adapter *adp, void *data,
15 				size_t size);
16 	int		(*term)(struct video_adapter *adp);
17 	int		(*splash)(struct video_adapter *adp, int on);
18 } splash_decoder_t;
19 
20 #define SPLASH_DECODER(name, sw)				\
21 	static int name##_modevent(module_t mod, int type, void *data) \
22 	{							\
23 		switch ((modeventtype_t)type) {			\
24 		case MOD_LOAD:					\
25 			return splash_register(&sw);		\
26 		case MOD_UNLOAD:				\
27 			return splash_unregister(&sw);		\
28 		}						\
29 		return 0;					\
30 	}							\
31 	static moduledata_t name##_mod = {			\
32 		#name, 						\
33 		name##_modevent,				\
34 		NULL						\
35 	};							\
36 	DECLARE_MODULE(name, name##_mod, SI_SUB_DRIVERS, SI_ORDER_ANY)
37 
38 /* entry point for the splash image decoder */
39 int	splash_register(splash_decoder_t *decoder);
40 int	splash_unregister(splash_decoder_t *decoder);
41 
42 /* entry points for the console driver */
43 int	splash_init(video_adapter_t *adp, int (*callback)(int));
44 int	splash_term(video_adapter_t *adp);
45 int	splash(video_adapter_t *adp, int on);
46 
47 /* event types for the callback function */
48 #define SPLASH_INIT	0
49 #define SPLASH_TERM	1
50 
51 #endif /* _DEV_FB_SPLASHREG_H_ */
52