aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2014-06-30 18:50:51 -0400
committerRob Clark <robdclark@gmail.com>2014-08-04 11:55:28 -0400
commite8abb5b5f4a6894d8ecf227de5d9bb6570e399ff (patch)
treedd1e96fe5cf7c05e4371cba7e90d4615f6a2515a
parent034fbcc3d8a5dff5d3df5a4ad6bf9cc0b01bd970 (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.c11
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp4/mdp4_kms.h1
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