| .. | .. |
|---|
| 86 | 86 | RGA_SCALE_DOWN_AVG = 0x1, |
|---|
| 87 | 87 | }; |
|---|
| 88 | 88 | |
|---|
| 89 | +enum RGA_SCHEDULER_CORE { |
|---|
| 90 | + RGA_SCHEDULER_RGA3_CORE0 = 1 << 0, |
|---|
| 91 | + RGA_SCHEDULER_RGA3_CORE1 = 1 << 1, |
|---|
| 92 | + RGA_SCHEDULER_RGA2_CORE0 = 1 << 2, |
|---|
| 93 | +}; |
|---|
| 94 | + |
|---|
| 89 | 95 | /* RGA process mode enum */ |
|---|
| 90 | 96 | enum { |
|---|
| 91 | 97 | BITBLT_MODE = 0x0, |
|---|
| .. | .. |
|---|
| 139 | 145 | RGA_YUV_VDS = 0x1 << 10, |
|---|
| 140 | 146 | RGA_OSD = 0x1 << 11, |
|---|
| 141 | 147 | RGA_PRE_INTR = 0x1 << 12, |
|---|
| 148 | + RGA_FULL_CSC = 0x1 << 13, |
|---|
| 142 | 149 | }; |
|---|
| 143 | 150 | |
|---|
| 144 | 151 | enum rga_surf_format { |
|---|
| .. | .. |
|---|
| 201 | 208 | RGA_FORMAT_RGBA_2BPP = 0x30, |
|---|
| 202 | 209 | |
|---|
| 203 | 210 | RGA_FORMAT_UNKNOWN = 0x100, |
|---|
| 211 | +}; |
|---|
| 212 | + |
|---|
| 213 | +enum rga_alpha_mode { |
|---|
| 214 | + RGA_ALPHA_STRAIGHT = 0, |
|---|
| 215 | + RGA_ALPHA_INVERSE = 1, |
|---|
| 216 | +}; |
|---|
| 217 | + |
|---|
| 218 | +enum rga_global_blend_mode { |
|---|
| 219 | + RGA_ALPHA_GLOBAL = 0, |
|---|
| 220 | + RGA_ALPHA_PER_PIXEL = 1, |
|---|
| 221 | + RGA_ALPHA_PER_PIXEL_GLOBAL = 2, |
|---|
| 222 | +}; |
|---|
| 223 | + |
|---|
| 224 | +enum rga_alpha_cal_mode { |
|---|
| 225 | + RGA_ALPHA_SATURATION = 0, |
|---|
| 226 | + RGA_ALPHA_NO_SATURATION = 1, |
|---|
| 227 | +}; |
|---|
| 228 | + |
|---|
| 229 | +enum rga_factor_mode { |
|---|
| 230 | + RGA_ALPHA_ZERO = 0, |
|---|
| 231 | + RGA_ALPHA_ONE = 1, |
|---|
| 232 | + /* |
|---|
| 233 | + * When used as a factor for the SRC channel, it indicates |
|---|
| 234 | + * the use of the DST channel's alpha value, and vice versa. |
|---|
| 235 | + */ |
|---|
| 236 | + RGA_ALPHA_OPPOSITE = 2, |
|---|
| 237 | + RGA_ALPHA_OPPOSITE_INVERSE = 3, |
|---|
| 238 | + RGA_ALPHA_OWN = 4, |
|---|
| 239 | +}; |
|---|
| 240 | + |
|---|
| 241 | +enum rga_color_mode { |
|---|
| 242 | + RGA_ALPHA_PRE_MULTIPLIED = 0, |
|---|
| 243 | + RGA_ALPHA_NO_PRE_MULTIPLIED = 1, |
|---|
| 244 | +}; |
|---|
| 245 | + |
|---|
| 246 | +enum rga_alpha_blend_mode { |
|---|
| 247 | + RGA_ALPHA_NONE = 0, |
|---|
| 248 | + RGA_ALPHA_BLEND_SRC, |
|---|
| 249 | + RGA_ALPHA_BLEND_DST, |
|---|
| 250 | + RGA_ALPHA_BLEND_SRC_OVER, |
|---|
| 251 | + RGA_ALPHA_BLEND_DST_OVER, |
|---|
| 252 | + RGA_ALPHA_BLEND_SRC_IN, |
|---|
| 253 | + RGA_ALPHA_BLEND_DST_IN, |
|---|
| 254 | + RGA_ALPHA_BLEND_SRC_OUT, |
|---|
| 255 | + RGA_ALPHA_BLEND_DST_OUT, |
|---|
| 256 | + RGA_ALPHA_BLEND_SRC_ATOP, |
|---|
| 257 | + RGA_ALPHA_BLEND_DST_ATOP, |
|---|
| 258 | + RGA_ALPHA_BLEND_XOR, |
|---|
| 259 | + RGA_ALPHA_BLEND_CLEAR, |
|---|
| 204 | 260 | }; |
|---|
| 205 | 261 | |
|---|
| 206 | 262 | #define RGA_SCHED_PRIORITY_DEFAULT 0 |
|---|
| .. | .. |
|---|
| 329 | 385 | struct rga_csc_coe coe_y; |
|---|
| 330 | 386 | struct rga_csc_coe coe_u; |
|---|
| 331 | 387 | struct rga_csc_coe coe_v; |
|---|
| 388 | +}; |
|---|
| 389 | + |
|---|
| 390 | +struct rga_csc_range { |
|---|
| 391 | + uint16_t max; |
|---|
| 392 | + uint16_t min; |
|---|
| 393 | +}; |
|---|
| 394 | + |
|---|
| 395 | +struct rga_csc_clip { |
|---|
| 396 | + struct rga_csc_range y; |
|---|
| 397 | + struct rga_csc_range uv; |
|---|
| 332 | 398 | }; |
|---|
| 333 | 399 | |
|---|
| 334 | 400 | struct rga_mosaic_info { |
|---|
| .. | .. |
|---|
| 507 | 573 | uint16_t enable; |
|---|
| 508 | 574 | }; |
|---|
| 509 | 575 | |
|---|
| 576 | +struct rga_feature { |
|---|
| 577 | + uint32_t global_alpha_en:1; |
|---|
| 578 | + uint32_t full_csc_clip_en:1; |
|---|
| 579 | + uint32_t user_close_fence:1; |
|---|
| 580 | +}; |
|---|
| 581 | + |
|---|
| 510 | 582 | struct rga_req { |
|---|
| 511 | 583 | /* (enum) process mode sel */ |
|---|
| 512 | 584 | uint8_t render_mode; |
|---|
| .. | .. |
|---|
| 563 | 635 | /* porter duff alpha mode sel */ |
|---|
| 564 | 636 | uint8_t PD_mode; |
|---|
| 565 | 637 | |
|---|
| 566 | | - /* global alpha value */ |
|---|
| 638 | + /* legacy: global alpha value */ |
|---|
| 567 | 639 | uint8_t alpha_global_value; |
|---|
| 568 | 640 | |
|---|
| 569 | 641 | /* rop2/3/4 code scan from rop code table*/ |
|---|
| .. | .. |
|---|
| 625 | 697 | |
|---|
| 626 | 698 | struct rga_pre_intr_info pre_intr_info; |
|---|
| 627 | 699 | |
|---|
| 628 | | - uint8_t reservr[59]; |
|---|
| 700 | + /* global alpha */ |
|---|
| 701 | + uint8_t fg_global_alpha; |
|---|
| 702 | + uint8_t bg_global_alpha; |
|---|
| 703 | + |
|---|
| 704 | + struct rga_feature feature; |
|---|
| 705 | + |
|---|
| 706 | + struct rga_csc_clip full_csc_clip; |
|---|
| 707 | + |
|---|
| 708 | + uint8_t reservr[43]; |
|---|
| 709 | +}; |
|---|
| 710 | + |
|---|
| 711 | +struct rga_alpha_config { |
|---|
| 712 | + bool enable; |
|---|
| 713 | + bool fg_pre_multiplied; |
|---|
| 714 | + bool bg_pre_multiplied; |
|---|
| 715 | + bool fg_pixel_alpha_en; |
|---|
| 716 | + bool bg_pixel_alpha_en; |
|---|
| 717 | + bool fg_global_alpha_en; |
|---|
| 718 | + bool bg_global_alpha_en; |
|---|
| 719 | + uint16_t fg_global_alpha_value; |
|---|
| 720 | + uint16_t bg_global_alpha_value; |
|---|
| 721 | + enum rga_alpha_blend_mode mode; |
|---|
| 629 | 722 | }; |
|---|
| 630 | 723 | |
|---|
| 631 | 724 | struct rga2_req { |
|---|
| .. | .. |
|---|
| 672 | 765 | /* ([7] = 1 gradient fill mode sel) */ |
|---|
| 673 | 766 | u16 alpha_rop_flag; |
|---|
| 674 | 767 | |
|---|
| 675 | | - /* [0] SrcAlphaMode0 */ |
|---|
| 676 | | - /* [2:1] SrcGlobalAlphaMode0 */ |
|---|
| 677 | | - /* [3] SrcAlphaSelectMode0 */ |
|---|
| 678 | | - /* [6:4] SrcFactorMode0 */ |
|---|
| 679 | | - /* [7] SrcColorMode */ |
|---|
| 680 | | - |
|---|
| 681 | | - /* [8] DstAlphaMode0 */ |
|---|
| 682 | | - /* [10:9] DstGlobalAlphaMode0 */ |
|---|
| 683 | | - /* [11] DstAlphaSelectMode0 */ |
|---|
| 684 | | - /* [14:12] DstFactorMode0 */ |
|---|
| 685 | | - /* [15] DstColorMode0 */ |
|---|
| 686 | | - u16 alpha_mode_0; |
|---|
| 687 | | - |
|---|
| 688 | | - /* [0] SrcAlphaMode1 */ |
|---|
| 689 | | - /* [2:1] SrcGlobalAlphaMode1 */ |
|---|
| 690 | | - /* [3] SrcAlphaSelectMode1 */ |
|---|
| 691 | | - /* [6:4] SrcFactorMode1 */ |
|---|
| 692 | | - |
|---|
| 693 | | - /* [8] DstAlphaMode1 */ |
|---|
| 694 | | - /* [10:9] DstGlobalAlphaMode1 */ |
|---|
| 695 | | - /* [11] DstAlphaSelectMode1 */ |
|---|
| 696 | | - /* [14:12] DstFactorMode1 */ |
|---|
| 697 | | - u16 alpha_mode_1; |
|---|
| 768 | + struct rga_alpha_config alpha_config; |
|---|
| 698 | 769 | |
|---|
| 699 | 770 | /* 0 1 2 3 */ |
|---|
| 700 | 771 | u8 scale_bicu_mode; |
|---|
| .. | .. |
|---|
| 782 | 853 | |
|---|
| 783 | 854 | u16 alpha_rop_flag; |
|---|
| 784 | 855 | |
|---|
| 785 | | - u16 alpha_mode_0; |
|---|
| 786 | | - u16 alpha_mode_1; |
|---|
| 856 | + struct rga_alpha_config alpha_config; |
|---|
| 857 | + |
|---|
| 858 | + /* for abb mode presever alpha. */ |
|---|
| 859 | + bool abb_alpha_pass; |
|---|
| 787 | 860 | |
|---|
| 788 | 861 | u8 scale_bicu_mode; |
|---|
| 789 | 862 | |
|---|