[U-Boot-Users] [PATCH 01/08]: General code modification for mpc7448hpc2 board

Zang Roy-r61911 tie-fei.zang at freescale.com
Fri Jul 28 11:52:33 CEST 2006


General code modification for mpc7448hpc2 board support. The
modification do not
affect other board behavior.

Signed-off-by: Alexandre Bounine <alexandreb at tundra.com>
Signed-off-by: Roy Zang	<tie-fei.zang at freescale.com>

---
 MAKEALL                       |    4 +--
 Makefile                      |    3 ++
 README                        |   22 ++++++++--------
 cpu/74xx_7xx/cpu.c            |   22 ++++++++++++++--
 cpu/74xx_7xx/cpu_init.c       |    2 +
 cpu/74xx_7xx/speed.c          |   55
++++++++++++++++++++++++++++++++++++++---
 include/74xx_7xx.h            |    1 +
 include/asm-ppc/global_data.h |    3 ++
 lib_ppc/extable.c             |   11 ++++++++
 net/eth.c                     |    4 +++
 10 files changed, 107 insertions(+), 20 deletions(-)

diff --git a/MAKEALL b/MAKEALL
index 467a9be..2f41936 100755
--- a/MAKEALL
+++ b/MAKEALL
@@ -139,8 +139,8 @@ ## 74xx/7xx Systems
 
########################################################################
#
 
 LIST_74xx="	\
-	DB64360		DB64460		EVB64260	P3G4
\
-	PCIPPC2		PCIPPC6		ZUMA
\
+	DB64360		DB64460		EVB64260	mpc7448hpc2
\
+	P3G4    	PCIPPC2		PCIPPC6		ZUMA
\
 "
 
 LIST_7xx="	\
diff --git a/Makefile b/Makefile
index 128ae59..c910f39 100644
--- a/Makefile
+++ b/Makefile
@@ -1489,6 +1489,9 @@ EVB64260_config	\
 EVB64260_750CX_config:	unconfig
 	@./mkconfig EVB64260 ppc 74xx_7xx evb64260
 
+mpc7448hpc2_config:  unconfig
+	@./mkconfig $(@:_config=) ppc 74xx_7xx mpc7448hpc2
+
 P3G4_config: unconfig
 	@./mkconfig $(@:_config=) ppc 74xx_7xx evb64260
 
diff --git a/README b/README
index e772c1a..f7f53d1 100644
--- a/README
+++ b/README
@@ -2289,17 +2289,17 @@ configurations; the following names are 
 	csb272_config		lwmon_config		sbc8260_config
 	CU824_config		MBX860T_config
sbc8560_33_config
 	DUET_ADS_config		MBX_config
sbc8560_66_config
-	EBONY_config		MPC8260ADS_config	SM850_config
-	ELPT860_config		MPC8540ADS_config	SPD823TS_config
-	ESTEEM192E_config	MPC8540EVAL_config	stxgp3_config
-	ETX094_config		MPC8560ADS_config	SXNI855T_config
-	FADS823_config		NETVIA_config		TQM823L_config
-	FADS850SAR_config	omap1510inn_config	TQM850L_config
-	FADS860T_config		omap1610h2_config	TQM855L_config
-	FPS850L_config		omap1610inn_config	TQM860L_config
-				omap5912osk_config	walnut_config
-				omap2420h4_config	Yukon8220_config
-							ZPC1900_config
+	EBONY_config		mpc7448hpc2_config	SM850_config
+	ELPT860_config		MPC8260ADS_config	SPD823TS_config
+	ESTEEM192E_config	MPC8540ADS_config	stxgp3_config
+	ETX094_config		MPC8540EVAL_config	SXNI855T_config
+	FADS823_config		NMPC8560ADS_config	TQM823L_config
+	FADS850SAR_config	NETVIA_config		TQM850L_config
+	FADS860T_config		omap1510inn_config	TQM855L_config
+	FPS850L_config		omap1610h2_config	TQM860L_config
+				omap1610inn_config	walnut_config
+				omap5912osk_config	Yukon8220_config
+				omap2420h4_config	ZPC1900_config
 
 Note: for some board special configuration names may exist; check if
       additional information is available from the board vendor; for
diff --git a/cpu/74xx_7xx/cpu.c b/cpu/74xx_7xx/cpu.c
index ca45e17..4e112dc 100644
--- a/cpu/74xx_7xx/cpu.c
+++ b/cpu/74xx_7xx/cpu.c
@@ -101,6 +101,14 @@ get_cpu_type(void)
 		type = CPU_7457;
 		break;
 
+	case 0x8003:
+		type = CPU_7447A;
+		break;
+		
+	case 0x8004:
+		type = CPU_7448;
+		break;
+		
 	default:
 		break;
 	}
@@ -164,6 +172,14 @@ int checkcpu (void)
 		str = "MPC7457";
 		break;
 
+	case CPU_7447A:
+		str = "MPC7447A";
+		break;
+
+	case CPU_7448:
+		str = "MPC7448";
+		break;
+
 	default:
 		printf("Unknown CPU -- PVR: 0x%08x\n", pvr);
 		return -1;
@@ -256,18 +272,18 @@ #endif
 /*
  * For the 7400 the TB clock runs at 1/4 the cpu bus speed.
  */
-#ifdef CONFIG_AMIGAONEG3SE
+#if defined(CONFIG_AMIGAONEG3SE) || defined(CONFIG_MPC7448HPC2)
 unsigned long get_tbclk(void)
 {
 	return (gd->bus_clk / 4);
 }
-#else	/* ! CONFIG_AMIGAONEG3SE */
+#else	/* ! CONFIG_AMIGAONEG3SE and !CONFIG_MPC7448HPC2*/
 
 unsigned long get_tbclk (void)
 {
 	return CFG_BUS_HZ / 4;
 }
-#endif	/* CONFIG_AMIGAONEG3SE */
+#endif	/* CONFIG_AMIGAONEG3SE or CONFIG_MPC7448HPC2*/
 /*
------------------------------------------------------------------------
- */
 
 #if defined(CONFIG_WATCHDOG)
diff --git a/cpu/74xx_7xx/cpu_init.c b/cpu/74xx_7xx/cpu_init.c
index 93f180f..1dd1b2c 100644
--- a/cpu/74xx_7xx/cpu_init.c
+++ b/cpu/74xx_7xx/cpu_init.c
@@ -43,6 +43,8 @@ cpu_init_f (void)
 	case CPU_7450:
 	case CPU_7455:
 	case CPU_7457:
+	case CPU_7447A:
+	case CPU_7448:
 		/* enable the timebase bit in HID0 */
 		set_hid0(get_hid0() | 0x4000000);
 		break;
diff --git a/cpu/74xx_7xx/speed.c b/cpu/74xx_7xx/speed.c
index 2dc5107..dce055f 100644
--- a/cpu/74xx_7xx/speed.c
+++ b/cpu/74xx_7xx/speed.c
@@ -31,6 +31,8 @@ #endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
+extern unsigned long get_board_bus_clk(void);
+
 static const int hid1_multipliers_x_10[] = {
 	25,	/* 0000 - 2.5x */
 	75,	/* 0001 - 7.5x */
@@ -50,6 +52,41 @@ static const int hid1_multipliers_x_10[]
 	0	/* 1111 - off */
 };
 
+static const int hid1_7447A_multipliers_x_10[] = {
+	115,    /* 00000 - 11.5x  */
+	170,    /* 00001 - 17x    */
+	75,     /* 00010 -  7.5x  */
+	150,    /* 00011 - 15x    */
+	70,     /* 00100 -  7x    */
+	180,    /* 00101 - 18x    */
+	10,     /* 00110 - bypass */
+	200,    /* 00111 - 20x    */
+	20,     /* 01000 -  2x    */
+	210,    /* 01001 - 21x    */
+	65,     /* 01010 -  6.5x  */
+	130,    /* 01011 - 13x    */
+	85,     /* 01100 -  8.5x  */
+	240,    /* 01101 - 13x    */
+	95,     /* 01110 -  9.5x  */
+	90,     /* 01111 -  9x    */
+	30,     /* 10000 -  3x    */
+	105,    /* 10001 - 10.5x  */
+	55,     /* 10010 -  5.5x  */
+	110,    /* 10011 - 11x    */
+	40,     /* 10100 -  4x    */
+	100,    /* 10101 - 10x    */
+	50,     /* 10110 -  5x    */
+	120,    /* 10111 - 12x    */
+	80,     /* 11000 -  8x    */
+	140,    /* 11001 - 14x    */
+	60,     /* 11010 -  6x    */
+	160,    /* 11011 - 16x    */
+	135,    /* 11100 - 13.5x  */
+	280,    /* 11101 - 28x    */
+	0,      /* 11110 - off    */
+	125     /* 11111 - 12.5x  */
+};
+
 static const int hid1_fx_multipliers_x_10[] = {
 	00,	/* 0000 - off */
 	00,	/* 0001 - off */
@@ -89,8 +126,19 @@ int get_clocks (void)
 {
 	ulong clock = 0;
 
+#ifdef CFG_BUS_CLK
+	gd->bus_clk = CFG_BUS_CLK;
+#else
+	gd->bus_clk = get_board_bus_clk();
+#endif
+
 	/* calculate the clock frequency based upon the CPU type */
 	switch (get_cpu_type()) {
+	case CPU_7447A:
+	case CPU_7448:
+		clock = (gd->bus_clk / 10) *
hid1_7447A_multipliers_x_10[(get_hid1 () >> 12) & 0x1F];
+		break;
+		
 	case CPU_7455:
 	case CPU_7457:
 		/*
@@ -98,12 +146,12 @@ int get_clocks (void)
 		 * 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];
+		clock = (gd->bus_clk / 10) *
hid1_multipliers_x_10[(get_hid1 () >> 13) & 0xF];
 		break;
 
 	case CPU_750GX:
 	case CPU_750FX:
-		clock = CFG_BUS_CLK * hid1_fx_multipliers_x_10[get_hid1
() >> 27] / 10;
+		clock = gd->bus_clk * hid1_fx_multipliers_x_10[get_hid1
() >> 27] / 10;
 		break;
 
 	case CPU_7450:
@@ -120,7 +168,7 @@ int get_clocks (void)
 		 * 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];
+		clock = (gd->bus_clk / 10) *
hid1_multipliers_x_10[get_hid1 () >> 28];
 		break;
 
 	case CPU_UNKNOWN:
@@ -130,7 +178,6 @@ int get_clocks (void)
 	}
 
 	gd->cpu_clk = clock;
-	gd->bus_clk = CFG_BUS_CLK;
 
 	return (0);
 }
diff --git a/include/74xx_7xx.h b/include/74xx_7xx.h
index a628798..7cd2f10 100644
--- a/include/74xx_7xx.h
+++ b/include/74xx_7xx.h
@@ -112,6 +112,7 @@ typedef enum __cpu_t {
 	CPU_7400,
 	CPU_7410,
 	CPU_7450, CPU_7455, CPU_7457,
+	CPU_7447A, CPU_7448,
 	CPU_UNKNOWN} cpu_t;
 
 extern cpu_t get_cpu_type(void);
diff --git a/include/asm-ppc/global_data.h
b/include/asm-ppc/global_data.h
index b73af96..166afbe 100644
--- a/include/asm-ppc/global_data.h
+++ b/include/asm-ppc/global_data.h
@@ -49,6 +49,9 @@ #if defined(CONFIG_CPM2)
 	unsigned long	scc_clk;
 	unsigned long	brg_clk;
 #endif
+#if defined(CONFIG_MPC7448HPC2)
+	unsigned long   mem_clk;
+#endif
 #if defined(CONFIG_MPC83XX)
 	/* There are other clocks in the MPC83XX */
 	u32 csb_clk;
diff --git a/lib_ppc/extable.c b/lib_ppc/extable.c
index d92f142..851aa55 100644
--- a/lib_ppc/extable.c
+++ b/lib_ppc/extable.c
@@ -55,9 +55,16 @@ search_one_table(const struct exception_
 		long diff;
 
 		mid = (last - first) / 2 + first;
+#ifdef CONFIG_MPC7448HPC2
+		DECLARE_GLOBAL_DATA_PTR;
+		diff = (mid->insn + gd->reloc_off) - value;
+		if (diff == 0)
+			return (mid->fixup + gd->reloc_off);
+#else
 		diff = mid->insn - value;
 		if (diff == 0)
 			return mid->fixup;
+#endif
 		else if (diff < 0)
 			first = mid+1;
 		else
@@ -66,7 +73,11 @@ search_one_table(const struct exception_
 	return 0;
 }
 
+#ifdef CONFIG_MPC7448HPC2
+int	ex_tab_message = 0;
+#else
 int	ex_tab_message = 1;
+#endif
 
 unsigned long
 search_exception_table(unsigned long addr)
diff --git a/net/eth.c b/net/eth.c
index 6f48aac..cfc0232 100644
--- a/net/eth.c
+++ b/net/eth.c
@@ -52,6 +52,7 @@ extern int rtl8139_initialize(bd_t*);
 extern int rtl8169_initialize(bd_t*);
 extern int scc_initialize(bd_t*);
 extern int skge_initialize(bd_t*);
+extern int tsi108_eth_initialize(bd_t*);
 extern int tsec_initialize(bd_t*, int, char *);
 extern int npe_initialize(bd_t *);
 
@@ -229,6 +230,9 @@ #endif
 #ifdef CONFIG_NS8382X
 	ns8382x_initialize(bis);
 #endif
+#if defined(CONFIG_TSI108_ETH)
+	tsi108_eth_initialize(bis);
+#endif
 #if defined(CONFIG_RTL8139)
 	rtl8139_initialize(bis);
 #endif
-- 
1.4.0




More information about the U-Boot mailing list