On Tue, May 02, 2017 at 09:56:19AM +0200, Maxime Ripard wrote:
> On Tue, May 02, 2017 at 09:04:18AM +0200, Antoine Tenart wrote:
> > On Mon, May 01, 2017 at 11:13:27PM +0200, Maxime Ripard wrote:
> > > On Sun, Apr 30, 2017 at 03:29:54PM +0200, Antoine Tenart wrote:
> > > > +
> > > > +static void __secure sunxi_clock_enter_idle(struct sunxi_ccm_reg *ccm)
> > > > +{
> > > > +       /* switch cpuclk to osc24m */
> > > > +       clrsetbits_le32(&ccm->cpu_ahb_apb0_cfg, 0x3 << 
> > > > CPU_CLK_SRC_SHIFT,
> > > > +                       CPU_CLK_SRC_OSC24M << CPU_CLK_SRC_SHIFT);
> > > > +
> > > > +       /* disable pll1 */
> > > > +       clrbits_le32(&ccm->pll1_cfg, CCM_PLL1_CTRL_EN);
> > > > +
> > > > +#ifndef CONFIG_MACH_SUN7I
> > > > +       /*
> > > > +        * Switch cpuclk to losc. Based on my experience this didn't 
> > > > worked for
> > > > +        * sun7i, hence the ifndef.
> > > > +        */
> > > > +       clrbits_le32(&ccm->cpu_ahb_apb0_cfg, 0x3 << CPU_CLK_SRC_SHIFT);
> > > > +#endif
> > > 
> > > Do we enter idle per-core, or is it a cluster-wide state?
> > 
> > This is cluster-wise, as sunxi_clock_enter_idle() is only called when
> > all CPU are in IDLE state (called the PSCI suspend function). See
> > psci_cpu_suspend().
> 
> Hmm, ok. That's still a bit weird. The clock documentation says that
> you should wait 8 cycles when you reparent, which is something you're
> not doing. Maybe that can be the issue.

That might explain the issue.

Antoine

-- 
Antoine Ténart, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com

Attachment: signature.asc
Description: PGP signature

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to