[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