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