.. | .. |
---|
218 | 218 | INTERLEAVE_EN, lb_params->interleave_en, /* Interleave source enable */ |
---|
219 | 219 | LB_DATA_FORMAT__ALPHA_EN, lb_params->alpha_en); /* Alpha enable */ |
---|
220 | 220 | } |
---|
| 221 | + else { |
---|
| 222 | + /* DSCL caps: pixel data processed in float format */ |
---|
| 223 | + REG_SET_2(LB_DATA_FORMAT, 0, |
---|
| 224 | + INTERLEAVE_EN, lb_params->interleave_en, /* Interleave source enable */ |
---|
| 225 | + LB_DATA_FORMAT__ALPHA_EN, lb_params->alpha_en); /* Alpha enable */ |
---|
| 226 | + } |
---|
221 | 227 | |
---|
222 | 228 | REG_SET_2(LB_MEMORY_CTRL, 0, |
---|
223 | 229 | MEMORY_CONFIG, mem_size_config, |
---|
.. | .. |
---|
610 | 616 | SCL_V_INIT_FRAC, init_frac, |
---|
611 | 617 | SCL_V_INIT_INT, init_int); |
---|
612 | 618 | |
---|
613 | | - init_frac = dc_fixpt_u0d19(data->inits.v_bot) << 5; |
---|
614 | | - init_int = dc_fixpt_floor(data->inits.v_bot); |
---|
615 | | - REG_SET_2(SCL_VERT_FILTER_INIT_BOT, 0, |
---|
616 | | - SCL_V_INIT_FRAC_BOT, init_frac, |
---|
617 | | - SCL_V_INIT_INT_BOT, init_int); |
---|
| 619 | + if (REG(SCL_VERT_FILTER_INIT_BOT)) { |
---|
| 620 | + init_frac = dc_fixpt_u0d19(data->inits.v_bot) << 5; |
---|
| 621 | + init_int = dc_fixpt_floor(data->inits.v_bot); |
---|
| 622 | + REG_SET_2(SCL_VERT_FILTER_INIT_BOT, 0, |
---|
| 623 | + SCL_V_INIT_FRAC_BOT, init_frac, |
---|
| 624 | + SCL_V_INIT_INT_BOT, init_int); |
---|
| 625 | + } |
---|
618 | 626 | |
---|
619 | 627 | init_frac = dc_fixpt_u0d19(data->inits.v_c) << 5; |
---|
620 | 628 | init_int = dc_fixpt_floor(data->inits.v_c); |
---|
.. | .. |
---|
622 | 630 | SCL_V_INIT_FRAC_C, init_frac, |
---|
623 | 631 | SCL_V_INIT_INT_C, init_int); |
---|
624 | 632 | |
---|
625 | | - init_frac = dc_fixpt_u0d19(data->inits.v_c_bot) << 5; |
---|
626 | | - init_int = dc_fixpt_floor(data->inits.v_c_bot); |
---|
627 | | - REG_SET_2(SCL_VERT_FILTER_INIT_BOT_C, 0, |
---|
628 | | - SCL_V_INIT_FRAC_BOT_C, init_frac, |
---|
629 | | - SCL_V_INIT_INT_BOT_C, init_int); |
---|
| 633 | + if (REG(SCL_VERT_FILTER_INIT_BOT_C)) { |
---|
| 634 | + init_frac = dc_fixpt_u0d19(data->inits.v_c_bot) << 5; |
---|
| 635 | + init_int = dc_fixpt_floor(data->inits.v_c_bot); |
---|
| 636 | + REG_SET_2(SCL_VERT_FILTER_INIT_BOT_C, 0, |
---|
| 637 | + SCL_V_INIT_FRAC_BOT_C, init_frac, |
---|
| 638 | + SCL_V_INIT_INT_BOT_C, init_int); |
---|
| 639 | + } |
---|
630 | 640 | } |
---|
631 | 641 | |
---|
632 | 642 | |
---|
.. | .. |
---|
701 | 711 | return; |
---|
702 | 712 | |
---|
703 | 713 | /* Black offsets */ |
---|
704 | | - if (ycbcr) |
---|
705 | | - REG_SET_2(SCL_BLACK_OFFSET, 0, |
---|
706 | | - SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y, |
---|
707 | | - SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_CBCR); |
---|
708 | | - else |
---|
| 714 | + if (REG(SCL_BLACK_OFFSET)) { |
---|
| 715 | + if (ycbcr) |
---|
| 716 | + REG_SET_2(SCL_BLACK_OFFSET, 0, |
---|
| 717 | + SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y, |
---|
| 718 | + SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_CBCR); |
---|
| 719 | + else |
---|
709 | 720 | |
---|
710 | | - REG_SET_2(SCL_BLACK_OFFSET, 0, |
---|
711 | | - SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y, |
---|
712 | | - SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_RGB_Y); |
---|
| 721 | + REG_SET_2(SCL_BLACK_OFFSET, 0, |
---|
| 722 | + SCL_BLACK_OFFSET_RGB_Y, BLACK_OFFSET_RGB_Y, |
---|
| 723 | + SCL_BLACK_OFFSET_CBCR, BLACK_OFFSET_RGB_Y); |
---|
| 724 | + } |
---|
713 | 725 | |
---|
714 | 726 | /* Manually calculate scale ratio and init values */ |
---|
715 | 727 | dpp1_dscl_set_manual_ratio_init(dpp, scl_data); |
---|