[U-Boot-Users] mpc74xx cpu clock measure issue

Zang Roy-r61911 tie-fei.zang at freescale.com
Mon Dec 4 04:14:27 CET 2006


Hi, all
	I work to add mpc7448hpc2 board to u-boot. I checked the u-boot code
cpu/74xx_74xx/speed.c and found the following issue:

static const int hid1_multipliers_x_10[] = {
	25,	/* 0000 - 2.5x */
	75,	/* 0001 - 7.5x */
	70,	/* 0010 - 7x */
	10,	/* 0011 - bypass */
	20,	/* 0100 - 2x */
	65,	/* 0101 - 6.5x */
	100,	/* 0110 - 10x */
	45,	/* 0111 - 4.5x */
	30,	/* 1000 - 3x */
	55,	/* 1001 - 5.5x */
	40,	/* 1010 - 4x */
	50,	/* 1011 - 5x */
	80,	/* 1100 - 8x */
	60,	/* 1101 - 6x */
	35,	/* 1110 - 3.5x */
	0	/* 1111 - off */
};


int get_clocks (void)
{
	ulong clock = 0;

	/* calculate the clock frequency based upon the CPU type */
	switch (get_cpu_type()) {
	case CPU_7448:
	case CPU_7455:
	case CPU_7457:
		/*
		 * It is assumed that the PLL_EXT line is zero.
		 * Make sure division is done before multiplication to prevent 32-bit
		 * arithmetic overflows which will cause a negative number
		 */
		clock = (CFG_BUS_CLK / 10) * hid1_multipliers_x_10[(get_hid1 () >> 13)
& 0xF];
		break;

Roy: Can the hid1_multipliers_x_10 table reflect the PLL configuration
of 7448/7455/7457? There are five bit for 7455/7457 to configure the
PLL.

	case CPU_750GX:
	case CPU_750FX:
		clock = CFG_BUS_CLK * hid1_fx_multipliers_x_10[get_hid1 () >> 27] /
10;
		break;

	case CPU_7450:

Roy: Why does 7450 locates here? Its hid1 has the same behavior as
7455/7457.

	case CPU_740:
	case CPU_740P:
	case CPU_745:
	case CPU_750CX:
	case CPU_750:
	case CPU_750P:
	case CPU_755:
	case CPU_7400:
	case CPU_7410:
		/*
		 * Make sure division is done before multiplication to prevent 32-bit
		 * arithmetic overflows which will cause a negative number
		 */
		clock = (CFG_BUS_CLK / 10) * hid1_multipliers_x_10[get_hid1 () >> 28];

Roy: hid1_multipliers_x_10 is suitable here :-).

If this issue can be confirmed, I will add a patch in my mpc7448hpc2 git
tree at http://opensource.freescale.com
Thanks!
Roy





More information about the U-Boot mailing list