xref: /kvmtool/include/kvm/framebuffer.h (revision ba46fe53c6deed93c55409c02c9f9a2dee61848e)
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);
1148d9e01aSSasha Levin 	int (*stop)(struct framebuffer *fb);
1208e89f1eSPekka Enberg };
1308e89f1eSPekka Enberg 
1408e89f1eSPekka Enberg #define FB_MAX_TARGETS			2
1508e89f1eSPekka Enberg 
1608e89f1eSPekka Enberg struct framebuffer {
1708e89f1eSPekka Enberg 	struct list_head		node;
1808e89f1eSPekka Enberg 
1908e89f1eSPekka Enberg 	u32				width;
2008e89f1eSPekka Enberg 	u32				height;
2108e89f1eSPekka Enberg 	u8				depth;
2208e89f1eSPekka Enberg 	char				*mem;
2308e89f1eSPekka Enberg 	u64				mem_addr;
247fca1897SSasha Levin 	u64				mem_size;
25df4239fbSSasha Levin 	struct kvm			*kvm;
2608e89f1eSPekka Enberg 
2708e89f1eSPekka Enberg 	unsigned long			nr_targets;
2808e89f1eSPekka Enberg 	struct fb_target_operations	*targets[FB_MAX_TARGETS];
2908e89f1eSPekka Enberg };
3008e89f1eSPekka Enberg 
3108e89f1eSPekka Enberg struct framebuffer *fb__register(struct framebuffer *fb);
3208e89f1eSPekka Enberg int fb__attach(struct framebuffer *fb, struct fb_target_operations *ops);
33*ba46fe53SSasha Levin int fb__init(struct kvm *kvm);
34*ba46fe53SSasha Levin int fb__exit(struct kvm *kvm);
3508e89f1eSPekka Enberg 
3608e89f1eSPekka Enberg #endif /* KVM__FRAMEBUFFER_H */
37