[PATCH/RFC] i.MX31 and i.MX35 : fix errate TLSbo65953 and ENGcm09472

Daniel Mack daniel at caiaq.de
Wed Oct 6 02:35:25 EDT 2010


On Tue, Oct 05, 2010 at 06:29:20PM +0200, Uwe Kleine-König wrote:
> On Tue, Oct 05, 2010 at 11:25:39AM +0200, Eric Bénard wrote:
> > +#else
> >  #ifdef CONFIG_ARCH_MXC91231
> >  	if (cpu_is_mxc91231()) {
> >  		/* Need this to set DSM low-power mode */
> >  		mxc91231_prepare_idle();
> >  	}
> >  #endif
> > -
> >  	cpu_do_idle();
> > +#endif
> No.  When we start to have multi-soc support for imx and a kernel for
> both mx35 and mxc91231 is compiled mxc91231_prepare_idle isn't called
> anymore for mxc91231.  Ah, and cpu_do_idle isn't called anymore at all.
> 
> This needs to read:
> 
> 	#if defined (CONFIG_ARCH_MX31) || defined (CONFIG_ARCH_MX35)
> 		if (cpu_is_mx31() || cpu_is_mx35()) {
> 			unsigned long reg = 0;
> 			__asm__ __volatile__(...);

A "return" statement here would save you the else branch and
subsequently, one indentation level, right?

Also, I wonder whether the check for CONFIG_ARCH_MX3[15] is actually
needed at all, as cpu_is_mx3x() will default to 0 at compile time in
case those #defines are not set.

> 		} else
> 	#endif
> 		{
> 		
> #ifdef CONFIG_ARCH_MXC91231
> 			if (cpu_is_mxc91231()) {
> 				/* Need this to set DSM low-power mode */
> 				mxc91231_prepare_idle();
> 			}
> #endif

In this case, though, they seem mandatory due to the symbol
mxc91231_prepare_idle would be undefined otherwise.


Daniel



More information about the linux-arm-kernel mailing list