embox

Форк
0
/
display_port.c 
53 строки · 1.2 Кб
1
/**
2
 * @file
3
 * @brief LVGL display interface port
4
 * @defails Based on lv_drivers/display/fbdev.c
5
 *
6
 * @date 15.02.2021
7
 * @author Alexander Kalmuk
8
 */
9

10
#include <unistd.h>
11
#include <fcntl.h>
12
#include <sys/mman.h>
13
#include <sys/ioctl.h>
14
#include <util/log.h>
15
#include <drivers/video/fb.h>
16
#include <linux/fb.h> /* For FBIOGET_FSCREENINFO */
17

18
#include "lvgl.h"
19

20
uint8_t *lv_fbp = NULL;
21
struct fb_var_screeninfo lv_vinfo;
22
struct fb_fix_screeninfo lv_finfo;
23

24
int lvgl_port_fbdev_init(const char *fb_path) {
25
	int fbfd;
26
	size_t fb_size;
27

28
	fbfd = open(fb_path, O_RDWR);
29
	if (fbfd < 0) {
30
		log_error("Error open framebuffer %s", fb_path);
31
		return -1;
32
	}
33
	if (ioctl(fbfd, FBIOGET_FSCREENINFO, &lv_finfo) == -1) {
34
		log_error("Error reading finfo for framebuffer %s", fb_path);
35
		return -1;
36
	}
37
	if (ioctl(fbfd, FBIOGET_VSCREENINFO, &lv_vinfo) == -1) {
38
		log_error("Error reading vinfo for framebuffer %s", fb_path);
39
		return -1;
40
	}
41

42
	fb_size = lv_finfo.line_length * lv_vinfo.yres;
43

44
	lv_fbp = (uint8_t *) mmap(0, fb_size, PROT_READ | PROT_WRITE,
45
				              MAP_SHARED, fbfd, 0);
46
	if (lv_fbp == MAP_FAILED) {
47
		log_error("Error mmap framebuffer %s", fb_path);
48
	}
49

50
	log_debug("framebuffer %s mapped successfully", fb_path);
51

52
	return 0;
53
}
54

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.