Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 615e9e46 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/sde: fix errors with pp-split video mode"

parents fbe1061e 821985b9
Loading
Loading
Loading
Loading
+11 −0
Original line number Original line Diff line number Diff line
@@ -644,9 +644,20 @@ static void sde_encoder_phys_cmd_enable_helper(


	_sde_encoder_phys_cmd_pingpong_config(phys_enc);
	_sde_encoder_phys_cmd_pingpong_config(phys_enc);


	/*
	 * For pp-split, skip setting the flush bit for the slave intf, since
	 * both intfs use same ctl and HW will only flush the master.
	 */
	if (_sde_encoder_phys_is_ppsplit(phys_enc) &&
		!sde_encoder_phys_cmd_is_master(phys_enc))
		goto skip_flush;

	ctl = phys_enc->hw_ctl;
	ctl = phys_enc->hw_ctl;
	ctl->ops.get_bitmask_intf(ctl, &flush_mask, phys_enc->intf_idx);
	ctl->ops.get_bitmask_intf(ctl, &flush_mask, phys_enc->intf_idx);
	ctl->ops.update_pending_flush(ctl, flush_mask);
	ctl->ops.update_pending_flush(ctl, flush_mask);

skip_flush:
	return;
}
}


static void sde_encoder_phys_cmd_enable(struct sde_encoder_phys *phys_enc)
static void sde_encoder_phys_cmd_enable(struct sde_encoder_phys *phys_enc)
+12 −2
Original line number Original line Diff line number Diff line
@@ -617,9 +617,18 @@ static void sde_encoder_phys_vid_enable(struct sde_encoder_phys *phys_enc)
		goto end;
		goto end;
	}
	}


	/*
	 * For pp-split, skip setting the flush bit for the slave intf, since
	 * both intfs use same ctl and HW will only flush the master.
	 */
	if (_sde_encoder_phys_is_ppsplit(phys_enc) &&
		!sde_encoder_phys_vid_is_master(phys_enc))
		goto skip_flush;

	ctl->ops.get_bitmask_intf(ctl, &flush_mask, intf->idx);
	ctl->ops.get_bitmask_intf(ctl, &flush_mask, intf->idx);
	ctl->ops.update_pending_flush(ctl, flush_mask);
	ctl->ops.update_pending_flush(ctl, flush_mask);


skip_flush:
	SDE_DEBUG_VIDENC(vid_enc, "update pending flush ctl %d flush_mask %x\n",
	SDE_DEBUG_VIDENC(vid_enc, "update pending flush ctl %d flush_mask %x\n",
		ctl->idx - CTL_0, flush_mask);
		ctl->idx - CTL_0, flush_mask);


@@ -677,8 +686,9 @@ static int sde_encoder_phys_vid_wait_for_vblank(
	int ret;
	int ret;


	if (!sde_encoder_phys_vid_is_master(phys_enc)) {
	if (!sde_encoder_phys_vid_is_master(phys_enc)) {
		/* always signal done for slave video encoder */
		/* signal done for slave video encoder, unless it is pp-split */
		if (notify && phys_enc->parent_ops.handle_frame_done)
		if (!_sde_encoder_phys_is_ppsplit(phys_enc) &&
			notify && phys_enc->parent_ops.handle_frame_done)
			phys_enc->parent_ops.handle_frame_done(
			phys_enc->parent_ops.handle_frame_done(
					phys_enc->parent, phys_enc,
					phys_enc->parent, phys_enc,
					SDE_ENCODER_FRAME_EVENT_DONE);
					SDE_ENCODER_FRAME_EVENT_DONE);