[U-Boot-Users] Please pull from 'mpc83xx' branch

Timur Tabi timur at freescale.com
Thu Dec 14 23:18:47 CET 2006


Kumar Gala wrote:
> Please pull from 'mpc83xx' branch of
> git://git.kernel.org/pub/scm/boot/u-boot/galak/u-boot.git

Unfortunately, I'm going to have to NACK one of these patches, "Fix config of 
Arbiter, System Priority, and Clock Mode on MPC83xx".

I just noticed the problem with this patch.  It will work for the 8349ITX, but 
it will break the 8349EMDS and TQM834x.

>   #ifdef CFG_SCCR_TSEC1CM
>   	/* TSEC1 clock mode */
> -	im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) | (1 << SCCR_TSEC1CM_SHIFT);
> +	im->clk.sccr = (im->clk.sccr & ~SCCR_TSEC1CM) | (CFG_SCCR_TSEC1CM << SCCR_TSEC1CM_SHIFT);
>   #endif

This works as long as CFG_SCCR_TSEC1CM is between 0 and 4.  But look what the 
MPC8349EMDS.h has:

#define CFG_SCCR_INIT		(SCCR_DEFAULT & (~SCCR_CLK_MASK))
#define CFG_SCCR_TSEC1CM	SCCR_TSEC1CM_1	/* TSEC1 clock setting */
#define CFG_SCCR_TSEC2CM	SCCR_TSEC2CM_1	/* TSEC2 clock setting */
#define CFG_SCCR_ENCCM		SCCR_ENCCM_3	/* ENC clock setting */
#define CFG_SCCR_USBCM		SCCR_USBCM_3	/* USB clock setting */
#define CFG_SCCR_VAL		( CFG_SCCR_INIT		\
				| CFG_SCCR_TSEC1CM	\
				| CFG_SCCR_TSEC2CM	\
				| CFG_SCCR_ENCCM	\
				| CFG_SCCR_USBCM	)

SCCR_TSEC1CM_1 is defined in mpc83xx.h:

#define SCCR_TSEC1CM_1			0x40000000

So the patch for mpc83xx/cpu_init.c needs to include changes to MPC8349EMDS.h 
and TQM834x.h.

But that's not the only problem.  cpu_init_f() does not have any code that uses 
these two defines in MPC8349EMDS.h and TQM834x.h:

#define CFG_SCCR_ENCCM		SCCR_ENCCM_3	/* ENC clock setting */
#define CFG_SCCR_USBCM		SCCR_USBCM_3	/* USB clock setting */

Which means that currently, these bitfields aren't being set at all!  If you try 
to load the Linux USB driver on an 8349EMDS, the driver will hang at boot time.

I'm working on follow-up patches to fix this.

-- 
Timur Tabi
Linux Kernel Developer @ Freescale




More information about the U-Boot mailing list