Commit 6c7a14084ae5f7dde3819e4ab43fd78ea82805fe

Authored by wdenk
1 parent bc54f309a1
Exists in master and in 55 other branches 8qm-imx_v2020.04_5.4.70_2.3.0, emb_lf_v2022.04, emb_lf_v2023.04, imx_v2015.04_4.1.15_1.0.0_ga, pitx_8mp_lf_v2020.04, smarc-8m-android-10.0.0_2.6.0, smarc-8m-android-11.0.0_2.0.0, smarc-8mp-android-11.0.0_2.0.0, smarc-emmc-imx_v2014.04_3.10.53_1.1.0_ga, smarc-emmc-imx_v2014.04_3.14.28_1.0.0_ga, smarc-imx-l5.0.0_1.0.0-ga, smarc-imx6_v2018.03_4.14.98_2.0.0_ga, smarc-imx7_v2017.03_4.9.11_1.0.0_ga, smarc-imx7_v2018.03_4.14.98_2.0.0_ga, smarc-imx_v2014.04_3.14.28_1.0.0_ga, smarc-imx_v2015.04_4.1.15_1.0.0_ga, smarc-imx_v2017.03_4.9.11_1.0.0_ga, smarc-imx_v2017.03_4.9.88_2.0.0_ga, smarc-imx_v2017.03_o8.1.0_1.3.0_8m, smarc-imx_v2018.03_4.14.78_1.0.0_ga, smarc-m6.0.1_2.1.0-ga, smarc-n7.1.2_2.0.0-ga, smarc-rel_imx_4.1.15_2.0.0_ga, smarc_8m-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8m-imx_v2019.04_4.19.35_1.1.0, smarc_8m_00d0-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8mm-imx_v2018.03_4.14.98_2.0.0_ga, smarc_8mm-imx_v2019.04_4.19.35_1.1.0, smarc_8mm-imx_v2020.04_5.4.24_2.1.0, smarc_8mp_lf_v2020.04, smarc_8mq-imx_v2020.04_5.4.24_2.1.0, smarc_8mq_lf_v2020.04, ti-u-boot-2015.07, u-boot-2013.01.y, v2013.10, v2013.10-smarct33, v2013.10-smartmen, v2014.01, v2014.04, v2014.04-smarct33, v2014.04-smarct33-emmc, v2014.04-smartmen, v2014.07, v2014.07-smarct33, v2014.07-smartmen, v2015.07-smarct33, v2015.07-smarct33-emmc, v2015.07-smarct4x, v2016.05-dlt, v2016.05-smarct3x, v2016.05-smarct3x-emmc, v2016.05-smarct4x, v2017.01-smarct3x, v2017.01-smarct3x-emmc, v2017.01-smarct4x

Patch by Mark Jonas, 01 Jul 2004:

Added support for Total5100 and Total5200 (Rev.1 and Rev.2)
MGT5100 and MPC5200 based Freescale platforms.

Showing 17 changed files with 1158 additions and 1 deletions Side-by-side Diff

... ... @@ -2,6 +2,10 @@
2 2 Changes since U-Boot 1.1.1:
3 3 ======================================================================
4 4  
  5 +* Patch by Mark Jonas, 01 Jul 2004:
  6 + Added support for Total5100 and Total5200 (Rev.1 and Rev.2)
  7 + MGT5100 and MPC5200 based Freescale platforms.
  8 +
5 9 * Patch by Philippe Robin, 01 Jul 2004:
6 10 Add initialization for Integrator and versatile board files.
7 11  
... ... @@ -206,6 +206,11 @@
206 206 E: yooth@ipone.co.kr
207 207 D: Added port to the RPXlite board
208 208  
  209 +N: Mark Jonas
  210 +E: mark.jonas@freescale.com
  211 +D: Support for Freescale Total5200 platform
  212 +W: http://www.mobilegt.com/
  213 +
209 214 N: Sam Song
210 215 E: samsongshu@yahoo.com.cn
211 216 D: Port to the RPXlite_DW board
... ... @@ -26,7 +26,7 @@
26 26  
27 27 LIST_5xxx=" \
28 28 icecube_5100 icecube_5200 EVAL5200 PM520 \
29   - TQM5200_AA \
  29 + Total5100 Total5200 Total5200_Rev2 TQM5200_AA \
30 30 "
31 31  
32 32 #########################################################################
... ... @@ -255,6 +255,34 @@
255 255 @ echo "#define CONFIG_$(@:_config=) 1" >include/config.h
256 256 @./mkconfig -a TOP5200 ppc mpc5xxx top5200 emk
257 257  
  258 +Total5100_config \
  259 +Total5200_config \
  260 +Total5200_lowboot_config \
  261 +Total5200_Rev2_config \
  262 +Total5200_Rev2_lowboot_config: unconfig
  263 + @ >include/config.h
  264 + @[ -z "$(findstring 5100,$@)" ] || \
  265 + { echo "#define CONFIG_MGT5100" >>include/config.h ; \
  266 + echo "... with MGT5100 processor" ; \
  267 + }
  268 + @[ -z "$(findstring 5200,$@)" ] || \
  269 + { echo "#define CONFIG_MPC5200" >>include/config.h ; \
  270 + echo "... with MPC5200 processor" ; \
  271 + }
  272 + @[ -n "$(findstring Rev,$@)" ] || \
  273 + { echo "#define CONFIG_TOTAL5200_REV 1" >>include/config.h ; \
  274 + echo "... revision 1 board" ; \
  275 + }
  276 + @[ -z "$(findstring Rev2_,$@)" ] || \
  277 + { echo "#define CONFIG_TOTAL5200_REV 2" >>include/config.h ; \
  278 + echo "... revision 2 board" ; \
  279 + }
  280 + @[ -z "$(findstring lowboot_,$@)" ] || \
  281 + { echo "TEXT_BASE = 0xFE000000" >board/total5200/config.tmp ; \
  282 + echo "... with lowboot configuration" ; \
  283 + }
  284 + @./mkconfig -a Total5200 ppc mpc5xxx total5200
  285 +
258 286 PM520_config \
259 287 PM520_DDR_config \
260 288 PM520_ROMBOOT_config \
board/total5200/Makefile
  1 +#
  2 +# (C) Copyright 2003-2004
  3 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4 +#
  5 +# See file CREDITS for list of people who contributed to this
  6 +# project.
  7 +#
  8 +# This program is free software; you can redistribute it and/or
  9 +# modify it under the terms of the GNU General Public License as
  10 +# published by the Free Software Foundation; either version 2 of
  11 +# the License, or (at your option) any later version.
  12 +#
  13 +# This program is distributed in the hope that it will be useful,
  14 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 +# GNU General Public License for more details.
  17 +#
  18 +# You should have received a copy of the GNU General Public License
  19 +# along with this program; if not, write to the Free Software
  20 +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 +# MA 02111-1307 USA
  22 +#
  23 +
  24 +include $(TOPDIR)/config.mk
  25 +
  26 +LIB = lib$(BOARD).a
  27 +
  28 +OBJS := $(BOARD).o sdram.o
  29 +
  30 +$(LIB): $(OBJS) $(SOBJS)
  31 + $(AR) crv $@ $(OBJS)
  32 +
  33 +clean:
  34 + rm -f $(SOBJS) $(OBJS)
  35 +
  36 +distclean: clean
  37 + rm -f $(LIB) core *.bak .depend
  38 +
  39 +#########################################################################
  40 +
  41 +.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
  42 + $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
  43 +
  44 +-include .depend
  45 +
  46 +#########################################################################
board/total5200/config.mk
  1 +#
  2 +# (C) Copyright 2003-2004
  3 +# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4 +#
  5 +# See file CREDITS for list of people who contributed to this
  6 +# project.
  7 +#
  8 +# This program is free software; you can redistribute it and/or
  9 +# modify it under the terms of the GNU General Public License as
  10 +# published by the Free Software Foundation; either version 2 of
  11 +# the License, or (at your option) any later version.
  12 +#
  13 +# This program is distributed in the hope that it will be useful,
  14 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 +# GNU General Public License for more details.
  17 +#
  18 +# You should have received a copy of the GNU General Public License
  19 +# along with this program; if not, write to the Free Software
  20 +# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 +# MA 02111-1307 USA
  22 +#
  23 +
  24 +#
  25 +# Total5200 board:
  26 +#
  27 +# Valid values for TEXT_BASE are:
  28 +#
  29 +# 0xFFF00000 boot high (standard configuration)
  30 +# 0xFE000000 boot low
  31 +# 0x00100000 boot from RAM (for testing only)
  32 +#
  33 +
  34 +sinclude $(TOPDIR)/board/$(BOARDDIR)/config.tmp
  35 +
  36 +ifndef TEXT_BASE
  37 +## Standard: boot high
  38 +TEXT_BASE = 0xFFF00000
  39 +## For testing: boot from RAM
  40 +# TEXT_BASE = 0x00100000
  41 +endif
  42 +
  43 +PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE) -I$(TOPDIR)/board
board/total5200/mt48lc16m16a2-75.h
  1 +/*
  2 + * (C) Copyright 2004
  3 + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com.
  4 + *
  5 + * See file CREDITS for list of people who contributed to this
  6 + * project.
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Public License as
  10 + * published by the Free Software Foundation; either version 2 of
  11 + * the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 + * MA 02111-1307 USA
  22 + */
  23 +
  24 +#define SDRAM_DDR 0 /* is SDR */
  25 +
  26 +#if defined(CONFIG_MPC5200)
  27 +/* Settings for XLB = 132 MHz */
  28 +#define SDRAM_MODE 0x00CD0000
  29 +#define SDRAM_CONTROL 0x504F0000
  30 +#define SDRAM_CONFIG1 0xD2322800
  31 +#define SDRAM_CONFIG2 0x8AD70000
  32 +
  33 +#elif defined(CONFIG_MGT5100)
  34 +/* Settings for XLB = 66 MHz */
  35 +#define SDRAM_MODE 0x008D0000
  36 +#define SDRAM_CONTROL 0x504F0000
  37 +#define SDRAM_CONFIG1 0xC2222600
  38 +#define SDRAM_CONFIG2 0x88B70004
  39 +#define SDRAM_ADDRSEL 0x02000000
  40 +
  41 +#else
  42 +#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
  43 +#endif
board/total5200/mt48lc32m16a2-75.h
  1 +/*
  2 + * (C) Copyright 2004
  3 + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com.
  4 + *
  5 + * See file CREDITS for list of people who contributed to this
  6 + * project.
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Public License as
  10 + * published by the Free Software Foundation; either version 2 of
  11 + * the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 + * MA 02111-1307 USA
  22 + */
  23 +
  24 +/*
  25 + * Micron MT48LC32M16A2-75 is compatible to:
  26 + * - Infineon HYB39S512160AT-75
  27 + */
  28 +
  29 +#define SDRAM_DDR 0 /* is SDR */
  30 +
  31 +#if defined(CONFIG_MPC5200)
  32 +/* Settings for XLB = 132 MHz */
  33 +#define SDRAM_MODE 0x00CD0000
  34 +#define SDRAM_CONTROL 0x514F0000
  35 +#define SDRAM_CONFIG1 0xD2322800
  36 +#define SDRAM_CONFIG2 0x8AD70000
  37 +
  38 +#else
  39 +#error CONFIG_MPC5200 is not defined
  40 +#endif
board/total5200/sdram.c
  1 +/*
  2 + * (C) Copyright 2003-2004
  3 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4 + *
  5 + * (C) Copyright 2004
  6 + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com.
  7 + *
  8 + * See file CREDITS for list of people who contributed to this
  9 + * project.
  10 + *
  11 + * This program is free software; you can redistribute it and/or
  12 + * modify it under the terms of the GNU General Public License as
  13 + * published by the Free Software Foundation; either version 2 of
  14 + * the License, or (at your option) any later version.
  15 + *
  16 + * This program is distributed in the hope that it will be useful,
  17 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19 + * GNU General Public License for more details.
  20 + *
  21 + * You should have received a copy of the GNU General Public License
  22 + * along with this program; if not, write to the Free Software
  23 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  24 + * MA 02111-1307 USA
  25 + */
  26 +
  27 +#include <common.h>
  28 +#include <mpc5xxx.h>
  29 +
  30 +#include "sdram.h"
  31 +
  32 +#ifndef CFG_RAMBOOT
  33 +static void mpc5xxx_sdram_start (sdram_conf_t *sdram_conf, int hi_addr)
  34 +{
  35 + long hi_addr_bit = hi_addr ? 0x01000000 : 0;
  36 +
  37 + /* unlock mode register */
  38 + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000000 | hi_addr_bit;
  39 + __asm__ volatile ("sync");
  40 +
  41 + /* precharge all banks */
  42 + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000002 | hi_addr_bit;
  43 + __asm__ volatile ("sync");
  44 +
  45 + if (sdram_conf->ddr) {
  46 + /* set mode register: extended mode */
  47 + *(vu_long *)MPC5XXX_SDRAM_MODE = sdram_conf->emode;
  48 + __asm__ volatile ("sync");
  49 +
  50 + /* set mode register: reset DLL */
  51 + *(vu_long *)MPC5XXX_SDRAM_MODE = sdram_conf->mode | 0x04000000;
  52 + __asm__ volatile ("sync");
  53 + }
  54 +
  55 + /* precharge all banks */
  56 + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000002 | hi_addr_bit;
  57 + __asm__ volatile ("sync");
  58 +
  59 + /* auto refresh */
  60 + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | 0x80000004 | hi_addr_bit;
  61 + __asm__ volatile ("sync");
  62 +
  63 + /* set mode register */
  64 + *(vu_long *)MPC5XXX_SDRAM_MODE = sdram_conf->mode;
  65 + __asm__ volatile ("sync");
  66 +
  67 + /* normal operation */
  68 + *(vu_long *)MPC5XXX_SDRAM_CTRL = sdram_conf->control | hi_addr_bit;
  69 + __asm__ volatile ("sync");
  70 +}
  71 +#endif
  72 +
  73 +/*
  74 + * ATTENTION: Although partially referenced initdram does NOT make real use
  75 + * use of CFG_SDRAM_BASE. The code does not work if CFG_SDRAM_BASE
  76 + * is something else than 0x00000000.
  77 + */
  78 +
  79 +#if defined(CONFIG_MPC5200)
  80 +long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf)
  81 +{
  82 + ulong dramsize = 0;
  83 + ulong dramsize2 = 0;
  84 +#ifndef CFG_RAMBOOT
  85 + ulong test1, test2;
  86 +
  87 + /* setup SDRAM chip selects */
  88 + *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x0000001e;/* 2G at 0x0 */
  89 + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = 0x80000000;/* disabled */
  90 + __asm__ volatile ("sync");
  91 +
  92 + /* setup config registers */
  93 + *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = sdram_conf->config1;
  94 + *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = sdram_conf->config2;
  95 + __asm__ volatile ("sync");
  96 +
  97 + if (sdram_conf->ddr) {
  98 + /* set tap delay */
  99 + *(vu_long *)MPC5XXX_CDM_PORCFG = sdram_conf->tapdelay;
  100 + __asm__ volatile ("sync");
  101 + }
  102 +
  103 + /* find RAM size using SDRAM CS0 only */
  104 + mpc5xxx_sdram_start(sdram_conf, 0);
  105 + test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
  106 + mpc5xxx_sdram_start(sdram_conf, 1);
  107 + test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
  108 + if (test1 > test2) {
  109 + mpc5xxx_sdram_start(sdram_conf, 0);
  110 + dramsize = test1;
  111 + } else {
  112 + dramsize = test2;
  113 + }
  114 +
  115 + /* memory smaller than 1MB is impossible */
  116 + if (dramsize < (1 << 20)) {
  117 + dramsize = 0;
  118 + }
  119 +
  120 + /* set SDRAM CS0 size according to the amount of RAM found */
  121 + if (dramsize > 0) {
  122 + *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0x13 + __builtin_ffs(dramsize >> 20) - 1;
  123 + } else {
  124 + *(vu_long *)MPC5XXX_SDRAM_CS0CFG = 0; /* disabled */
  125 + }
  126 +
  127 + /* let SDRAM CS1 start right after CS0 */
  128 + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize + 0x0000001e;/* 2G */
  129 +
  130 + /* find RAM size using SDRAM CS1 only */
  131 + mpc5xxx_sdram_start(sdram_conf, 0);
  132 + test1 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
  133 + mpc5xxx_sdram_start(sdram_conf, 1);
  134 + test2 = get_ram_size((ulong *)(CFG_SDRAM_BASE + dramsize), 0x80000000);
  135 + if (test1 > test2) {
  136 + mpc5xxx_sdram_start(sdram_conf, 0);
  137 + dramsize2 = test1;
  138 + } else {
  139 + dramsize2 = test2;
  140 + }
  141 +
  142 + /* memory smaller than 1MB is impossible */
  143 + if (dramsize2 < (1 << 20)) {
  144 + dramsize2 = 0;
  145 + }
  146 +
  147 + /* set SDRAM CS1 size according to the amount of RAM found */
  148 + if (dramsize2 > 0) {
  149 + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize
  150 + | (0x13 + __builtin_ffs(dramsize2 >> 20) - 1);
  151 + } else {
  152 + *(vu_long *)MPC5XXX_SDRAM_CS1CFG = dramsize; /* disabled */
  153 + }
  154 +
  155 +#else /* CFG_RAMBOOT */
  156 +
  157 + /* retrieve size of memory connected to SDRAM CS0 */
  158 + dramsize = *(vu_long *)MPC5XXX_SDRAM_CS0CFG & 0xFF;
  159 + if (dramsize >= 0x13) {
  160 + dramsize = (1 << (dramsize - 0x13)) << 20;
  161 + } else {
  162 + dramsize = 0;
  163 + }
  164 +
  165 + /* retrieve size of memory connected to SDRAM CS1 */
  166 + dramsize2 = *(vu_long *)MPC5XXX_SDRAM_CS1CFG & 0xFF;
  167 + if (dramsize2 >= 0x13) {
  168 + dramsize2 = (1 << (dramsize2 - 0x13)) << 20;
  169 + } else {
  170 + dramsize2 = 0;
  171 + }
  172 +
  173 +#endif /* CFG_RAMBOOT */
  174 +
  175 + return dramsize + dramsize2;
  176 +}
  177 +
  178 +#elif defined(CONFIG_MGT5100)
  179 +
  180 +long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf)
  181 +{
  182 + ulong dramsize = 0;
  183 +#ifndef CFG_RAMBOOT
  184 + ulong test1, test2;
  185 +
  186 + /* setup and enable SDRAM chip selects */
  187 + *(vu_long *)MPC5XXX_SDRAM_START = 0x00000000;
  188 + *(vu_long *)MPC5XXX_SDRAM_STOP = 0x0000ffff;/* 2G */
  189 + *(vu_long *)MPC5XXX_ADDECR |= (1 << 22); /* Enable SDRAM */
  190 + __asm__ volatile ("sync");
  191 +
  192 + /* setup config registers */
  193 + *(vu_long *)MPC5XXX_SDRAM_CONFIG1 = sdram_conf->config1;
  194 + *(vu_long *)MPC5XXX_SDRAM_CONFIG2 = sdram_conf->config2;
  195 +
  196 + /* address select register */
  197 + *(vu_long *)MPC5XXX_SDRAM_XLBSEL = sdram_conf->addrsel;
  198 + __asm__ volatile ("sync");
  199 +
  200 + /* find RAM size */
  201 + mpc5xxx_sdram_start(sdram_conf, 0);
  202 + test1 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
  203 + mpc5xxx_sdram_start(sdram_conf, 1);
  204 + test2 = get_ram_size((ulong *)CFG_SDRAM_BASE, 0x80000000);
  205 + if (test1 > test2) {
  206 + mpc5xxx_sdram_start(sdram_conf, 0);
  207 + dramsize = test1;
  208 + } else {
  209 + dramsize = test2;
  210 + }
  211 +
  212 + /* set SDRAM end address according to size */
  213 + *(vu_long *)MPC5XXX_SDRAM_STOP = ((dramsize - 1) >> 15);
  214 +
  215 +#else /* CFG_RAMBOOT */
  216 +
  217 + /* Retrieve amount of SDRAM available */
  218 + dramsize = ((*(vu_long *)MPC5XXX_SDRAM_STOP + 1) << 15);
  219 +
  220 +#endif /* CFG_RAMBOOT */
  221 +
  222 + return dramsize;
  223 +}
  224 +
  225 +#else
  226 +#error Neither CONFIG_MPC5200 or CONFIG_MGT5100 defined
  227 +#endif
board/total5200/sdram.h
  1 +/*
  2 + * (C) Copyright 2004
  3 + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com.
  4 + *
  5 + * See file CREDITS for list of people who contributed to this
  6 + * project.
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Public License as
  10 + * published by the Free Software Foundation; either version 2 of
  11 + * the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 + * MA 02111-1307 USA
  22 + */
  23 +
  24 +typedef struct {
  25 + ulong ddr;
  26 + ulong mode;
  27 + ulong emode;
  28 + ulong control;
  29 + ulong config1;
  30 + ulong config2;
  31 +#if defined(CONFIG_MPC5200)
  32 + ulong tapdelay;
  33 +#endif
  34 +#if defined(CONFIG_MGT5100)
  35 + ulong addrsel;
  36 +#endif
  37 +} sdram_conf_t;
  38 +
  39 +long int mpc5xxx_sdram_init (sdram_conf_t *sdram_conf);
board/total5200/total5200.c
  1 +/*
  2 + * (C) Copyright 2003-2004
  3 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4 + *
  5 + * (C) Copyright 2004
  6 + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com.
  7 + *
  8 + * See file CREDITS for list of people who contributed to this
  9 + * project.
  10 + *
  11 + * This program is free software; you can redistribute it and/or
  12 + * modify it under the terms of the GNU General Public License as
  13 + * published by the Free Software Foundation; either version 2 of
  14 + * the License, or (at your option) any later version.
  15 + *
  16 + * This program is distributed in the hope that it will be useful,
  17 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19 + * GNU General Public License for more details.
  20 + *
  21 + * You should have received a copy of the GNU General Public License
  22 + * along with this program; if not, write to the Free Software
  23 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  24 + * MA 02111-1307 USA
  25 + */
  26 +
  27 +#include <common.h>
  28 +#include <mpc5xxx.h>
  29 +#include <pci.h>
  30 +
  31 +#include "sdram.h"
  32 +
  33 +#if CONFIG_TOTAL5200_REV==2
  34 +#include "mt48lc32m16a2-75.h"
  35 +#else
  36 +#include "mt48lc16m16a2-75.h"
  37 +#endif
  38 +
  39 +long int initdram (int board_type)
  40 +{
  41 + sdram_conf_t sdram_conf;
  42 +
  43 + sdram_conf.ddr = SDRAM_DDR;
  44 + sdram_conf.mode = SDRAM_MODE;
  45 + sdram_conf.emode = 0;
  46 + sdram_conf.control = SDRAM_CONTROL;
  47 + sdram_conf.config1 = SDRAM_CONFIG1;
  48 + sdram_conf.config2 = SDRAM_CONFIG2;
  49 +#if defined(CONFIG_MPC5200)
  50 + sdram_conf.tapdelay = 0;
  51 +#endif
  52 +#if defined(CONFIG_MGT5100)
  53 + sdram_conf.addrsel = SDRAM_ADDRSEL;
  54 +#endif
  55 + return mpc5xxx_sdram_init (&sdram_conf);
  56 +}
  57 +
  58 +int checkboard (void)
  59 +{
  60 +#if defined(CONFIG_MPC5200)
  61 +#if CONFIG_TOTAL5200_REV==2
  62 + puts ("Board: Total5200 Rev.2 ");
  63 +#else
  64 + puts ("Board: Total5200 ");
  65 +#endif
  66 +#elif defined(CONFIG_MGT5100)
  67 + puts ("Board: Total5100 ");
  68 +#endif
  69 +
  70 +/*
  71 + * Retrieve FPGA Revision.
  72 + */
  73 +printf ("(FPGA %08X)\n", *(vu_long *) (CFG_FPGA_BASE + 0x400));
  74 +
  75 +/*
  76 + * Take all peripherals in power-up mode.
  77 + */
  78 +#if CONFIG_TOTAL5200_REV==2
  79 + *(vu_char *) (CFG_CPLD_BASE + 0x46) = 0x70;
  80 +#else
  81 + *(vu_long *) (CFG_CPLD_BASE + 0x400) = 0x70;
  82 +#endif
  83 +
  84 + return 0;
  85 +}
  86 +
  87 +#if defined(CONFIG_MGT5100)
  88 +int board_early_init_r(void)
  89 +{
  90 + /*
  91 + * Now, when we are in RAM, enable CS0
  92 + * because CS_BOOT cannot be written.
  93 + */
  94 + *(vu_long *)MPC5XXX_ADDECR &= ~(1 << 25); /* disable CS_BOOT */
  95 + *(vu_long *)MPC5XXX_ADDECR |= (1 << 16); /* enable CS0 */
  96 +
  97 + return 0;
  98 +}
  99 +#endif
  100 +
  101 +#ifdef CONFIG_PCI
  102 +static struct pci_controller hose;
  103 +
  104 +extern void pci_mpc5xxx_init(struct pci_controller *);
  105 +
  106 +void pci_init_board(void)
  107 +{
  108 + pci_mpc5xxx_init(&hose);
  109 +}
  110 +#endif
  111 +
  112 +#if defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET)
  113 +
  114 +/* IRDA_1 aka PSC6_3 (pin C13) */
  115 +#define GPIO_IRDA_1 0x20000000UL
  116 +
  117 +void init_ide_reset (void)
  118 +{
  119 + debug ("init_ide_reset\n");
  120 +
  121 + /* Configure IRDA_1 (PSC6_3) as GPIO output for ATA reset */
  122 + *(vu_long *) MPC5XXX_GPIO_ENABLE |= GPIO_IRDA_1;
  123 + *(vu_long *) MPC5XXX_GPIO_DIR |= GPIO_IRDA_1;
  124 +}
  125 +
  126 +void ide_set_reset (int idereset)
  127 +{
  128 + debug ("ide_reset(%d)\n", idereset);
  129 +
  130 + if (idereset) {
  131 + *(vu_long *) MPC5XXX_GPIO_DATA_O &= ~GPIO_IRDA_1;
  132 + } else {
  133 + *(vu_long *) MPC5XXX_GPIO_DATA_O |= GPIO_IRDA_1;
  134 + }
  135 +}
  136 +#endif /* defined (CFG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
board/total5200/u-boot.lds
  1 +/*
  2 + * (C) Copyright 2003-2004
  3 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4 + *
  5 + * See file CREDITS for list of people who contributed to this
  6 + * project.
  7 + *
  8 + * This program is free software; you can redistribute it and/or
  9 + * modify it under the terms of the GNU General Public License as
  10 + * published by the Free Software Foundation; either version 2 of
  11 + * the License, or (at your option) any later version.
  12 + *
  13 + * This program is distributed in the hope that it will be useful,
  14 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16 + * GNU General Public License for more details.
  17 + *
  18 + * You should have received a copy of the GNU General Public License
  19 + * along with this program; if not, write to the Free Software
  20 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  21 + * MA 02111-1307 USA
  22 + */
  23 +
  24 +OUTPUT_ARCH(powerpc)
  25 +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
  26 +/* Do we need any of these for elf?
  27 + __DYNAMIC = 0; */
  28 +SECTIONS
  29 +{
  30 + /* Read-only sections, merged into text segment: */
  31 + . = + SIZEOF_HEADERS;
  32 + .interp : { *(.interp) }
  33 + .hash : { *(.hash) }
  34 + .dynsym : { *(.dynsym) }
  35 + .dynstr : { *(.dynstr) }
  36 + .rel.text : { *(.rel.text) }
  37 + .rela.text : { *(.rela.text) }
  38 + .rel.data : { *(.rel.data) }
  39 + .rela.data : { *(.rela.data) }
  40 + .rel.rodata : { *(.rel.rodata) }
  41 + .rela.rodata : { *(.rela.rodata) }
  42 + .rel.got : { *(.rel.got) }
  43 + .rela.got : { *(.rela.got) }
  44 + .rel.ctors : { *(.rel.ctors) }
  45 + .rela.ctors : { *(.rela.ctors) }
  46 + .rel.dtors : { *(.rel.dtors) }
  47 + .rela.dtors : { *(.rela.dtors) }
  48 + .rel.bss : { *(.rel.bss) }
  49 + .rela.bss : { *(.rela.bss) }
  50 + .rel.plt : { *(.rel.plt) }
  51 + .rela.plt : { *(.rela.plt) }
  52 + .init : { *(.init) }
  53 + .plt : { *(.plt) }
  54 + .text :
  55 + {
  56 + cpu/mpc5xxx/start.o (.text)
  57 + *(.text)
  58 + *(.fixup)
  59 + *(.got1)
  60 + . = ALIGN(16);
  61 + *(.rodata)
  62 + *(.rodata1)
  63 + *(.rodata.str1.4)
  64 + }
  65 + .fini : { *(.fini) } =0
  66 + .ctors : { *(.ctors) }
  67 + .dtors : { *(.dtors) }
  68 +
  69 + /* Read-write section, merged into data segment: */
  70 + . = (. + 0x0FFF) & 0xFFFFF000;
  71 + _erotext = .;
  72 + PROVIDE (erotext = .);
  73 + .reloc :
  74 + {
  75 + *(.got)
  76 + _GOT2_TABLE_ = .;
  77 + *(.got2)
  78 + _FIXUP_TABLE_ = .;
  79 + *(.fixup)
  80 + }
  81 + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
  82 + __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
  83 +
  84 + .data :
  85 + {
  86 + *(.data)
  87 + *(.data1)
  88 + *(.sdata)
  89 + *(.sdata2)
  90 + *(.dynamic)
  91 + CONSTRUCTORS
  92 + }
  93 + _edata = .;
  94 + PROVIDE (edata = .);
  95 +
  96 + __u_boot_cmd_start = .;
  97 + .u_boot_cmd : { *(.u_boot_cmd) }
  98 + __u_boot_cmd_end = .;
  99 +
  100 +
  101 + __start___ex_table = .;
  102 + __ex_table : { *(__ex_table) }
  103 + __stop___ex_table = .;
  104 +
  105 + . = ALIGN(4096);
  106 + __init_begin = .;
  107 + .text.init : { *(.text.init) }
  108 + .data.init : { *(.data.init) }
  109 + . = ALIGN(4096);
  110 + __init_end = .;
  111 +
  112 + __bss_start = .;
  113 + .bss :
  114 + {
  115 + *(.sbss) *(.scommon)
  116 + *(.dynbss)
  117 + *(.bss)
  118 + *(COMMON)
  119 + }
  120 + _end = . ;
  121 + PROVIDE (end = .);
  122 +}
... ... @@ -397,7 +397,13 @@
397 397 */
398 398 if (fec->xcv_type == SEVENWIRE) {
399 399 /* 10MBit with 7-wire operation */
  400 +#if defined(CONFIG_TOTAL5200)
  401 + /* 7-wire and USB2 on Ethernet */
  402 + *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= 0x00030000;
  403 +#else /* !CONFIG_TOTAL5200 */
  404 + /* 7-wire only */
400 405 *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= 0x00020000;
  406 +#endif /* CONFIG_TOTAL5200 */
401 407 } else {
402 408 /* 100MBit with MD operation */
403 409 *(vu_long *)MPC5XXX_GPS_PORT_CONFIG |= 0x00050000;
... ... @@ -870,6 +876,8 @@
870 876 # else
871 877 fec->xcv_type = MII10;
872 878 # endif
  879 +#elif defined(CONFIG_TOTAL5200)
  880 + fec->xcv_type = SEVENWIRE;
873 881 #else
874 882 #error fec->xcv_type not initialized.
875 883 #endif
... ... @@ -41,7 +41,13 @@
41 41 struct mpc5xxx_sdma *psdma = (struct mpc5xxx_sdma *) MPC5XXX_SDMA;
42 42  
43 43 reg = *(vu_long *) MPC5XXX_GPS_PORT_CONFIG;
  44 +#if defined(CONFIG_TOTAL5200)
  45 + /* ATA cs0/1 on i2c2 clk/io */
  46 + reg = (reg & ~0x03000000ul) | 0x02000000ul;
  47 +#else
  48 + /* ATA cs0/1 on Local Plus cs4/5 */
44 49 reg = (reg & ~0x03000000ul) | 0x01000000ul;
  50 +#endif /* CONFIG_TOTAL5200 */
45 51 *(vu_long *) MPC5XXX_GPS_PORT_CONFIG = reg;
46 52  
47 53 /* All sample codes do that... */
... ... @@ -110,6 +110,9 @@
110 110 #if defined(CFG_RAMBOOT)
111 111 #error CFG_LOWBOOT is incompatible with CFG_RAMBOOT
112 112 #endif /* CFG_RAMBOOT */
  113 +#if defined(CFG_LOWBOOT)
  114 +#error CFG_LOWBOOT is incompatible with MGT5100
  115 +#endif /* CFG_LOWBOOT */
113 116 lis r4, CFG_DEFAULT_MBAR@h
114 117 lis r3, START_REG(CFG_BOOTCS_START)@h
115 118 ori r3, r3, START_REG(CFG_BOOTCS_START)@l
include/configs/Total5200.h
  1 +/*
  2 + * (C) Copyright 2003-2004
  3 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  4 + *
  5 + * (C) Copyright 2004
  6 + * Mark Jonas, Freescale Semiconductor, mark.jonas@freescale.com.
  7 + *
  8 + * See file CREDITS for list of people who contributed to this
  9 + * project.
  10 + *
  11 + * This program is free software; you can redistribute it and/or
  12 + * modify it under the terms of the GNU General Public License as
  13 + * published by the Free Software Foundation; either version 2 of
  14 + * the License, or (at your option) any later version.
  15 + *
  16 + * This program is distributed in the hope that it will be useful,
  17 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  19 + * GNU General Public License for more details.
  20 + *
  21 + * You should have received a copy of the GNU General Public License
  22 + * along with this program; if not, write to the Free Software
  23 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  24 + * MA 02111-1307 USA
  25 + */
  26 +
  27 +#ifndef __CONFIG_H
  28 +#define __CONFIG_H
  29 +
  30 +/*
  31 + * Check valid setting of revision define.
  32 + * Total5100 and Total5200 Rev.1 are identical except for the processor.
  33 + */
  34 +#if (CONFIG_TOTAL5200_REV!=1 && CONFIG_TOTAL5200_REV!=2)
  35 +#error CONFIG_TOTAL5200_REV must be 1 or 2
  36 +#endif
  37 +
  38 +/*
  39 + * High Level Configuration Options
  40 + * (easy to change)
  41 + */
  42 +
  43 +#define CONFIG_MPC5xxx 1 /* This is an MPC5xxx CPU */
  44 +#define CONFIG_TOTAL5200 1 /* ... on Total5200 board */
  45 +
  46 +#define CFG_MPC5XXX_CLKIN 33000000 /* ... running at 33.000000MHz */
  47 +
  48 +#define BOOTFLAG_COLD 0x01 /* Normal Power-On: Boot from FLASH */
  49 +#define BOOTFLAG_WARM 0x02 /* Software reboot */
  50 +
  51 +#define CFG_CACHELINE_SIZE 32 /* For MPC5xxx CPUs */
  52 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
  53 +# define CFG_CACHELINE_SHIFT 5 /* log base 2 of the above value */
  54 +#endif
  55 +
  56 +/*
  57 + * Serial console configuration
  58 + */
  59 +#define CONFIG_PSC_CONSOLE 3 /* console is on PSC3 */
  60 +#define CONFIG_BAUDRATE 115200 /* ... at 115200 bps */
  61 +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200, 230400 }
  62 +
  63 +
  64 +#ifdef CONFIG_MPC5200 /* MGT5100 PCI is not supported yet. */
  65 +/*
  66 + * PCI Mapping:
  67 + * 0x40000000 - 0x4fffffff - PCI Memory
  68 + * 0x50000000 - 0x50ffffff - PCI IO Space
  69 + */
  70 +#define CONFIG_PCI 1
  71 +#define CONFIG_PCI_PNP 1
  72 +#define CONFIG_PCI_SCAN_SHOW 1
  73 +
  74 +#define CONFIG_PCI_MEM_BUS 0x40000000
  75 +#define CONFIG_PCI_MEM_PHYS CONFIG_PCI_MEM_BUS
  76 +#define CONFIG_PCI_MEM_SIZE 0x10000000
  77 +
  78 +#define CONFIG_PCI_IO_BUS 0x50000000
  79 +#define CONFIG_PCI_IO_PHYS CONFIG_PCI_IO_BUS
  80 +#define CONFIG_PCI_IO_SIZE 0x01000000
  81 +
  82 +#define CONFIG_NET_MULTI 1
  83 +#define CONFIG_EEPRO100 1
  84 +#define CFG_RX_ETH_BUFFER 8 /* use 8 rx buffer on eepro100 */
  85 +#define CONFIG_NS8382X 1
  86 +
  87 +#define ADD_PCI_CMD CFG_CMD_PCI
  88 +
  89 +#else /* MGT5100 */
  90 +
  91 +#define ADD_PCI_CMD 0 /* no CFG_CMD_PCI */
  92 +
  93 +#endif
  94 +
  95 +/* Partitions */
  96 +#define CONFIG_MAC_PARTITION
  97 +#define CONFIG_DOS_PARTITION
  98 +
  99 +/* USB */
  100 +#if 1
  101 +#define CONFIG_USB_OHCI
  102 +#define ADD_USB_CMD CFG_CMD_USB | CFG_CMD_FAT
  103 +#define CONFIG_USB_STORAGE
  104 +#else
  105 +#define ADD_USB_CMD 0
  106 +#endif
  107 +
  108 +/*
  109 + * Supported commands
  110 + */
  111 +#define CONFIG_COMMANDS (CONFIG_CMD_DFL | \
  112 + CFG_CMD_PING | \
  113 + CFG_CMD_I2C | \
  114 + CFG_CMD_EEPROM | \
  115 + CFG_CMD_FAT | \
  116 + CFG_CMD_IDE | \
  117 + ADD_PCI_CMD | \
  118 + ADD_USB_CMD)
  119 +
  120 +/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
  121 +#include <cmd_confdefs.h>
  122 +
  123 +#if (TEXT_BASE == 0xFE000000) /* Boot low */
  124 +# define CFG_LOWBOOT 1
  125 +#endif
  126 +
  127 +/*
  128 + * Autobooting
  129 + */
  130 +#define CONFIG_BOOTDELAY 5 /* autoboot after 5 seconds */
  131 +
  132 +#define CONFIG_PREBOOT "echo;" \
  133 + "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \
  134 + "echo"
  135 +
  136 +#undef CONFIG_BOOTARGS
  137 +
  138 +#define CONFIG_EXTRA_ENV_SETTINGS \
  139 + "netdev=eth0\0" \
  140 + "nfsargs=setenv bootargs root=/dev/nfs rw " \
  141 + "nfsroot=$(serverip):$(rootpath)\0" \
  142 + "ramargs=setenv bootargs root=/dev/ram rw\0" \
  143 + "addip=setenv bootargs $(bootargs) " \
  144 + "ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask)" \
  145 + ":$(hostname):$(netdev):off panic=1\0" \
  146 + "flash_nfs=run nfsargs addip;" \
  147 + "bootm $(kernel_addr)\0" \
  148 + "flash_self=run ramargs addip;" \
  149 + "bootm $(kernel_addr) $(ramdisk_addr)\0" \
  150 + "net_nfs=tftp 200000 $(bootfile);run nfsargs addip;bootm\0" \
  151 + "rootpath=/opt/eldk/ppc_82xx\0" \
  152 + "bootfile=/tftpboot/MPC5200/uImage\0" \
  153 + ""
  154 +
  155 +#define CONFIG_BOOTCOMMAND "run flash_self"
  156 +
  157 +#if defined(CONFIG_MPC5200)
  158 +/*
  159 + * IPB Bus clocking configuration.
  160 + */
  161 +#undef CFG_IPBSPEED_133 /* define for 133MHz speed */
  162 +#endif
  163 +
  164 +/*
  165 + * I2C configuration
  166 + */
  167 +#define CONFIG_HARD_I2C 1 /* I2C with hardware support */
  168 +#define CFG_I2C_MODULE 1 /* Select I2C module #1 or #2 */
  169 +
  170 +#define CFG_I2C_SPEED 100000 /* 100 kHz */
  171 +#define CFG_I2C_SLAVE 0x7F
  172 +
  173 +/*
  174 + * EEPROM configuration
  175 + */
  176 +#define CFG_I2C_EEPROM_ADDR 0x50 /* 1010000x */
  177 +#define CFG_I2C_EEPROM_ADDR_LEN 1
  178 +#define CFG_EEPROM_PAGE_WRITE_BITS 3
  179 +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 70
  180 +
  181 +/*
  182 + * Flash configuration
  183 + */
  184 +#define CFG_FLASH_CFI 1 /* Flash is CFI conformant */
  185 +#define CFG_FLASH_CFI_DRIVER 1 /* Use the common driver */
  186 +#if CONFIG_TOTAL5200_REV==2
  187 +# define CFG_MAX_FLASH_BANKS 3 /* max num of flash banks */
  188 +# define CFG_FLASH_BANKS_LIST { CFG_CS5_START, CFG_CS4_START, CFG_BOOTCS_START }
  189 +#else
  190 +# define CFG_MAX_FLASH_BANKS 1 /* max num of flash banks */
  191 +# define CFG_FLASH_BANKS_LIST { CFG_BOOTCS_START }
  192 +#endif
  193 +#define CFG_FLASH_EMPTY_INFO
  194 +#define CFG_MAX_FLASH_SECT 128 /* max num of sects on one chip */
  195 +
  196 +#if CONFIG_TOTAL5200_REV==1
  197 +# define CFG_FLASH_BASE 0xFE000000
  198 +# define CFG_FLASH_SIZE 0x02000000
  199 +#elif CONFIG_TOTAL5200_REV==2
  200 +# define CFG_FLASH_BASE 0xFA000000
  201 +# define CFG_FLASH_SIZE 0x06000000
  202 +#endif /* CONFIG_TOTAL5200_REV */
  203 +
  204 +#if !defined(CFG_LOWBOOT)
  205 +# define CFG_ENV_ADDR 0xFE040000
  206 +#else /* CFG_LOWBOOT */
  207 +# define CFG_ENV_ADDR 0xFFF40000
  208 +#endif /* CFG_LOWBOOT */
  209 +
  210 +/*
  211 + * Environment settings
  212 + */
  213 +#define CFG_ENV_IS_IN_FLASH 1
  214 +#define CFG_ENV_SIZE 0x40000
  215 +#define CFG_ENV_SECT_SIZE 0x40000
  216 +#define CONFIG_ENV_OVERWRITE 1
  217 +
  218 +/*
  219 + * Memory map
  220 + */
  221 +#define CFG_SDRAM_BASE 0x00000000
  222 +#define CFG_DEFAULT_MBAR 0x80000000
  223 +#define CFG_MBAR 0xF0000000 /* 64 kB */
  224 +#define CFG_FPGA_BASE 0xF0010000 /* 64 kB */
  225 +#define CFG_CPLD_BASE 0xF0020000 /* 64 kB */
  226 +#define CFG_LCD_BASE 0xF0100000 /* 2048 kB */
  227 +
  228 +/* Use SRAM until RAM will be available */
  229 +#define CFG_INIT_RAM_ADDR MPC5XXX_SRAM
  230 +#define CFG_INIT_RAM_END MPC5XXX_SRAM_SIZE /* End of used area in DPRAM */
  231 +
  232 +#define CFG_GBL_DATA_SIZE 128 /* size in bytes reserved for initial data */
  233 +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
  234 +#define CFG_INIT_SP_OFFSET CFG_GBL_DATA_OFFSET
  235 +
  236 +#define CFG_MONITOR_BASE TEXT_BASE
  237 +#if (CFG_MONITOR_BASE < CFG_FLASH_BASE)
  238 +# define CFG_RAMBOOT 1
  239 +#endif
  240 +
  241 +#define CFG_MONITOR_LEN (192 << 10) /* Reserve 192 kB for Monitor */
  242 +#define CFG_MALLOC_LEN (128 << 10) /* Reserve 128 kB for malloc() */
  243 +#define CFG_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */
  244 +
  245 +/*
  246 + * Ethernet configuration
  247 + */
  248 +#define CONFIG_MPC5xxx_FEC 1
  249 +/* dummy, 7-wire FEC does not have phy address */
  250 +#define CONFIG_PHY_ADDR 0x00
  251 +
  252 +/*
  253 + * GPIO configuration
  254 + *
  255 + * CS1: SDRAM CS1 disabled, gpio_wkup_6 enabled 0
  256 + * Reserved 0
  257 + * ALTs: CAN1/2 on PSC2, SPI on PSC3 00
  258 + * CS7: Interrupt GPIO on PSC3_5 0
  259 + * CS8: Interrupt GPIO on PSC3_4 0
  260 + * ATA: reset default, changed in ATA driver 00
  261 + * IR_USB_CLK: IrDA/USB 48MHz clock gen. int., pin is GPIO 0
  262 + * IRDA: reset default, changed in IrDA driver 000
  263 + * ETHER: reset default, changed in Ethernet driver 0000
  264 + * PCI_DIS: reset default, changed in PCI driver 0
  265 + * USB_SE: reset default, changed in USB driver 0
  266 + * USB: reset default, changed in USB driver 00
  267 + * PSC3: SPI and UART functionality without CD 1100
  268 + * Reserved 0
  269 + * PSC2: CAN1/2 001
  270 + * Reserved 0
  271 + * PSC1: reset default, changed in AC'97 driver 000
  272 + *
  273 + */
  274 +#define CFG_GPS_PORT_CONFIG 0x00000C10
  275 +
  276 +/*
  277 + * Miscellaneous configurable options
  278 + */
  279 +#define CFG_LONGHELP /* undef to save memory */
  280 +#define CFG_PROMPT "=> " /* Monitor Command Prompt */
  281 +#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
  282 +#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
  283 +#else
  284 +#define CFG_CBSIZE 256 /* Console I/O Buffer Size */
  285 +#endif
  286 +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
  287 +#define CFG_MAXARGS 16 /* max number of command args */
  288 +#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
  289 +
  290 +#define CFG_MEMTEST_START 0x00100000 /* memtest works on */
  291 +#define CFG_MEMTEST_END 0x00f00000 /* 1 ... 15 MB in DRAM */
  292 +
  293 +#define CFG_LOAD_ADDR 0x100000 /* default load address */
  294 +
  295 +#define CFG_HZ 1000 /* decrementer freq: 1 ms ticks */
  296 +
  297 +/*
  298 + * Various low-level settings
  299 + */
  300 +#if defined(CONFIG_MPC5200)
  301 +#define CFG_HID0_INIT HID0_ICE | HID0_ICFI
  302 +#define CFG_HID0_FINAL HID0_ICE
  303 +#else
  304 +#define CFG_HID0_INIT 0
  305 +#define CFG_HID0_FINAL 0
  306 +#endif
  307 +
  308 +#if defined (CONFIG_MGT5100)
  309 +# define CONFIG_BOARD_EARLY_INIT_R /* switch from CS_BOOT to CS0 */
  310 +#endif
  311 +
  312 +#if CONFIG_TOTAL5200_REV==1
  313 +# define CFG_BOOTCS_START CFG_FLASH_BASE
  314 +# define CFG_BOOTCS_SIZE 0x02000000 /* 32 MB */
  315 +# define CFG_BOOTCS_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */
  316 +# define CFG_CS0_START CFG_FLASH_BASE
  317 +# define CFG_CS0_SIZE 0x02000000 /* 32 MB */
  318 +#else
  319 +# define CFG_BOOTCS_START (CFG_CS4_START + CFG_CS4_SIZE)
  320 +# define CFG_BOOTCS_SIZE 0x02000000 /* 32 MB */
  321 +# define CFG_BOOTCS_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */
  322 +# define CFG_CS4_START (CFG_CS5_START + CFG_CS5_SIZE)
  323 +# define CFG_CS4_SIZE 0x02000000 /* 32 MB */
  324 +# define CFG_CS4_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */
  325 +# define CFG_CS5_START CFG_FLASH_BASE
  326 +# define CFG_CS5_SIZE 0x02000000 /* 32 MB */
  327 +# define CFG_CS5_CFG 0x0004DF00 /* 4WS, MX, AL, CE, AS_25, DS_32 */
  328 +#endif
  329 +
  330 +#define CFG_CS1_START CFG_FPGA_BASE
  331 +#define CFG_CS1_SIZE 0x00010000 /* 64 kB */
  332 +#define CFG_CS1_CFG 0x0019FF00 /* 25WS, MX, AL, AA, CE, AS_25, DS_32 */
  333 +
  334 +#define CFG_CS2_START CFG_LCD_BASE
  335 +#define CFG_CS2_SIZE 0x00200000 /* 2048 kB */
  336 +#define CFG_CS2_CFG 0x0019FD00 /* 25WS, MX, AL, AA, CE, AS_25, DS_16 */
  337 +
  338 +#if CONFIG_TOTAL5200_REV==1
  339 +# define CFG_CS3_START CFG_CPLD_BASE
  340 +# define CFG_CS3_SIZE 0x00010000 /* 64 kB */
  341 +# define CFG_CS3_CFG 0x000ADF00 /* 10WS, MX, AL, CE, AS_25, DS_32 */
  342 +#else
  343 +# define CFG_CS3_START CFG_CPLD_BASE
  344 +# define CFG_CS3_SIZE 0x00010000 /* 64 kB */
  345 +# define CFG_CS3_CFG 0x000AD800 /* 10WS, MX, AL, CE, AS_24, DS_8 */
  346 +#endif
  347 +
  348 +#define CFG_CS_BURST 0x00000000
  349 +#define CFG_CS_DEADCYCLE 0x33333333
  350 +
  351 +/*-----------------------------------------------------------------------
  352 + * USB stuff
  353 + *-----------------------------------------------------------------------
  354 + */
  355 +#define CONFIG_USB_CLOCK 0x0001BBBB
  356 +#define CONFIG_USB_CONFIG 0x00001000
  357 +
  358 +/*-----------------------------------------------------------------------
  359 + * IDE/ATA stuff Supports IDE harddisk
  360 + *-----------------------------------------------------------------------
  361 + */
  362 +
  363 +#undef CONFIG_IDE_8xx_PCCARD /* Use IDE with PC Card Adapter */
  364 +
  365 +#undef CONFIG_IDE_8xx_DIRECT /* Direct IDE not supported */
  366 +#undef CONFIG_IDE_LED /* LED for ide not supported */
  367 +
  368 +#define CONFIG_IDE_RESET /* reset for ide supported */
  369 +#define CONFIG_IDE_PREINIT
  370 +
  371 +#define CFG_IDE_MAXBUS 1 /* max. 1 IDE bus */
  372 +#define CFG_IDE_MAXDEVICE 1 /* max. 1 drive per IDE bus */
  373 +
  374 +#define CFG_ATA_IDE0_OFFSET 0x0000
  375 +
  376 +#define CFG_ATA_BASE_ADDR MPC5XXX_ATA
  377 +
  378 +/* Offset for data I/O */
  379 +#define CFG_ATA_DATA_OFFSET (0x0060)
  380 +
  381 +/* Offset for normal register accesses */
  382 +#define CFG_ATA_REG_OFFSET (CFG_ATA_DATA_OFFSET)
  383 +
  384 +/* Offset for alternate registers */
  385 +#define CFG_ATA_ALT_OFFSET (0x005C)
  386 +
  387 +/* Interval between registers */
  388 +#define CFG_ATA_STRIDE 4
  389 +
  390 +#endif /* __CONFIG_H */
... ... @@ -165,6 +165,23 @@
165 165 /* GPIO registers */
166 166 #define MPC5XXX_GPS_PORT_CONFIG (MPC5XXX_GPIO + 0x0000)
167 167  
  168 +/* Standard GPIO registers (simple, output only and simple interrupt */
  169 +#define MPC5XXX_GPIO_ENABLE (MPC5XXX_GPIO + 0x0004)
  170 +#define MPC5XXX_GPIO_ODE (MPC5XXX_GPIO + 0x0008)
  171 +#define MPC5XXX_GPIO_DIR (MPC5XXX_GPIO + 0x000c)
  172 +#define MPC5XXX_GPIO_DATA_O (MPC5XXX_GPIO + 0x0010)
  173 +#define MPC5XXX_GPIO_DATA_I (MPC5XXX_GPIO + 0x0014)
  174 +#define MPC5XXX_GPIO_OO_ENABLE (MPC5XXX_GPIO + 0x0018)
  175 +#define MPC5XXX_GPIO_OO_DATA (MPC5XXX_GPIO + 0x001C)
  176 +#define MPC5XXX_GPIO_SI_ENABLE (MPC5XXX_GPIO + 0x0020)
  177 +#define MPC5XXX_GPIO_SI_ODE (MPC5XXX_GPIO + 0x0024)
  178 +#define MPC5XXX_GPIO_SI_DIR (MPC5XXX_GPIO + 0x0028)
  179 +#define MPC5XXX_GPIO_SI_DATA (MPC5XXX_GPIO + 0x002C)
  180 +#define MPC5XXX_GPIO_SI_IEN (MPC5XXX_GPIO + 0x0030)
  181 +#define MPC5XXX_GPIO_SI_ITYPE (MPC5XXX_GPIO + 0x0034)
  182 +#define MPC5XXX_GPIO_SI_MEN (MPC5XXX_GPIO + 0x0038)
  183 +#define MPC5XXX_GPIO_SI_STATUS (MPC5XXX_GPIO + 0x003C)
  184 +
168 185 /* WakeUp GPIO registers */
169 186 #define MPC5XXX_WU_GPIO_ENABLE (MPC5XXX_WU_GPIO + 0x0000)
170 187 #define MPC5XXX_WU_GPIO_ODE (MPC5XXX_WU_GPIO + 0x0004)