disp: msm: sde: add enc_id check before decrement avail HW resources
Add changes to commit and decrement only those hardware resources which are required for the modeset. Timeline of Commit C1 with CWB modeset: ---> Atomic_check Primary encoder has allocated required HW resources. CWB encoder has allocated required HW resources. ---> Atomic_commit On primary encoder, connector is seamless hence there is no virt_modeset call. On CWB encoder, there is virt_mode_set call and during commit HW blocks there is unconditional decrement for all the HW blocks with rsvp_nxt. This change ensures hardware blocks are available during dp display mode validations. Change-Id: Ifd9439cfc96e727c3093af5f47802c8367775cd7 Signed-off-by: Jayaprakash <jmadiset@codeaurora.org>
这个提交包含在:

提交者
Gerrit - the friendly Code Review server

父节点
9beffdfdc6
当前提交
f7d08feb38
@@ -5113,14 +5113,6 @@ int sde_encoder_update_caps_for_cont_splash(struct drm_encoder *encoder,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = sde_rm_reserve(&sde_kms->rm, encoder, encoder->crtc->state,
|
|
||||||
conn->state, false);
|
|
||||||
if (ret) {
|
|
||||||
SDE_ERROR_ENC(sde_enc,
|
|
||||||
"failed to reserve hw resources, %d\n", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sde_conn->encoder) {
|
if (sde_conn->encoder) {
|
||||||
conn->state->best_encoder = sde_conn->encoder;
|
conn->state->best_encoder = sde_conn->encoder;
|
||||||
SDE_DEBUG_ENC(sde_enc,
|
SDE_DEBUG_ENC(sde_enc,
|
||||||
@@ -5131,6 +5123,14 @@ int sde_encoder_update_caps_for_cont_splash(struct drm_encoder *encoder,
|
|||||||
conn->base.id);
|
conn->base.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = sde_rm_reserve(&sde_kms->rm, encoder, encoder->crtc->state,
|
||||||
|
conn->state, false);
|
||||||
|
if (ret) {
|
||||||
|
SDE_ERROR_ENC(sde_enc,
|
||||||
|
"failed to reserve hw resources, %d\n", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
SDE_DEBUG_ENC(sde_enc, "connector topology = %llu\n",
|
SDE_DEBUG_ENC(sde_enc, "connector topology = %llu\n",
|
||||||
sde_connector_get_topology_name(conn));
|
sde_connector_get_topology_name(conn));
|
||||||
drm_mode = &encoder->crtc->state->adjusted_mode;
|
drm_mode = &encoder->crtc->state->adjusted_mode;
|
||||||
|
@@ -2166,7 +2166,8 @@ static int _sde_rm_commit_rsvp(
|
|||||||
/* Swap next rsvp to be the active */
|
/* Swap next rsvp to be the active */
|
||||||
for (type = 0; type < SDE_HW_BLK_MAX; type++) {
|
for (type = 0; type < SDE_HW_BLK_MAX; type++) {
|
||||||
list_for_each_entry(blk, &rm->hw_blks[type], list) {
|
list_for_each_entry(blk, &rm->hw_blks[type], list) {
|
||||||
if (blk->rsvp_nxt) {
|
if (blk->rsvp_nxt && conn_state->best_encoder->base.id
|
||||||
|
== blk->rsvp_nxt->enc_id) {
|
||||||
blk->rsvp = blk->rsvp_nxt;
|
blk->rsvp = blk->rsvp_nxt;
|
||||||
blk->rsvp_nxt = NULL;
|
blk->rsvp_nxt = NULL;
|
||||||
_sde_rm_dec_resource_info(rm,
|
_sde_rm_dec_resource_info(rm,
|
||||||
|
在新工单中引用
屏蔽一个用户