summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-11-24 06:13:16 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-11-24 06:13:16 -0800
commitc82d43b7d926b4d8ea06d8e767f115dcad1e8e11 (patch)
tree010d00c3e109da42f2846dbaf1b1b553dd24651d
parent51ab99448dcad689c456a4a79ef73b604fb94747 (diff)
parent5edf4254fcc9e7b0c1d7d4e92a736aac9246f14d (diff)
Merge "msm: sde: Correct max downscale factor for SDE rotator"
-rw-r--r--drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c
index 4e86a3ff820d..eaf35733b38a 100644
--- a/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c
+++ b/drivers/media/platform/msm/sde/rotator/sde_rotator_r3.c
@@ -2013,15 +2013,18 @@ static int sde_hw_rotator_validate_entry(struct sde_rot_mgr *mgr,
}
}
- fmt = sde_get_format_params(item->output.format);
- /* Tiled format downscale support not applied to AYUV tiled */
- if (sde_mdp_is_tilea5x_format(fmt) && (entry->dnsc_factor_h > 4)) {
- SDEROT_DBG("max downscale for tiled format is 4\n");
+ fmt = sde_get_format_params(item->input.format);
+ /*
+ * Rotator downscale support max 4 times for UBWC format and
+ * max 2 times for TP10/TP10_UBWC format
+ */
+ if (sde_mdp_is_ubwc_format(fmt) && (entry->dnsc_factor_h > 4)) {
+ SDEROT_DBG("max downscale for UBWC format is 4\n");
ret = -EINVAL;
goto dnsc_err;
}
- if (sde_mdp_is_ubwc_format(fmt) && (entry->dnsc_factor_h > 2)) {
- SDEROT_DBG("downscale with ubwc cannot be more than 2\n");
+ if (sde_mdp_is_tp10_format(fmt) && (entry->dnsc_factor_h > 2)) {
+ SDEROT_DBG("downscale with TP10 cannot be more than 2\n");
ret = -EINVAL;
}
goto dnsc_err;
@@ -2076,6 +2079,7 @@ static ssize_t sde_hw_rotator_show_caps(struct sde_rot_mgr *mgr,
struct device_attribute *attr, char *buf, ssize_t len)
{
struct sde_hw_rotator *hw_data;
+ struct sde_rot_data_type *mdata = sde_rot_get_mdata();
int cnt = 0;
if (!mgr || !buf)
@@ -2087,6 +2091,10 @@ static ssize_t sde_hw_rotator_show_caps(struct sde_rot_mgr *mgr,
(cnt += scnprintf(buf + cnt, len - cnt, fmt, ##__VA_ARGS__))
/* insert capabilities here */
+ if (test_bit(SDE_CAPS_R3_1P5_DOWNSCALE, mdata->sde_caps_map))
+ SPRINT("min_downscale=1.5\n");
+ else
+ SPRINT("min_downscale=2.0\n");
#undef SPRINT
return cnt;