aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c9
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h3
2 files changed, 7 insertions, 5 deletions
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
index 6c414db6ff02..1cb91bef2bc1 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
@@ -62,6 +62,7 @@ static const struct mdp5_config msm8x74_config = {
62 .count = 4, 62 .count = 4,
63 .base = { 0x12500, 0x12700, 0x12900, 0x12b00 }, 63 .base = { 0x12500, 0x12700, 0x12900, 0x12b00 },
64 }, 64 },
65 .max_clk = 200000000,
65}; 66};
66 67
67static const struct mdp5_config apq8084_config = { 68static const struct mdp5_config apq8084_config = {
@@ -99,6 +100,7 @@ static const struct mdp5_config apq8084_config = {
99 .count = 5, 100 .count = 5,
100 .base = { 0x12500, 0x12700, 0x12900, 0x12b00, 0x12d00 }, 101 .base = { 0x12500, 0x12700, 0x12900, 0x12b00, 0x12d00 },
101 }, 102 },
103 .max_clk = 320000000,
102}; 104};
103 105
104struct mdp5_config_entry { 106struct mdp5_config_entry {
@@ -427,12 +429,13 @@ struct msm_kms *mdp5_kms_init(struct drm_device *dev)
427 if (ret) 429 if (ret)
428 goto fail; 430 goto fail;
429 431
430 ret = clk_set_rate(mdp5_kms->src_clk, config->max_clk);
431
432 ret = mdp5_select_hw_cfg(kms); 432 ret = mdp5_select_hw_cfg(kms);
433 if (ret) 433 if (ret)
434 goto fail; 434 goto fail;
435 435
436 /* TODO: compute core clock rate at runtime */
437 clk_set_rate(mdp5_kms->src_clk, mdp5_kms->hw_cfg->max_clk);
438
436 /* make sure things are off before attaching iommu (bootloader could 439 /* make sure things are off before attaching iommu (bootloader could
437 * have left things on, in which case we'll start getting faults if 440 * have left things on, in which case we'll start getting faults if
438 * we don't disable): 441 * we don't disable):
@@ -493,8 +496,6 @@ static struct mdp5_platform_config *mdp5_get_config(struct platform_device *dev)
493 /* TODO */ 496 /* TODO */
494#endif 497#endif
495 config.iommu = iommu_domain_alloc(&platform_bus_type); 498 config.iommu = iommu_domain_alloc(&platform_bus_type);
496 /* TODO hard-coded in downstream mdss, but should it be? */
497 config.max_clk = 200000000;
498 /* TODO get from DT: */ 499 /* TODO get from DT: */
499 config.smp_blk_cnt = 22; 500 config.smp_blk_cnt = 22;
500 501
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
index 0e9e3f7f4e9d..70aa8d4dbba0 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.h
@@ -37,6 +37,8 @@ struct mdp5_config {
37 struct mdp5_sub_block dspp; 37 struct mdp5_sub_block dspp;
38 struct mdp5_sub_block ad; 38 struct mdp5_sub_block ad;
39 struct mdp5_sub_block intf; 39 struct mdp5_sub_block intf;
40
41 uint32_t max_clk;
40}; 42};
41extern const struct mdp5_config *mdp5_cfg; 43extern const struct mdp5_config *mdp5_cfg;
42#include "mdp5.xml.h" 44#include "mdp5.xml.h"
@@ -83,7 +85,6 @@ struct mdp5_kms {
83/* platform config data (ie. from DT, or pdata) */ 85/* platform config data (ie. from DT, or pdata) */
84struct mdp5_platform_config { 86struct mdp5_platform_config {
85 struct iommu_domain *iommu; 87 struct iommu_domain *iommu;
86 uint32_t max_clk;
87 int smp_blk_cnt; 88 int smp_blk_cnt;
88}; 89};
89 90