disp: msm: add support for vm event register framework

Besides SDE, other subdrivers may be interested in participating in
the VM switch. This change provides framework for display dependent
drivers like DSI, DP and RSCC to register for various VM switch
event hooks.

The following hooks to provided through msm_vm_ops:
post_hw_acquire: invoked before the first frame push after gaining
                 HW access.
pre_hw_release: invoked after the last frame commit before releasing
                the HW.
check:       check with vm clients for their readiness for HW
             releasing.

Change-Id: I616db04e979f78f76f6f97ee3b068dd348339ab6
Signed-off-by: Jeykumar Sankaran <jsanka@codeaurora.org>
このコミットが含まれているのは:
Jeykumar Sankaran
2020-05-21 10:38:53 -07:00
コミット 99df0d5052
5個のファイルの変更139行の追加0行の削除

ファイルの表示

@@ -394,6 +394,7 @@ static int msm_drm_uninit(struct device *dev)
struct drm_device *ddev = platform_get_drvdata(pdev);
struct msm_drm_private *priv = ddev->dev_private;
struct msm_kms *kms = priv->kms;
struct msm_vm_client_entry *client_entry, *tmp;
int i;
/* We must cancel and cleanup any pending vblank enable/disable
@@ -455,6 +456,17 @@ static int msm_drm_uninit(struct device *dev)
sde_power_resource_deinit(pdev, &priv->phandle);
mutex_lock(&priv->vm_client_lock);
/* clean up any unregistered clients */
list_for_each_entry_safe(client_entry, tmp, &priv->vm_client_list,
list) {
list_del(&client_entry->list);
kfree(client_entry);
}
mutex_unlock(&priv->vm_client_lock);
msm_mdss_destroy(ddev);
ddev->dev_private = NULL;
@@ -831,6 +843,9 @@ static int msm_drm_component_init(struct device *dev)
INIT_LIST_HEAD(&priv->client_event_list);
INIT_LIST_HEAD(&priv->inactive_list);
INIT_LIST_HEAD(&priv->vm_client_list);
mutex_init(&priv->vm_client_lock);
/* Bind all our sub-components: */
ret = msm_component_bind_all(dev, ddev);