xref: /kvmtool/include/kvm/framebuffer.h (revision 7fca1897f9dd98dea482321c069840256f477a9c)
108e89f1eSPekka Enberg #ifndef KVM__FRAMEBUFFER_H
208e89f1eSPekka Enberg #define KVM__FRAMEBUFFER_H
308e89f1eSPekka Enberg 
408e89f1eSPekka Enberg #include <linux/types.h>
508e89f1eSPekka Enberg #include <linux/list.h>
608e89f1eSPekka Enberg 
708e89f1eSPekka Enberg struct framebuffer;
808e89f1eSPekka Enberg 
908e89f1eSPekka Enberg struct fb_target_operations {
1008e89f1eSPekka Enberg 	int (*start)(struct framebuffer *fb);
1108e89f1eSPekka Enberg };
1208e89f1eSPekka Enberg 
1308e89f1eSPekka Enberg #define FB_MAX_TARGETS			2
1408e89f1eSPekka Enberg 
1508e89f1eSPekka Enberg struct framebuffer {
1608e89f1eSPekka Enberg 	struct list_head		node;
1708e89f1eSPekka Enberg 
1808e89f1eSPekka Enberg 	u32				width;
1908e89f1eSPekka Enberg 	u32				height;
2008e89f1eSPekka Enberg 	u8				depth;
2108e89f1eSPekka Enberg 	char				*mem;
2208e89f1eSPekka Enberg 	u64				mem_addr;
23*7fca1897SSasha Levin 	u64				mem_size;
2408e89f1eSPekka Enberg 
2508e89f1eSPekka Enberg 	unsigned long			nr_targets;
2608e89f1eSPekka Enberg 	struct fb_target_operations	*targets[FB_MAX_TARGETS];
2708e89f1eSPekka Enberg };
2808e89f1eSPekka Enberg 
2908e89f1eSPekka Enberg struct framebuffer *fb__register(struct framebuffer *fb);
3008e89f1eSPekka Enberg int fb__attach(struct framebuffer *fb, struct fb_target_operations *ops);
3108e89f1eSPekka Enberg int fb__start(void);
3208e89f1eSPekka Enberg void fb__stop(void);
3308e89f1eSPekka Enberg 
3408e89f1eSPekka Enberg #endif /* KVM__FRAMEBUFFER_H */
35