| .. | .. |
|---|
| 107 | 107 | } |
|---|
| 108 | 108 | } |
|---|
| 109 | 109 | |
|---|
| 110 | +bool rga_is_yuv420_planar_format(uint32_t format) |
|---|
| 111 | +{ |
|---|
| 112 | + switch (format) { |
|---|
| 113 | + case RGA_FORMAT_YCbCr_420_P: |
|---|
| 114 | + case RGA_FORMAT_YCrCb_420_P: |
|---|
| 115 | + return true; |
|---|
| 116 | + default: |
|---|
| 117 | + return false; |
|---|
| 118 | + } |
|---|
| 119 | +} |
|---|
| 120 | + |
|---|
| 121 | +bool rga_is_yuv420_semi_planar_format(uint32_t format) |
|---|
| 122 | +{ |
|---|
| 123 | + switch (format) { |
|---|
| 124 | + case RGA_FORMAT_YCbCr_420_SP: |
|---|
| 125 | + case RGA_FORMAT_YCrCb_420_SP: |
|---|
| 126 | + case RGA_FORMAT_YCbCr_420_SP_10B: |
|---|
| 127 | + case RGA_FORMAT_YCrCb_420_SP_10B: |
|---|
| 128 | + return true; |
|---|
| 129 | + default: |
|---|
| 130 | + return false; |
|---|
| 131 | + } |
|---|
| 132 | +} |
|---|
| 133 | + |
|---|
| 110 | 134 | bool rga_is_yuv422_packed_format(uint32_t format) |
|---|
| 111 | 135 | { |
|---|
| 112 | 136 | switch (format) { |
|---|
| .. | .. |
|---|
| 114 | 138 | case RGA_FORMAT_VYUY_422: |
|---|
| 115 | 139 | case RGA_FORMAT_YUYV_422: |
|---|
| 116 | 140 | case RGA_FORMAT_UYVY_422: |
|---|
| 141 | + return true; |
|---|
| 142 | + default: |
|---|
| 143 | + return false; |
|---|
| 144 | + } |
|---|
| 145 | +} |
|---|
| 146 | + |
|---|
| 147 | +bool rga_is_yuv422_planar_format(uint32_t format) |
|---|
| 148 | +{ |
|---|
| 149 | + switch (format) { |
|---|
| 150 | + case RGA_FORMAT_YCbCr_422_P: |
|---|
| 151 | + case RGA_FORMAT_YCrCb_422_P: |
|---|
| 152 | + return true; |
|---|
| 153 | + default: |
|---|
| 154 | + return false; |
|---|
| 155 | + } |
|---|
| 156 | +} |
|---|
| 157 | + |
|---|
| 158 | +bool rga_is_yuv422_semi_planar_format(uint32_t format) |
|---|
| 159 | +{ |
|---|
| 160 | + switch (format) { |
|---|
| 161 | + case RGA_FORMAT_YCbCr_422_SP: |
|---|
| 162 | + case RGA_FORMAT_YCrCb_422_SP: |
|---|
| 163 | + case RGA_FORMAT_YCbCr_422_SP_10B: |
|---|
| 164 | + case RGA_FORMAT_YCrCb_422_SP_10B: |
|---|
| 117 | 165 | return true; |
|---|
| 118 | 166 | default: |
|---|
| 119 | 167 | return false; |
|---|
| .. | .. |
|---|
| 481 | 529 | } |
|---|
| 482 | 530 | } |
|---|
| 483 | 531 | |
|---|
| 484 | | -const char *rga_get_blend_mode_str(uint16_t alpha_rop_flag, |
|---|
| 485 | | - uint16_t alpha_mode_0, |
|---|
| 486 | | - uint16_t alpha_mode_1) |
|---|
| 532 | +const char *rga_get_blend_mode_str(enum rga_alpha_blend_mode mode) |
|---|
| 487 | 533 | { |
|---|
| 488 | | - if (alpha_rop_flag == 0) { |
|---|
| 534 | + switch (mode) { |
|---|
| 535 | + case RGA_ALPHA_NONE: |
|---|
| 489 | 536 | return "no blend"; |
|---|
| 490 | | - } else if (alpha_rop_flag == 0x9) { |
|---|
| 491 | | - if (alpha_mode_0 == 0x381A && alpha_mode_1 == 0x381A) |
|---|
| 492 | | - return "105 src + (1-src.a)*dst"; |
|---|
| 493 | | - else if (alpha_mode_0 == 0x483A && alpha_mode_1 == 0x483A) |
|---|
| 494 | | - return "405 src.a * src + (1-src.a) * dst"; |
|---|
| 495 | | - else |
|---|
| 496 | | - return "check reg for more imformation"; |
|---|
| 497 | | - } else { |
|---|
| 537 | + |
|---|
| 538 | + case RGA_ALPHA_BLEND_SRC: |
|---|
| 539 | + return "src"; |
|---|
| 540 | + |
|---|
| 541 | + case RGA_ALPHA_BLEND_DST: |
|---|
| 542 | + return "dst"; |
|---|
| 543 | + |
|---|
| 544 | + case RGA_ALPHA_BLEND_SRC_OVER: |
|---|
| 545 | + return "src-over"; |
|---|
| 546 | + |
|---|
| 547 | + case RGA_ALPHA_BLEND_DST_OVER: |
|---|
| 548 | + return "dst-over"; |
|---|
| 549 | + |
|---|
| 550 | + case RGA_ALPHA_BLEND_SRC_IN: |
|---|
| 551 | + return "src-in"; |
|---|
| 552 | + |
|---|
| 553 | + case RGA_ALPHA_BLEND_DST_IN: |
|---|
| 554 | + return "dst-in"; |
|---|
| 555 | + |
|---|
| 556 | + case RGA_ALPHA_BLEND_SRC_OUT: |
|---|
| 557 | + return "src-out"; |
|---|
| 558 | + |
|---|
| 559 | + case RGA_ALPHA_BLEND_DST_OUT: |
|---|
| 560 | + return "dst-out"; |
|---|
| 561 | + |
|---|
| 562 | + case RGA_ALPHA_BLEND_SRC_ATOP: |
|---|
| 563 | + return "src-atop"; |
|---|
| 564 | + |
|---|
| 565 | + case RGA_ALPHA_BLEND_DST_ATOP: |
|---|
| 566 | + return "dst-atop"; |
|---|
| 567 | + |
|---|
| 568 | + case RGA_ALPHA_BLEND_XOR: |
|---|
| 569 | + return "xor"; |
|---|
| 570 | + |
|---|
| 571 | + case RGA_ALPHA_BLEND_CLEAR: |
|---|
| 572 | + return "clear"; |
|---|
| 573 | + |
|---|
| 574 | + default: |
|---|
| 498 | 575 | return "check reg for more imformation"; |
|---|
| 499 | 576 | } |
|---|
| 500 | 577 | } |
|---|
| .. | .. |
|---|
| 524 | 601 | return "RK_IOMMU"; |
|---|
| 525 | 602 | default: |
|---|
| 526 | 603 | return "NONE_MMU"; |
|---|
| 604 | + } |
|---|
| 605 | +} |
|---|
| 606 | + |
|---|
| 607 | +const char *rga_get_core_name(enum RGA_SCHEDULER_CORE core) |
|---|
| 608 | +{ |
|---|
| 609 | + switch (core) { |
|---|
| 610 | + case RGA_SCHEDULER_RGA3_CORE0: |
|---|
| 611 | + return "RGA3_core0"; |
|---|
| 612 | + case RGA_SCHEDULER_RGA3_CORE1: |
|---|
| 613 | + return "RGA3_core1"; |
|---|
| 614 | + case RGA_SCHEDULER_RGA2_CORE0: |
|---|
| 615 | + return "RGA2_core0"; |
|---|
| 616 | + default: |
|---|
| 617 | + return "unknown_core"; |
|---|
| 527 | 618 | } |
|---|
| 528 | 619 | } |
|---|
| 529 | 620 | |
|---|
| .. | .. |
|---|
| 665 | 756 | |
|---|
| 666 | 757 | return (yrgb + uv + v); |
|---|
| 667 | 758 | } |
|---|
| 759 | + |
|---|
| 760 | +void rga_dump_memory_parm(struct rga_memory_parm *parm) |
|---|
| 761 | +{ |
|---|
| 762 | + pr_info("memory param: w = %d, h = %d, f = %s(0x%x), size = %d\n", |
|---|
| 763 | + parm->width, parm->height, rga_get_format_name(parm->format), |
|---|
| 764 | + parm->format, parm->size); |
|---|
| 765 | +} |
|---|
| 766 | + |
|---|
| 767 | +void rga_dump_external_buffer(struct rga_external_buffer *buffer) |
|---|
| 768 | +{ |
|---|
| 769 | + pr_info("external: memory = 0x%lx, type = %s\n", |
|---|
| 770 | + (unsigned long)buffer->memory, rga_get_memory_type_str(buffer->type)); |
|---|
| 771 | + rga_dump_memory_parm(&buffer->memory_parm); |
|---|
| 772 | +} |
|---|