#include "IOCTL.h" #include "SharedBuffer.h" #include #include #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; } }