Lines Matching refs:dsc
56 static int fbdev_init_mem2(lv_nuttx_fb_t * dsc);
77 lv_nuttx_fb_t * dsc = lv_malloc_zeroed(sizeof(lv_nuttx_fb_t)); in lv_nuttx_fbdev_create() local
78 LV_ASSERT_MALLOC(dsc); in lv_nuttx_fbdev_create()
79 if(dsc == NULL) return NULL; in lv_nuttx_fbdev_create()
83 lv_free(dsc); in lv_nuttx_fbdev_create()
86 dsc->fd = -1; in lv_nuttx_fbdev_create()
87 lv_display_set_driver_data(disp, dsc); in lv_nuttx_fbdev_create()
97 lv_nuttx_fb_t * dsc = lv_display_get_driver_data(disp); in lv_nuttx_fbdev_set_file() local
99 if(dsc->fd >= 0) close(dsc->fd); in lv_nuttx_fbdev_set_file()
103 dsc->fd = open(file, O_RDWR); in lv_nuttx_fbdev_set_file()
104 if(dsc->fd < 0) { in lv_nuttx_fbdev_set_file()
110 if(ioctl(dsc->fd, FBIOGET_VIDEOINFO, (unsigned long)((uintptr_t)&dsc->vinfo)) < 0) { in lv_nuttx_fbdev_set_file()
117 LV_LOG_USER(" fmt: %u", dsc->vinfo.fmt); in lv_nuttx_fbdev_set_file()
118 LV_LOG_USER(" xres: %u", dsc->vinfo.xres); in lv_nuttx_fbdev_set_file()
119 LV_LOG_USER(" yres: %u", dsc->vinfo.yres); in lv_nuttx_fbdev_set_file()
120 LV_LOG_USER(" nplanes: %u", dsc->vinfo.nplanes); in lv_nuttx_fbdev_set_file()
122 if((ret = fbdev_get_pinfo(dsc->fd, &dsc->pinfo)) < 0) { in lv_nuttx_fbdev_set_file()
126 lv_color_format_t color_format = fb_fmt_to_color_format(dsc->vinfo.fmt); in lv_nuttx_fbdev_set_file()
131 dsc->mem = mmap(NULL, dsc->pinfo.fblen, PROT_READ | PROT_WRITE, in lv_nuttx_fbdev_set_file()
132 MAP_SHARED | MAP_FILE, dsc->fd, 0); in lv_nuttx_fbdev_set_file()
133 if(dsc->mem == MAP_FAILED) { in lv_nuttx_fbdev_set_file()
139 uint32_t w = dsc->vinfo.xres; in lv_nuttx_fbdev_set_file()
140 uint32_t h = dsc->vinfo.yres; in lv_nuttx_fbdev_set_file()
141 uint32_t stride = dsc->pinfo.stride; in lv_nuttx_fbdev_set_file()
143 lv_draw_buf_init(&dsc->buf1, w, h, color_format, stride, dsc->mem, data_size); in lv_nuttx_fbdev_set_file()
146 bool double_buffer = dsc->pinfo.yres_virtual == (dsc->vinfo.yres * 2); in lv_nuttx_fbdev_set_file()
148 if((ret = fbdev_init_mem2(dsc)) < 0) { in lv_nuttx_fbdev_set_file()
152 lv_draw_buf_init(&dsc->buf2, w, h, color_format, stride, dsc->mem2, data_size); in lv_nuttx_fbdev_set_file()
153 lv_display_set_draw_buffers(disp, &dsc->buf1, &dsc->buf2); in lv_nuttx_fbdev_set_file()
156 dsc->mem_off_screen = malloc(data_size); in lv_nuttx_fbdev_set_file()
157 LV_ASSERT_MALLOC(dsc->mem_off_screen); in lv_nuttx_fbdev_set_file()
158 if(!dsc->mem_off_screen) { in lv_nuttx_fbdev_set_file()
164 … LV_LOG_USER("Use off-screen mode, memory: %p, size: %" LV_PRIu32, dsc->mem_off_screen, data_size); in lv_nuttx_fbdev_set_file()
165 lv_draw_buf_init(&dsc->buf2, w, h, color_format, stride, dsc->mem_off_screen, data_size); in lv_nuttx_fbdev_set_file()
166 lv_display_set_draw_buffers(disp, &dsc->buf2, NULL); in lv_nuttx_fbdev_set_file()
171 lv_display_set_resolution(disp, dsc->vinfo.xres, dsc->vinfo.yres); in lv_nuttx_fbdev_set_file()
175 dsc->vinfo.xres, dsc->vinfo.yres, lv_display_get_dpi(disp)); in lv_nuttx_fbdev_set_file()
179 close(dsc->fd); in lv_nuttx_fbdev_set_file()
180 dsc->fd = -1; in lv_nuttx_fbdev_set_file()
219 lv_nuttx_fb_t * dsc = lv_display_get_driver_data(disp); in display_refr_timer_cb() local
223 pfds[0].fd = dsc->fd; in display_refr_timer_cb()
240 lv_nuttx_fb_t * dsc = lv_display_get_driver_data(disp); in flush_cb() local
242 if(dsc->mem_off_screen) { in flush_cb()
245 lv_draw_buf_copy(&dsc->buf1, area, &dsc->buf2, area); in flush_cb()
258 0 : dsc->mem2_yoffset; in flush_cb()
270 if(ioctl(dsc->fd, FBIO_UPDATE, (unsigned long)((uintptr_t)&fb_area)) < 0) { in flush_cb()
277 if(dsc->mem2 != NULL) { in flush_cb()
279 dsc->pinfo.yoffset = 0; in flush_cb()
282 dsc->pinfo.yoffset = dsc->mem2_yoffset; in flush_cb()
285 if(ioctl(dsc->fd, FBIOPAN_DISPLAY, (unsigned long)((uintptr_t) & (dsc->pinfo))) < 0) { in flush_cb()
329 static int fbdev_init_mem2(lv_nuttx_fb_t * dsc) in fbdev_init_mem2() argument
339 pinfo.display = dsc->pinfo.display + 1; in fbdev_init_mem2()
341 if((ret = fbdev_get_pinfo(dsc->fd, &pinfo)) < 0) { in fbdev_init_mem2()
347 if(pinfo.bpp != dsc->pinfo.bpp) { in fbdev_init_mem2()
356 buf_offset = pinfo.fbmem - dsc->mem; in fbdev_init_mem2()
358 if((buf_offset % dsc->pinfo.stride) != 0) { in fbdev_init_mem2()
362 buf_offset, dsc->pinfo.stride); in fbdev_init_mem2()
368 dsc->mem2_yoffset = dsc->vinfo.yres; in fbdev_init_mem2()
369 dsc->mem2 = pinfo.fbmem + dsc->mem2_yoffset * pinfo.stride; in fbdev_init_mem2()
371 dsc->mem2, dsc->mem2_yoffset); in fbdev_init_mem2()
374 dsc->mem2_yoffset = buf_offset / dsc->pinfo.stride; in fbdev_init_mem2()
375 dsc->mem2 = pinfo.fbmem; in fbdev_init_mem2()
377 dsc->mem2, dsc->mem2_yoffset); in fbdev_init_mem2()
386 lv_nuttx_fb_t * dsc = lv_display_get_driver_data(disp); in display_release_cb() local
387 if(dsc) { in display_release_cb()
391 if(dsc->fd >= 0) { in display_release_cb()
392 close(dsc->fd); in display_release_cb()
393 dsc->fd = -1; in display_release_cb()
396 if(dsc->mem_off_screen) { in display_release_cb()
398 free(dsc->mem_off_screen); in display_release_cb()
399 dsc->mem_off_screen = NULL; in display_release_cb()
402 lv_free(dsc); in display_release_cb()