|
216 | 216 | self->panel_io_config.data_width = (size_t) i; |
217 | 217 |
|
218 | 218 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
219 | | - mp_printf("pclk_hz=%lu\n", self->bus_config.pclk_hz); |
220 | | - mp_printf("hsync_pulse_width=%lu\n", self->bus_config.hsync_pulse_width); |
221 | | - mp_printf("hsync_back_porch=%lu\n", self->bus_config.hsync_back_porch); |
222 | | - mp_printf("hsync_front_porch=%lu\n", self->bus_config.hsync_front_porch); |
223 | | - mp_printf("vsync_pulse_width=%lu\n", self->bus_config.vsync_pulse_width); |
224 | | - mp_printf("vsync_back_porch=%lu\n", self->bus_config.vsync_back_porch); |
225 | | - mp_printf("vsync_front_porch=%lu\n", self->bus_config.vsync_front_porch); |
226 | | - mp_printf("hsync_idle_low=%d\n", self->bus_config.flags.hsync_idle_low); |
227 | | - mp_printf("vsync_idle_low=%d\n", self->bus_config.flags.vsync_idle_low); |
228 | | - mp_printf("de_idle_high=%d\n", self->bus_config.flags.de_idle_high); |
229 | | - mp_printf("pclk_active_neg=%d\n", self->bus_config.flags.pclk_active_neg); |
230 | | - mp_printf("pclk_idle_high=%d\n", self->bus_config.flags.pclk_idle_high); |
231 | | - mp_printf("clk_src=%d\n", self->panel_io_config.clk_src); |
232 | | - mp_printf("hsync_gpio_num=%d\n", self->panel_io_config.hsync_gpio_num); |
233 | | - mp_printf("vsync_gpio_num=%d\n", self->panel_io_config.vsync_gpio_num); |
234 | | - mp_printf("de_gpio_num=%d\n", self->panel_io_config.de_gpio_num); |
235 | | - mp_printf("pclk_gpio_num=%d\n", self->panel_io_config.pclk_gpio_num); |
236 | | - mp_printf("data_gpio_nums[0]=%d\n", self->panel_io_config.data_gpio_nums[0]); |
237 | | - mp_printf("data_gpio_nums[1]=%d\n", self->panel_io_config.data_gpio_nums[1]); |
238 | | - mp_printf("data_gpio_nums[2]=%d\n", self->panel_io_config.data_gpio_nums[2]); |
239 | | - mp_printf("data_gpio_nums[3]=%d\n", self->panel_io_config.data_gpio_nums[3]); |
240 | | - mp_printf("data_gpio_nums[4]=%d\n", self->panel_io_config.data_gpio_nums[4]); |
241 | | - mp_printf("data_gpio_nums[5]=%d\n", self->panel_io_config.data_gpio_nums[5]); |
242 | | - mp_printf("data_gpio_nums[6]=%d\n", self->panel_io_config.data_gpio_nums[6]); |
243 | | - mp_printf("data_gpio_nums[7]=%d\n", self->panel_io_config.data_gpio_nums[7]); |
244 | | - mp_printf("data_gpio_nums[8]=%d\n", self->panel_io_config.data_gpio_nums[8]); |
245 | | - mp_printf("data_gpio_nums[9]=%d\n", self->panel_io_config.data_gpio_nums[9]); |
246 | | - mp_printf("data_gpio_nums[10]=%d\n", self->panel_io_config.data_gpio_nums[10]); |
247 | | - mp_printf("data_gpio_nums[11]=%d\n", self->panel_io_config.data_gpio_nums[11]); |
248 | | - mp_printf("data_gpio_nums[12]=%d\n", self->panel_io_config.data_gpio_nums[12]); |
249 | | - mp_printf("data_gpio_nums[13]=%d\n", self->panel_io_config.data_gpio_nums[13]); |
250 | | - mp_printf("data_gpio_nums[14]=%d\n", self->panel_io_config.data_gpio_nums[14]); |
251 | | - mp_printf("data_gpio_nums[15]=%d\n", self->panel_io_config.data_gpio_nums[15]); |
252 | | - mp_printf("sram_trans_align=%d\n", self->panel_io_config.sram_trans_align); |
253 | | - mp_printf("psram_trans_align=%d\n", self->panel_io_config.psram_trans_align); |
254 | | - mp_printf("refresh_on_demand=%d\n", self->panel_io_config.flags.refresh_on_demand); |
255 | | - mp_printf("fb_in_psram=%d\n", self->panel_io_config.flags.fb_in_psram); |
256 | | - mp_printf("double_fb=%d\n", self->panel_io_config.flags.double_fb); |
257 | | - mp_printf("data_width=%d\n", self->panel_io_config.data_width); |
| 219 | + mp_printf(&mp_plat_print, "pclk_hz=%lu\n", self->bus_config.pclk_hz); |
| 220 | + mp_printf(&mp_plat_print, "hsync_pulse_width=%lu\n", self->bus_config.hsync_pulse_width); |
| 221 | + mp_printf(&mp_plat_print, "hsync_back_porch=%lu\n", self->bus_config.hsync_back_porch); |
| 222 | + mp_printf(&mp_plat_print, "hsync_front_porch=%lu\n", self->bus_config.hsync_front_porch); |
| 223 | + mp_printf(&mp_plat_print, "vsync_pulse_width=%lu\n", self->bus_config.vsync_pulse_width); |
| 224 | + mp_printf(&mp_plat_print, "vsync_back_porch=%lu\n", self->bus_config.vsync_back_porch); |
| 225 | + mp_printf(&mp_plat_print, "vsync_front_porch=%lu\n", self->bus_config.vsync_front_porch); |
| 226 | + mp_printf(&mp_plat_print, "hsync_idle_low=%d\n", self->bus_config.flags.hsync_idle_low); |
| 227 | + mp_printf(&mp_plat_print, "vsync_idle_low=%d\n", self->bus_config.flags.vsync_idle_low); |
| 228 | + mp_printf(&mp_plat_print, "de_idle_high=%d\n", self->bus_config.flags.de_idle_high); |
| 229 | + mp_printf(&mp_plat_print, "pclk_active_neg=%d\n", self->bus_config.flags.pclk_active_neg); |
| 230 | + mp_printf(&mp_plat_print, "pclk_idle_high=%d\n", self->bus_config.flags.pclk_idle_high); |
| 231 | + mp_printf(&mp_plat_print, "clk_src=%d\n", self->panel_io_config.clk_src); |
| 232 | + mp_printf(&mp_plat_print, "hsync_gpio_num=%d\n", self->panel_io_config.hsync_gpio_num); |
| 233 | + mp_printf(&mp_plat_print, "vsync_gpio_num=%d\n", self->panel_io_config.vsync_gpio_num); |
| 234 | + mp_printf(&mp_plat_print, "de_gpio_num=%d\n", self->panel_io_config.de_gpio_num); |
| 235 | + mp_printf(&mp_plat_print, "pclk_gpio_num=%d\n", self->panel_io_config.pclk_gpio_num); |
| 236 | + mp_printf(&mp_plat_print, "data_gpio_nums[0]=%d\n", self->panel_io_config.data_gpio_nums[0]); |
| 237 | + mp_printf(&mp_plat_print, "data_gpio_nums[1]=%d\n", self->panel_io_config.data_gpio_nums[1]); |
| 238 | + mp_printf(&mp_plat_print, "data_gpio_nums[2]=%d\n", self->panel_io_config.data_gpio_nums[2]); |
| 239 | + mp_printf(&mp_plat_print, "data_gpio_nums[3]=%d\n", self->panel_io_config.data_gpio_nums[3]); |
| 240 | + mp_printf(&mp_plat_print, "data_gpio_nums[4]=%d\n", self->panel_io_config.data_gpio_nums[4]); |
| 241 | + mp_printf(&mp_plat_print, "data_gpio_nums[5]=%d\n", self->panel_io_config.data_gpio_nums[5]); |
| 242 | + mp_printf(&mp_plat_print, "data_gpio_nums[6]=%d\n", self->panel_io_config.data_gpio_nums[6]); |
| 243 | + mp_printf(&mp_plat_print, "data_gpio_nums[7]=%d\n", self->panel_io_config.data_gpio_nums[7]); |
| 244 | + mp_printf(&mp_plat_print, "data_gpio_nums[8]=%d\n", self->panel_io_config.data_gpio_nums[8]); |
| 245 | + mp_printf(&mp_plat_print, "data_gpio_nums[9]=%d\n", self->panel_io_config.data_gpio_nums[9]); |
| 246 | + mp_printf(&mp_plat_print, "data_gpio_nums[10]=%d\n", self->panel_io_config.data_gpio_nums[10]); |
| 247 | + mp_printf(&mp_plat_print, "data_gpio_nums[11]=%d\n", self->panel_io_config.data_gpio_nums[11]); |
| 248 | + mp_printf(&mp_plat_print, "data_gpio_nums[12]=%d\n", self->panel_io_config.data_gpio_nums[12]); |
| 249 | + mp_printf(&mp_plat_print, "data_gpio_nums[13]=%d\n", self->panel_io_config.data_gpio_nums[13]); |
| 250 | + mp_printf(&mp_plat_print, "data_gpio_nums[14]=%d\n", self->panel_io_config.data_gpio_nums[14]); |
| 251 | + mp_printf(&mp_plat_print, "data_gpio_nums[15]=%d\n", self->panel_io_config.data_gpio_nums[15]); |
| 252 | + mp_printf(&mp_plat_print, "sram_trans_align=%d\n", self->panel_io_config.sram_trans_align); |
| 253 | + mp_printf(&mp_plat_print, "psram_trans_align=%d\n", self->panel_io_config.psram_trans_align); |
| 254 | + mp_printf(&mp_plat_print, "refresh_on_demand=%d\n", self->panel_io_config.flags.refresh_on_demand); |
| 255 | + mp_printf(&mp_plat_print, "fb_in_psram=%d\n", self->panel_io_config.flags.fb_in_psram); |
| 256 | + mp_printf(&mp_plat_print, "double_fb=%d\n", self->panel_io_config.flags.double_fb); |
| 257 | + mp_printf(&mp_plat_print, "data_width=%d\n", self->panel_io_config.data_width); |
258 | 258 | #endif |
259 | 259 |
|
260 | 260 | self->panel_io_handle.get_lane_count = &rgb_get_lane_count; |
|
274 | 274 | mp_lcd_rgb_bus_obj_t *self = (mp_lcd_rgb_bus_obj_t *)obj; |
275 | 275 |
|
276 | 276 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
277 | | - mp_printf("rgb_del(self)\n"); |
| 277 | + mp_printf(&mp_plat_print, "rgb_del(self)\n"); |
278 | 278 | #endif |
279 | 279 |
|
| 280 | + if (self->view1 != NULL || self->view2 != NULL) { |
| 281 | + mp_raise_msg(&mp_type_MemoryError, MP_ERROR_TEXT("Framebuffers have not been released")); |
| 282 | + return mp_const_none; |
| 283 | + } |
| 284 | + |
| 285 | + rgb_bus_lock_acquire(&self->tx_color_lock, -1); |
| 286 | + self->partial_buf = NULL; |
| 287 | + rgb_bus_event_set(&self->copy_task_exit); |
| 288 | + rgb_bus_lock_release(&self->copy_lock); |
| 289 | + rgb_bus_lock_release(&self->tx_color_lock); |
| 290 | + |
280 | 291 | mp_lcd_err_t ret = esp_lcd_panel_del(self->panel_handle); |
| 292 | + |
| 293 | + rgb_bus_lock_delete(&self->copy_lock); |
| 294 | + rgb_bus_lock_delete(&self->tx_color_lock); |
| 295 | + rgb_bus_lock_delete(&self->swap_lock); |
| 296 | + |
| 297 | + rgb_bus_event_delete(&self->swap_bufs); |
| 298 | + rgb_bus_event_delete(&self->last_update); |
| 299 | + rgb_bus_event_delete(&self->copy_task_exit); |
| 300 | + |
281 | 301 | return ret; |
282 | 302 | } |
283 | 303 |
|
|
287 | 307 | LCD_UNUSED(param); |
288 | 308 |
|
289 | 309 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
290 | | - mp_printf("rgb_rx_param(self, lcd_cmd=%d, param, param_size=%d)\n", lcd_cmd, param_size); |
| 310 | + mp_printf(&mp_plat_print, "rgb_rx_param(self, lcd_cmd=%d, param, param_size=%d)\n", lcd_cmd, param_size); |
291 | 311 | #else |
292 | 312 | LCD_UNUSED(lcd_cmd); |
293 | 313 | LCD_UNUSED(param_size); |
|
302 | 322 | LCD_UNUSED(param); |
303 | 323 |
|
304 | 324 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
305 | | - mp_printf("rgb_tx_param(self, lcd_cmd=%d, param, param_size=%d)\n", lcd_cmd, param_size); |
| 325 | + mp_printf(&mp_plat_print, "rgb_tx_param(self, lcd_cmd=%d, param, param_size=%d)\n", lcd_cmd, param_size); |
306 | 326 | #else |
307 | 327 | LCD_UNUSED(lcd_cmd); |
308 | 328 | LCD_UNUSED(param_size); |
|
327 | 347 | heap_caps_free(item_buf); |
328 | 348 | self->view1 = NULL; |
329 | 349 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
330 | | - mp_printf("rgb_free_framebuffer(self, buf=1)\n"); |
| 350 | + mp_printf(&mp_plat_print, "rgb_free_framebuffer(self, buf=1)\n"); |
331 | 351 | #endif |
332 | 352 | } else if (array_buf == self->view2) { |
333 | 353 | heap_caps_free(item_buf); |
334 | 354 | self->view2 = NULL; |
335 | 355 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
336 | | - mp_printf("rgb_free_framebuffer(self, buf=2)\n"); |
| 356 | + mp_printf(&mp_plat_print, "rgb_free_framebuffer(self, buf=2)\n"); |
337 | 357 | #endif |
338 | 358 | } else { |
339 | 359 | mp_raise_msg(&mp_type_MemoryError, MP_ERROR_TEXT("No matching buffer found")); |
|
344 | 364 | mp_obj_t rgb_allocate_framebuffer(mp_obj_t obj, uint32_t size, uint32_t caps) |
345 | 365 | { |
346 | 366 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
347 | | - mp_printf("rgb_allocate_framebuffer(self, size=%lu, caps=%lu)\n", size, caps); |
| 367 | + mp_printf(&mp_plat_print, "rgb_allocate_framebuffer(self, size=%lu, caps=%lu)\n", size, caps); |
348 | 368 | #endif |
349 | 369 |
|
350 | 370 | mp_lcd_rgb_bus_obj_t *self = (mp_lcd_rgb_bus_obj_t *)obj; |
|
380 | 400 | LCD_UNUSED(cmd_bits); |
381 | 401 | LCD_UNUSED(param_bits); |
382 | 402 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
383 | | - mp_printf("rgb_init(self, width=%i, height=%i, bpp=%d, buffer_size=%lu, rgb565_byte_swap=%d)\n", width, height, bpp, buffer_size, rgb565_byte_swap); |
| 403 | + mp_printf(&mp_plat_print, "rgb_init(self, width=%i, height=%i, bpp=%d, buffer_size=%lu, rgb565_byte_swap=%d)\n", width, height, bpp, buffer_size, rgb565_byte_swap); |
384 | 404 | #endif |
385 | 405 | mp_lcd_rgb_bus_obj_t *self = (mp_lcd_rgb_bus_obj_t *)obj; |
386 | 406 |
|
|
422 | 442 | self->panel_io_config.flags.double_fb = 1; |
423 | 443 |
|
424 | 444 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
425 | | - mp_printf("h_res=%lu\n", self->panel_io_config.timings.h_res); |
426 | | - mp_printf("v_res=%lu\n", self->panel_io_config.timings.v_res); |
427 | | - mp_printf("bits_per_pixel=%d\n", self->panel_io_config.bits_per_pixel); |
428 | | - mp_printf("rgb565_byte_swap=%d\n", self->rgb565_byte_swap); |
| 445 | + mp_printf(&mp_plat_print, "h_res=%lu\n", self->panel_io_config.timings.h_res); |
| 446 | + mp_printf(&mp_plat_print, "v_res=%lu\n", self->panel_io_config.timings.v_res); |
| 447 | + mp_printf(&mp_plat_print, "bits_per_pixel=%d\n", self->panel_io_config.bits_per_pixel); |
| 448 | + mp_printf(&mp_plat_print, "rgb565_byte_swap=%d\n", self->rgb565_byte_swap); |
429 | 449 | #endif |
430 | 450 | mp_lcd_err_t ret = esp_lcd_new_rgb_panel(&self->panel_io_config, &self->panel_handle); |
431 | 451 | if (ret != 0) { |
|
459 | 479 | self->idle_fb = rgb_panel->fbs[0]; |
460 | 480 |
|
461 | 481 | rgb_bus_lock_init(&self->copy_lock); |
| 482 | + rgb_bus_lock_init(&self->tx_color_lock); |
462 | 483 | rgb_bus_event_init(&self->copy_task_exit); |
463 | 484 | rgb_bus_event_init(&self->last_update); |
464 | | - rgb_bus_event_init(&self->partial_copy); |
465 | 485 | rgb_bus_event_init(&self->swap_bufs); |
466 | 486 | rgb_bus_lock_init(&self->swap_lock); |
467 | 487 |
|
|
478 | 498 | mp_lcd_rgb_bus_obj_t *self = (mp_lcd_rgb_bus_obj_t *)obj; |
479 | 499 | *lane_count = (uint8_t)self->panel_io_config.data_width; |
480 | 500 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
481 | | - mp_printf("rgb_get_lane_count(self)-> %d\n", (uint8_t)self->panel_io_config.data_width); |
| 501 | + mp_printf(&mp_plat_print, "rgb_get_lane_count(self)-> %d\n", (uint8_t)self->panel_io_config.data_width); |
482 | 502 | #endif |
483 | 503 |
|
484 | 504 | return LCD_OK; |
|
488 | 508 | mp_lcd_err_t rgb_tx_color(mp_obj_t obj, int lcd_cmd, void *color, size_t color_size, int x_start, int y_start, int x_end, int y_end, uint8_t rotation, bool last_update) |
489 | 509 | { |
490 | 510 | #if CONFIG_LCD_ENABLE_DEBUG_LOG |
491 | | - mp_printf("rgb_tx_color(self, lcd_cmd=%d, color, color_size=%d, x_start=%d, y_start=%d, x_end=%d, y_end=%d)\n", lcd_cmd, color_size, x_start, y_start, x_end, y_end); |
| 511 | + mp_printf(&mp_plat_print, "rgb_tx_color(self, lcd_cmd=%d, color, color_size=%d, x_start=%d, y_start=%d, x_end=%d, y_end=%d)\n", lcd_cmd, color_size, x_start, y_start, x_end, y_end); |
492 | 512 | #endif |
493 | 513 |
|
494 | 514 | LCD_UNUSED(color_size); |
495 | 515 |
|
496 | 516 | mp_lcd_rgb_bus_obj_t *self = (mp_lcd_rgb_bus_obj_t *)obj; |
| 517 | + |
| 518 | + rgb_bus_lock_acquire(&self->tx_color_lock, -1); |
| 519 | + |
497 | 520 | self->partial_buf = (uint8_t *)color; |
498 | 521 | self->x_start = x_start; |
499 | 522 | self->y_start = y_start; |
|
0 commit comments