disp: rotator: add ubwc plane atomic check in rotator
In some targets with offline rotator, ubwc might not be supported. For those cases, this change adds ubwc verification for plane during atomic check to prevent crash. Change-Id: Ie24a7ba823773204062993996746aa08171fe90f Signed-off-by: Yashwanth <yvulapu@codeaurora.org>
This commit is contained in:
parent
8510269a39
commit
f4ce8b66ce
@ -69,6 +69,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);
|
||||
|
||||
@ -1989,14 +1993,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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user