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

Commit 5ea114cf authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "disp: rotator: add ubwc plane atomic check in rotator"

parents 3c3bfb63 719fddb6
Loading
Loading
Loading
Loading
+18 −3
Original line number Diff line number Diff line
@@ -79,6 +79,10 @@

#define BUS_VOTE_19_MHZ 153600000

#define ROT_HAS_UBWC(caps) (test_bit(SDE_CAPS_UBWC_2, caps) ||\
		test_bit(SDE_CAPS_UBWC_3, caps) ||\
		test_bit(SDE_CAPS_UBWC_4, caps))

/* forward prototype */
static int sde_rotator_update_perf(struct sde_rot_mgr *mgr);

@@ -2033,14 +2037,25 @@ static int sde_rotator_validate_img_roi(struct sde_rotation_item *item)
static int sde_rotator_validate_fmt_and_item_flags(
	struct sde_rotation_config *config, struct sde_rotation_item *item)
{
	struct sde_mdp_format_params *fmt;
	struct sde_mdp_format_params *in_fmt, *out_fmt;
	struct sde_rot_data_type *mdata = sde_rot_get_mdata();
	bool has_ubwc;

	fmt = sde_get_format_params(item->input.format);
	in_fmt = sde_get_format_params(item->input.format);
	out_fmt = sde_get_format_params(item->output.format);
	if ((item->flags & SDE_ROTATION_DEINTERLACE) &&
			sde_mdp_is_ubwc_format(fmt)) {
			sde_mdp_is_ubwc_format(in_fmt)) {
		SDEROT_DBG("cannot perform deinterlace on tiled formats\n");
		return -EINVAL;
	}

	has_ubwc = ROT_HAS_UBWC(mdata->sde_caps_map);
	if (!has_ubwc && (sde_mdp_is_ubwc_format(in_fmt) ||
		sde_mdp_is_ubwc_format(out_fmt))) {
		SDEROT_ERR("ubwc format is not supported\n");
		return -EINVAL;
	}

	return 0;
}