| .. | .. |
|---|
| 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); |
|---|