Merge "disp: msm: sde: add per_pipe_bw_high option"

This commit is contained in:
qctecmdr
2019-05-21 11:20:02 -07:00
committed by Gerrit - the friendly Code Review server
3 changed files with 15 additions and 0 deletions

View File

@@ -230,6 +230,7 @@ enum {
SSPP_EXCL_RECT, SSPP_EXCL_RECT,
SSPP_SMART_DMA, SSPP_SMART_DMA,
SSPP_MAX_PER_PIPE_BW, SSPP_MAX_PER_PIPE_BW,
SSPP_MAX_PER_PIPE_BW_HIGH,
SSPP_PROP_MAX, SSPP_PROP_MAX,
}; };
@@ -544,6 +545,8 @@ static struct sde_prop_type sspp_prop[] = {
PROP_TYPE_U32_ARRAY}, PROP_TYPE_U32_ARRAY},
{SSPP_MAX_PER_PIPE_BW, "qcom,sde-max-per-pipe-bw-kbps", false, {SSPP_MAX_PER_PIPE_BW, "qcom,sde-max-per-pipe-bw-kbps", false,
PROP_TYPE_U32_ARRAY}, PROP_TYPE_U32_ARRAY},
{SSPP_MAX_PER_PIPE_BW_HIGH, "qcom,sde-max-per-pipe-bw-high-kbps", false,
PROP_TYPE_U32_ARRAY},
}; };
static struct sde_prop_type vig_prop[] = { static struct sde_prop_type vig_prop[] = {
@@ -1515,6 +1518,13 @@ static int sde_sspp_parse_dt(struct device_node *np,
else else
sblk->max_per_pipe_bw = DEFAULT_MAX_PER_PIPE_BW; sblk->max_per_pipe_bw = DEFAULT_MAX_PER_PIPE_BW;
if (prop_exists[SSPP_MAX_PER_PIPE_BW_HIGH])
sblk->max_per_pipe_bw_high =
PROP_VALUE_ACCESS(prop_value,
SSPP_MAX_PER_PIPE_BW_HIGH, i);
else
sblk->max_per_pipe_bw_high = sblk->max_per_pipe_bw;
for (j = 0; j < sde_cfg->mdp_count; j++) { for (j = 0; j < sde_cfg->mdp_count; j++) {
sde_cfg->mdp[j].clk_ctrls[sspp->clk_ctrl].reg_off = sde_cfg->mdp[j].clk_ctrls[sspp->clk_ctrl].reg_off =
PROP_BITVALUE_ACCESS(prop_value, PROP_BITVALUE_ACCESS(prop_value,

View File

@@ -579,6 +579,8 @@ struct sde_qos_lut_tbl {
* @pixel_ram_size: size of latency hiding and de-tiling buffer in bytes * @pixel_ram_size: size of latency hiding and de-tiling buffer in bytes
* @smart_dma_priority: hw priority of rect1 of multirect pipe * @smart_dma_priority: hw priority of rect1 of multirect pipe
* @max_per_pipe_bw: maximum allowable bandwidth of this pipe in kBps * @max_per_pipe_bw: maximum allowable bandwidth of this pipe in kBps
* @max_per_pipe_bw_high: maximum allowable bandwidth of this pipe in kBps
* in case of no VFE
* @src_blk: * @src_blk:
* @scaler_blk: * @scaler_blk:
* @csc_blk: * @csc_blk:
@@ -618,6 +620,7 @@ struct sde_sspp_sub_blks {
u32 maxvdeciexp; /* max decimation is 2^value */ u32 maxvdeciexp; /* max decimation is 2^value */
u32 smart_dma_priority; u32 smart_dma_priority;
u32 max_per_pipe_bw; u32 max_per_pipe_bw;
u32 max_per_pipe_bw_high;
struct sde_src_blk src_blk; struct sde_src_blk src_blk;
struct sde_scaler_blk scaler_blk; struct sde_scaler_blk scaler_blk;
struct sde_pp_blk csc_blk; struct sde_pp_blk csc_blk;

View File

@@ -3523,6 +3523,8 @@ static void _sde_plane_install_properties(struct drm_plane *plane,
psde->pipe_sblk->maxvdeciexp); psde->pipe_sblk->maxvdeciexp);
sde_kms_info_add_keyint(info, "max_per_pipe_bw", sde_kms_info_add_keyint(info, "max_per_pipe_bw",
psde->pipe_sblk->max_per_pipe_bw * 1000LL); psde->pipe_sblk->max_per_pipe_bw * 1000LL);
sde_kms_info_add_keyint(info, "max_per_pipe_bw_high",
psde->pipe_sblk->max_per_pipe_bw_high * 1000LL);
if ((!master_plane_id && if ((!master_plane_id &&
(psde->features & BIT(SDE_SSPP_INVERSE_PMA))) || (psde->features & BIT(SDE_SSPP_INVERSE_PMA))) ||