|
@@ -551,6 +551,7 @@ static void _sde_encoder_phys_wb_setup_cwb(struct sde_encoder_phys *phys_enc, bo
|
|
struct sde_hw_pingpong *hw_pp = phys_enc->hw_pp;
|
|
struct sde_hw_pingpong *hw_pp = phys_enc->hw_pp;
|
|
struct sde_hw_dnsc_blur *hw_dnsc_blur = phys_enc->hw_dnsc_blur;
|
|
struct sde_hw_dnsc_blur *hw_dnsc_blur = phys_enc->hw_dnsc_blur;
|
|
bool need_merge = (crtc->num_mixers > 1);
|
|
bool need_merge = (crtc->num_mixers > 1);
|
|
|
|
+ enum sde_dcwb;
|
|
int i = 0;
|
|
int i = 0;
|
|
const int num_wb = 1;
|
|
const int num_wb = 1;
|
|
|
|
|
|
@@ -575,10 +576,13 @@ static void _sde_encoder_phys_wb_setup_cwb(struct sde_encoder_phys *phys_enc, bo
|
|
intf_cfg.wb_count = num_wb;
|
|
intf_cfg.wb_count = num_wb;
|
|
intf_cfg.wb[0] = hw_wb->idx;
|
|
intf_cfg.wb[0] = hw_wb->idx;
|
|
|
|
|
|
- for (i = 0; i < crtc->num_mixers; i++)
|
|
|
|
- intf_cfg.cwb[intf_cfg.cwb_count++] = (enum sde_cwb)
|
|
|
|
- (test_bit(SDE_WB_DCWB_CTRL, &hw_wb->caps->features) ?
|
|
|
|
- ((hw_pp->idx % 2) + i) : (hw_pp->idx + i));
|
|
|
|
|
|
+ for (i = 0; i < crtc->num_mixers; i++) {
|
|
|
|
+ if (test_bit(SDE_WB_DCWB_CTRL, &hw_wb->caps->features))
|
|
|
|
+ intf_cfg.cwb[intf_cfg.cwb_count++] =
|
|
|
|
+ (enum sde_cwb)(hw_pp->dcwb_idx + i);
|
|
|
|
+ else
|
|
|
|
+ intf_cfg.cwb[intf_cfg.cwb_count++] = (enum sde_cwb)(hw_pp->idx + i);
|
|
|
|
+ }
|
|
|
|
|
|
if (hw_pp->merge_3d && (intf_cfg.merge_3d_count <
|
|
if (hw_pp->merge_3d && (intf_cfg.merge_3d_count <
|
|
MAX_MERGE_3D_PER_CTL_V1) && need_merge)
|
|
MAX_MERGE_3D_PER_CTL_V1) && need_merge)
|
|
@@ -1275,7 +1279,7 @@ static void _sde_encoder_phys_wb_update_cwb_flush(struct sde_encoder_phys *phys_
|
|
struct sde_hw_dnsc_blur *hw_dnsc_blur;
|
|
struct sde_hw_dnsc_blur *hw_dnsc_blur;
|
|
struct sde_crtc *crtc;
|
|
struct sde_crtc *crtc;
|
|
struct sde_crtc_state *crtc_state;
|
|
struct sde_crtc_state *crtc_state;
|
|
- int i = 0, cwb_capture_mode = 0;
|
|
|
|
|
|
+ int cwb_capture_mode = 0;
|
|
enum sde_cwb cwb_idx = 0;
|
|
enum sde_cwb cwb_idx = 0;
|
|
enum sde_dcwb dcwb_idx = 0;
|
|
enum sde_dcwb dcwb_idx = 0;
|
|
enum sde_cwb src_pp_idx = 0;
|
|
enum sde_cwb src_pp_idx = 0;
|
|
@@ -1312,7 +1316,7 @@ static void _sde_encoder_phys_wb_update_cwb_flush(struct sde_encoder_phys *phys_
|
|
need_merge = (crtc->num_mixers > 1) ? true : false;
|
|
need_merge = (crtc->num_mixers > 1) ? true : false;
|
|
|
|
|
|
if (test_bit(SDE_WB_DCWB_CTRL, &hw_wb->caps->features)) {
|
|
if (test_bit(SDE_WB_DCWB_CTRL, &hw_wb->caps->features)) {
|
|
- dcwb_idx = (enum sde_dcwb) ((hw_pp->idx % 2) + i);
|
|
|
|
|
|
+ dcwb_idx = hw_pp->dcwb_idx;
|
|
if ((dcwb_idx + crtc->num_mixers) > DCWB_MAX) {
|
|
if ((dcwb_idx + crtc->num_mixers) > DCWB_MAX) {
|
|
SDE_ERROR("[enc:%d, wb:%d] invalid DCWB config; dcwb=%d, num_lm=%d\n",
|
|
SDE_ERROR("[enc:%d, wb:%d] invalid DCWB config; dcwb=%d, num_lm=%d\n",
|
|
DRMID(phys_enc->parent), WBID(wb_enc), dcwb_idx, crtc->num_mixers);
|
|
DRMID(phys_enc->parent), WBID(wb_enc), dcwb_idx, crtc->num_mixers);
|