diff options
| author | Jeevan Shriram <jshriram@codeaurora.org> | 2014-08-19 22:43:46 -0700 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:41:22 -0700 |
| commit | 7cd8b389a7e465a2e1dce237d3cd26c6e3fb7b82 (patch) | |
| tree | 97706e71e60577ecaf985d89bb3c47013f3d5048 /drivers | |
| parent | 862408853d912fed099182ab3621705ddb7956f2 (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.c | 16 | ||||
| -rw-r--r-- | drivers/clk/msm/mdss/mdss-pll.h | 6 |
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 |
