disp: msm: sde: add support for SSPP VBIF clock split

Add support for localized CLK_CTRL access through SSPP
hardware block.

Change-Id: I86345c94cb12c5584337aa45b562bceaab6cf8e6
Signed-off-by: Amine Najahi <anajahi@codeaurora.org>
This commit is contained in:
Amine Najahi
2021-08-18 21:38:34 -04:00
parent ca4acd5270
commit c526f4aefa
4 changed files with 88 additions and 22 deletions

View File

@@ -4738,6 +4738,7 @@ struct drm_plane *sde_plane_init(struct drm_device *dev,
struct msm_drm_private *priv;
struct sde_kms *kms;
enum drm_plane_type type;
struct sde_vbif_clk_client clk_client;
int ret = -EINVAL;
if (!dev) {
@@ -4783,8 +4784,8 @@ struct drm_plane *sde_plane_init(struct drm_device *dev,
}
/* initialize underlying h/w driver */
psde->pipe_hw = sde_hw_sspp_init(pipe, kms->mmio, kms->catalog,
psde->is_virtual);
psde->pipe_hw = sde_hw_sspp_init(pipe, kms->mmio, kms->catalog, psde->is_virtual,
&clk_client);
if (IS_ERR(psde->pipe_hw)) {
SDE_ERROR("[%u]SSPP init failed\n", pipe);
ret = PTR_ERR(psde->pipe_hw);
@@ -4794,6 +4795,15 @@ struct drm_plane *sde_plane_init(struct drm_device *dev,
goto clean_sspp;
}
if (test_bit(SDE_FEATURE_VBIF_CLK_SPLIT, kms->catalog->features)) {
ret = sde_vbif_clk_register(kms, &clk_client);
if (ret) {
SDE_ERROR("failed to register vbif client %d\n",
clk_client.clk_ctrl);
goto clean_sspp;
}
}
/* cache features mask for later */
psde->features = psde->pipe_hw->cap->features_ext;
psde->perf_features = psde->pipe_hw->cap->perf_features;