On 06/08/2015 at 07:39:52 +0530, Keerthy wrote :
> On Wednesday 05 August 2015 06:05 PM, Alexandre Belloni wrote:
> >On 05/08/2015 at 17:31:22 +0530, Keerthy wrote :
> >>This is a special one where in the enable bit is present in the rtc register
> >>space and not in the prcm register space. Since there was a concern on the
> >>external clock not being present i added a board dts flag.
> >>
> >
> >So you mean this external clock is coming internally from the SoC?
> 
> No what i meant is external clock is coming from Oscillator OSC1 @32.768KHz
> but the controlling bits are part of rtc register space.
> 
> TRM: http://www.ti.com/lit/ug/spruhl7c/spruhl7c.pdf
> 
> Section: 19.4.3.2 Clock Source Page 2836
> 
> Also register details:
> 19.4.5.19 RTCSS_OSC_REG Register (offset = 54h) [reset = 10h]
> 
> Page 2865.
> 

This confirms what I'm saying. Your issue here is that the driver is not
properly taking the clocks so when the PRCM is disabling CLK_32KHZ, you
end up without any clock.

You can use the clocks property in the device tree and pass two clocks,
the prcm one and the external crystal/external oscillator.
In the driver, you get both clock, clk_get_rate on the external one will
help you know whether it is populated or not (this will be 0 or 32768).
It is is populated, use it by writing 32KCLK_SEL.

Bonus points if you use the clock-accuracy and decide to switch between
PRCM and the external clock when going to suspend and resuming. I guess
an external RC oscillator is quite bad versus the PRCM.

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to