clk: qcom: Add missing clock at index GCC_XO_CLK for MSM8974
diff mbox

Message ID 1392819521-25734-1-git-send-email-iivanov@mm-sol.com
State New, archived
Headers show

Commit Message

Ivan T. Ivanov Feb. 19, 2014, 2:18 p.m. UTC
From: "Ivan T. Ivanov" <iivanov@mm-sol.com>

Accessing GCC on MSM8974 trough <&gcc GCC_XO_CLK> lead to NULL
pointer dereference. Fix this.

Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com>
---
 drivers/clk/qcom/gcc-msm8974.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

Stephen Boyd Feb. 19, 2014, 8:17 p.m. UTC | #1
On 02/19, Ivan T. Ivanov wrote:
> From: "Ivan T. Ivanov" <iivanov@mm-sol.com>
> 
> Accessing GCC on MSM8974 trough <&gcc GCC_XO_CLK> lead to NULL

s/trough/through/

> pointer dereference. Fix this.
> 

I think you want to get the XO clock from the not yet upstreamed
RPM clock driver. This #define is for a gate that is internal to
the SoC sitting between the pin for XO and all downstream users
of the XO clock within the SoC. Futhermore, linux is not allowed
to control this gate because it's essential to the entire system.

This patch will work for now but we'll need to change the DTS in
the future to get the clock from the RPM node and then revert
this patch.

It may be better to just move the XO and sleep_clk_src clocks to
DT and make them fixed-rate clocks that get added by
of_clk_init(). Then when the RPM node is added we can remove the
XO node and update the usb node at the same time.
Ivan T. Ivanov Feb. 20, 2014, 7:44 a.m. UTC | #2
On Wed, 2014-02-19 at 12:17 -0800, Stephen Boyd wrote: 
> On 02/19, Ivan T. Ivanov wrote:
> > From: "Ivan T. Ivanov" <iivanov@mm-sol.com>
> > 
> > Accessing GCC on MSM8974 trough <&gcc GCC_XO_CLK> lead to NULL
> 
> s/trough/through/
> 
> > pointer dereference. Fix this.
> > 
> 
> I think you want to get the XO clock from the not yet upstreamed
> RPM clock driver. This #define is for a gate that is internal to
> the SoC sitting between the pin for XO and all downstream users
> of the XO clock within the SoC. Futhermore, linux is not allowed
> to control this gate because it's essential to the entire system.
> 
> This patch will work for now but we'll need to change the DTS in
> the future to get the clock from the RPM node and then revert
> this patch.
> 
> It may be better to just move the XO and sleep_clk_src clocks to
> DT and make them fixed-rate clocks that get added by
> of_clk_init(). Then when the RPM node is added we can remove the
> XO node and update the usb node at the same time.


I see. I'll leave you to decide what is the right solution here,

Regards,
Ivan


--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch
diff mbox

diff --git a/drivers/clk/qcom/gcc-msm8974.c b/drivers/clk/qcom/gcc-msm8974.c
index 51d457e..98be7ea 100644
--- a/drivers/clk/qcom/gcc-msm8974.c
+++ b/drivers/clk/qcom/gcc-msm8974.c
@@ -2625,6 +2625,8 @@  static int gcc_msm8974_probe(struct platform_device *pdev)
 	if (IS_ERR(clk))
 		return PTR_ERR(clk);
 
+	clks[GCC_XO_CLK] = clk;
+
 	/* Should move to DT node? */
 	clk = clk_register_fixed_rate(dev, "sleep_clk_src", NULL,
 				      CLK_IS_ROOT, 32768);