diff options
author | Anton Vorontsov <avorontsov@ru.mvista.com> | 2008-03-24 17:40:43 +0300 |
---|---|---|
committer | Kim Phillips <kim.phillips@freescale.com> | 2008-03-25 19:16:45 -0500 |
commit | 2bd7460e9283ec98565189b3cdbcfb2bcdcdd635 (patch) | |
tree | 73d485ae9d19e48e6ef4d8128caeddd0835ad3c6 | |
parent | 453316a2a19642d8afcbca7452e40a6b44a197b1 (diff) | |
download | u-boot-imx-2bd7460e9283ec98565189b3cdbcfb2bcdcdd635.zip u-boot-imx-2bd7460e9283ec98565189b3cdbcfb2bcdcdd635.tar.gz u-boot-imx-2bd7460e9283ec98565189b3cdbcfb2bcdcdd635.tar.bz2 |
83xx: initialize serdes for MPC837XRDB boards
On the MPC8377ERDB: 2 SATA and 2 PCI-E.
On the MPC8378ERDB: 2 PCI-E
On the MPC8379ERDB: 4 SATA
Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
-rw-r--r-- | board/freescale/mpc837xerdb/mpc837xerdb.c | 37 | ||||
-rw-r--r-- | include/configs/MPC837XERDB.h | 6 |
2 files changed, 43 insertions, 0 deletions
diff --git a/board/freescale/mpc837xerdb/mpc837xerdb.c b/board/freescale/mpc837xerdb/mpc837xerdb.c index a3b20b8..d091538 100644 --- a/board/freescale/mpc837xerdb/mpc837xerdb.c +++ b/board/freescale/mpc837xerdb/mpc837xerdb.c @@ -15,6 +15,7 @@ #include <common.h> #include <i2c.h> #include <asm/io.h> +#include <asm/fsl_serdes.h> #include <spd_sdram.h> #include <vsc7385.h> @@ -132,6 +133,42 @@ int checkboard(void) return 0; } +int board_early_init_f(void) +{ +#ifdef CONFIG_FSL_SERDES + immap_t *immr = (immap_t *)CFG_IMMR; + u32 spridr = in_be32(&immr->sysconf.spridr); + + /* we check only part num, and don't look for CPU revisions */ + switch (spridr >> 16) { + case SPR_8379E_REV10 >> 16: + case SPR_8379_REV10 >> 16: + fsl_setup_serdes(CONFIG_FSL_SERDES1, FSL_SERDES_PROTO_SATA, + FSL_SERDES_CLK_100, FSL_SERDES_VDD_1V); + fsl_setup_serdes(CONFIG_FSL_SERDES2, FSL_SERDES_PROTO_SATA, + FSL_SERDES_CLK_100, FSL_SERDES_VDD_1V); + break; + case SPR_8378E_REV10 >> 16: + case SPR_8378_REV10 >> 16: + fsl_setup_serdes(CONFIG_FSL_SERDES1, FSL_SERDES_PROTO_PEX, + FSL_SERDES_CLK_100, FSL_SERDES_VDD_1V); + break; + case SPR_8377E_REV10 >> 16: + case SPR_8377_REV10 >> 16: + fsl_setup_serdes(CONFIG_FSL_SERDES1, FSL_SERDES_PROTO_SATA, + FSL_SERDES_CLK_100, FSL_SERDES_VDD_1V); + fsl_setup_serdes(CONFIG_FSL_SERDES2, FSL_SERDES_PROTO_PEX, + FSL_SERDES_CLK_100, FSL_SERDES_VDD_1V); + break; + default: + printf("serdes not configured: unknown CPU part number: " + "%04x\n", spridr >> 16); + break; + } +#endif /* CONFIG_FSL_SERDES */ + return 0; +} + /* * Miscellaneous late-boot configurations * diff --git a/include/configs/MPC837XERDB.h b/include/configs/MPC837XERDB.h index e3cb3c7..c2e7701 100644 --- a/include/configs/MPC837XERDB.h +++ b/include/configs/MPC837XERDB.h @@ -32,6 +32,7 @@ #define CONFIG_PCI 1 +#define CONFIG_BOARD_EARLY_INIT_F #define CONFIG_MISC_INIT_R /* @@ -323,6 +324,11 @@ #define CFG_NS16550_COM1 (CFG_IMMR+0x4500) #define CFG_NS16550_COM2 (CFG_IMMR+0x4600) +/* SERDES */ +#define CONFIG_FSL_SERDES +#define CONFIG_FSL_SERDES1 0xe3000 +#define CONFIG_FSL_SERDES2 0xe3100 + /* Use the HUSH parser */ #define CFG_HUSH_PARSER #ifdef CFG_HUSH_PARSER |