blob: 90e2583595e9bed518803548165fdb5c95b2feba (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#include "IOCTL.h"
#include "SharedBuffer.h"
#include <cstring>
#include <linux/ioctl.h>
#include "mxcfb.h"
int
handleIOCTL(unsigned long request, char* ptr) {
if (request == FBIOGET_VSCREENINFO) {
fb_var_screeninfo* screeninfo = (fb_var_screeninfo*)ptr;
screeninfo->xres = fb_width;
screeninfo->yres = fb_height;
screeninfo->grayscale = 0;
screeninfo->bits_per_pixel = 8 * fb_pixel_size;
screeninfo->xres_virtual = fb_width;
screeninfo->yres_virtual = fb_height;
// set to RGB565
screeninfo->red.offset = 11;
screeninfo->red.length = 5;
screeninfo->green.offset = 5;
screeninfo->green.length = 6;
screeninfo->blue.offset = 0;
screeninfo->blue.length = 5;
return 0;
} else if (request == FBIOGET_FSCREENINFO) {
fb_fix_screeninfo* screeninfo = (fb_fix_screeninfo*)ptr;
screeninfo->smem_len = fb_size;
screeninfo->smem_start = (unsigned long)0x1000;
screeninfo->line_length = fb_width * fb_pixel_size;
constexpr char fb_id[] = "mxcfb";
std::memcpy(screeninfo->id, fb_id, sizeof(fb_id));
return 0;
} else {
return 0;
}
}
|