Loading Documentation/devicetree/bindings/fb/mdss-pll.txt +3 −2 Original line number Diff line number Diff line Loading @@ -51,8 +51,9 @@ Example: label = "MDSS DSI 0 PLL"; cell-index = <0>; reg = <0xfd922A00 0xD4>; reg-names = "pll_base"; reg = <0xfd922A00 0xD4>, <0xfd922900 0x64>; reg-names = "pll_base", "dynamic_pll_base"; gdsc-supply = <&gdsc_mdss>; vddio-supply = <&pm8941_l12>; vcca-supply = <&pm8941_l28>; Loading drivers/clk/qcom/mdss/mdss-pll.c +16 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,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) { Loading Loading @@ -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); Loading @@ -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: Loading drivers/clk/qcom/mdss/mdss-pll.h +5 −1 Original line number Diff line number Diff line Loading @@ -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 Loading Loading
Documentation/devicetree/bindings/fb/mdss-pll.txt +3 −2 Original line number Diff line number Diff line Loading @@ -51,8 +51,9 @@ Example: label = "MDSS DSI 0 PLL"; cell-index = <0>; reg = <0xfd922A00 0xD4>; reg-names = "pll_base"; reg = <0xfd922A00 0xD4>, <0xfd922900 0x64>; reg-names = "pll_base", "dynamic_pll_base"; gdsc-supply = <&gdsc_mdss>; vddio-supply = <&pm8941_l12>; vcca-supply = <&pm8941_l28>; Loading
drivers/clk/qcom/mdss/mdss-pll.c +16 −0 Original line number Diff line number Diff line Loading @@ -204,6 +204,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) { Loading Loading @@ -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); Loading @@ -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: Loading
drivers/clk/qcom/mdss/mdss-pll.h +5 −1 Original line number Diff line number Diff line Loading @@ -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 Loading