summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorJeevan Shriram <jshriram@codeaurora.org>2014-08-19 22:43:46 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:41:22 -0700
commit7cd8b389a7e465a2e1dce237d3cd26c6e3fb7b82 (patch)
tree97706e71e60577ecaf985d89bb3c47013f3d5048 /drivers
parent862408853d912fed099182ab3621705ddb7956f2 (diff)
clk: mdss: parse the dynamic refresh register base
Add support for parsing dynamic refresh register base for register programming. Change-Id: I0f23f3c6c01e2ef47fec5048ae0c8ebf31566b61 Signed-off-by: Jeevan Shriram <jshriram@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/msm/mdss/mdss-pll.c16
-rw-r--r--drivers/clk/msm/mdss/mdss-pll.h6
2 files changed, 21 insertions, 1 deletions
diff --git a/drivers/clk/msm/mdss/mdss-pll.c b/drivers/clk/msm/mdss/mdss-pll.c
index c7c67c425f15..7f41cb1ceb63 100644
--- a/drivers/clk/msm/mdss/mdss-pll.c
+++ b/drivers/clk/msm/mdss/mdss-pll.c
@@ -203,6 +203,7 @@ static int mdss_pll_probe(struct platform_device *pdev)
const char *label;
struct resource *pll_base_reg;
struct resource *phy_base_reg;
+ struct resource *dynamic_pll_base_reg;
struct mdss_pll_resources *pll_res;
if (!pdev->dev.of_node) {
@@ -267,6 +268,18 @@ static int mdss_pll_probe(struct platform_device *pdev)
}
}
+ dynamic_pll_base_reg = platform_get_resource_byname(pdev,
+ IORESOURCE_MEM, "dynamic_pll_base");
+ if (dynamic_pll_base_reg) {
+ pll_res->dyn_pll_base = ioremap(dynamic_pll_base_reg->start,
+ resource_size(dynamic_pll_base_reg));
+ if (!pll_res->dyn_pll_base) {
+ pr_err("Unable to remap dynamic pll base resources\n");
+ rc = -ENOMEM;
+ goto dyn_pll_io_error;
+ }
+ }
+
rc = mdss_pll_resource_init(pdev, pll_res);
if (rc) {
pr_err("Pll resource init failed rc=%d\n", rc);
@@ -284,6 +297,9 @@ static int mdss_pll_probe(struct platform_device *pdev)
clock_register_error:
mdss_pll_resource_deinit(pdev, pll_res);
res_init_error:
+ if (pll_res->dyn_pll_base)
+ iounmap(pll_res->dyn_pll_base);
+dyn_pll_io_error:
if (pll_res->phy_base)
iounmap(pll_res->phy_base);
phy_io_error:
diff --git a/drivers/clk/msm/mdss/mdss-pll.h b/drivers/clk/msm/mdss/mdss-pll.h
index 74fe45aa0e14..1bb8f7306dcd 100644
--- a/drivers/clk/msm/mdss/mdss-pll.h
+++ b/drivers/clk/msm/mdss/mdss-pll.h
@@ -42,9 +42,13 @@ struct mdss_pll_resources {
/* Pll specific resources like GPIO, power supply, clocks, etc*/
struct dss_module_power mp;
- /* dsi/edp/hmdi plls' base register and phy register mapping */
+ /*
+ * dsi/edp/hmdi plls' base register, phy and dynamic refresh
+ * register mapping
+ */
void __iomem *pll_base;
void __iomem *phy_base;
+ void __iomem *dyn_pll_base;
/*
* Certain pll's needs to update the same vco rate after resume in