diff options
author | Malte Voos <git@mal.tc> | 2024-04-03 18:12:50 +0200 |
---|---|---|
committer | Malte Voos <git@mal.tc> | 2024-04-03 18:12:50 +0200 |
commit | 6eaea5ca33cfaeea7a7fc9434e082ce1a9e0c6c5 (patch) | |
tree | 0f65ca7bb4c5a951f132b6ad53582dc7b5dcc12a /fakefbdev/IOCTL.cpp | |
download | reMder-6eaea5ca33cfaeea7a7fc9434e082ce1a9e0c6c5.tar.gz reMder-6eaea5ca33cfaeea7a7fc9434e082ce1a9e0c6c5.zip |
init
Diffstat (limited to 'fakefbdev/IOCTL.cpp')
-rw-r--r-- | fakefbdev/IOCTL.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/fakefbdev/IOCTL.cpp b/fakefbdev/IOCTL.cpp new file mode 100644 index 0000000..90e2583 --- /dev/null +++ b/fakefbdev/IOCTL.cpp @@ -0,0 +1,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; + } +} |