Message ID | 1392819521-25734-1-git-send-email-iivanov@mm-sol.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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.
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
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);