diff options
author | Rob Clark <robdclark@gmail.com> | 2014-06-30 18:50:51 -0400 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2014-08-04 11:55:28 -0400 |
commit | e8abb5b5f4a6894d8ecf227de5d9bb6570e399ff (patch) | |
tree | dd1e96fe5cf7c05e4371cba7e90d4615f6a2515a | |
parent | 034fbcc3d8a5dff5d3df5a4ad6bf9cc0b01bd970 (diff) |
drm/msm/mdp4: add mdp axi clk
Downstream kernel holds this clk via a fake-parent relationship.
Upstream clock framework requires that we hold it explicitly.
Signed-off-by: Rob Clark <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | 11 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h | 1 |
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c index 5a7bfd452252..4a08655b2bfc 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.c | |||
@@ -176,6 +176,8 @@ int mdp4_disable(struct mdp4_kms *mdp4_kms) | |||
176 | if (mdp4_kms->pclk) | 176 | if (mdp4_kms->pclk) |
177 | clk_disable_unprepare(mdp4_kms->pclk); | 177 | clk_disable_unprepare(mdp4_kms->pclk); |
178 | clk_disable_unprepare(mdp4_kms->lut_clk); | 178 | clk_disable_unprepare(mdp4_kms->lut_clk); |
179 | if (mdp4_kms->axi_clk) | ||
180 | clk_disable_unprepare(mdp4_kms->axi_clk); | ||
179 | 181 | ||
180 | return 0; | 182 | return 0; |
181 | } | 183 | } |
@@ -188,6 +190,8 @@ int mdp4_enable(struct mdp4_kms *mdp4_kms) | |||
188 | if (mdp4_kms->pclk) | 190 | if (mdp4_kms->pclk) |
189 | clk_prepare_enable(mdp4_kms->pclk); | 191 | clk_prepare_enable(mdp4_kms->pclk); |
190 | clk_prepare_enable(mdp4_kms->lut_clk); | 192 | clk_prepare_enable(mdp4_kms->lut_clk); |
193 | if (mdp4_kms->axi_clk) | ||
194 | clk_prepare_enable(mdp4_kms->axi_clk); | ||
191 | 195 | ||
192 | return 0; | 196 | return 0; |
193 | } | 197 | } |
@@ -335,6 +339,13 @@ struct msm_kms *mdp4_kms_init(struct drm_device *dev) | |||
335 | goto fail; | 339 | goto fail; |
336 | } | 340 | } |
337 | 341 | ||
342 | mdp4_kms->axi_clk = devm_clk_get(&pdev->dev, "mdp_axi_clk"); | ||
343 | if (IS_ERR(mdp4_kms->axi_clk)) { | ||
344 | dev_err(dev->dev, "failed to get axi_clk\n"); | ||
345 | ret = PTR_ERR(mdp4_kms->axi_clk); | ||
346 | goto fail; | ||
347 | } | ||
348 | |||
338 | clk_set_rate(mdp4_kms->clk, config->max_clk); | 349 | clk_set_rate(mdp4_kms->clk, config->max_clk); |
339 | clk_set_rate(mdp4_kms->lut_clk, config->max_clk); | 350 | clk_set_rate(mdp4_kms->lut_clk, config->max_clk); |
340 | 351 | ||
diff --git a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h index 715520c54cde..3225da804c61 100644 --- a/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h +++ b/drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h | |||
@@ -42,6 +42,7 @@ struct mdp4_kms { | |||
42 | struct clk *clk; | 42 | struct clk *clk; |
43 | struct clk *pclk; | 43 | struct clk *pclk; |
44 | struct clk *lut_clk; | 44 | struct clk *lut_clk; |
45 | struct clk *axi_clk; | ||
45 | 46 | ||
46 | struct mdp_irq error_handler; | 47 | struct mdp_irq error_handler; |
47 | 48 | ||