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