drm/msm: support backoff time update only in sde rsc
SDE RSC driver updates the complete RSC configuration when
client requests for only timer updates like static wrapper
or pdc/rsc backoff time. This may reset unintentional settings
on SDE rsc while client calls it during dynamic resolution
switch or inline rotation. This patch adds a new API to update
only timer configuration on sde rsc with new client settings.
Change-Id: I15c0e75cc4008431dc622dcf29085e9839dee15d
Signed-off-by: Dhaval Patel <pdhaval@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde_rsc.c b/drivers/gpu/drm/msm/sde_rsc.c
index 0418644..7a52ece 100644
--- a/drivers/gpu/drm/msm/sde_rsc.c
+++ b/drivers/gpu/drm/msm/sde_rsc.c
@@ -404,7 +404,13 @@
/* mode 2 is infinite */
rsc->timer_config.rsc_time_slot_2_ns = 0xFFFFFFFF;
- if (rsc->hw_ops.init) {
+ /* timer update should be called with client call */
+ if (cmd_config && rsc->hw_ops.timer_update) {
+ ret = rsc->hw_ops.timer_update(rsc);
+ if (ret)
+ pr_err("sde rsc: hw timer update failed ret:%d\n", ret);
+ /* rsc init should be called during rsc probe - one time only */
+ } else if (rsc->hw_ops.init) {
ret = rsc->hw_ops.init(rsc);
if (ret)
pr_err("sde rsc: hw init failed ret:%d\n", ret);
@@ -917,7 +923,7 @@
end:
mutex_unlock(&rsc->client_lock);
- if (blen < 0)
+ if (blen <= 0)
return 0;
if (copy_to_user(buf, buffer, blen))
@@ -1009,7 +1015,7 @@
end:
mutex_unlock(&rsc->client_lock);
- if (blen < 0)
+ if (blen <= 0)
return 0;
if (copy_to_user(buf, buffer, blen))