From 7aa78614716b7bd7bdf68553f261ad0d5a12826a Mon Sep 17 00:00:00 2001 From: wdenk Date: Sat, 3 May 2003 15:50:43 +0000 Subject: * Add support for Promess ATC board * Patch by Keith Outwater, 28 Apr 2003: - Miscellaneous corrections and additions to GEN860T board specific code. - Added GEN860_SC variant to GEN860T. - Miscellaneous corrections to GEN860T documentation. - Correct duplicate entry in U-Boot CREDITS file. - Add GEN860T_SC entry in MAINTAINERS file. - Update CREDITS file with GEN860T_SC info. * Update Smiths Aerospace addresses in MAINTAINERS file * Fix error handling in hush's version of "run" command --- board/gen860t/README | 25 +++++--- board/gen860t/gen860t.c | 22 ++++--- board/gen860t/ioport.c | 69 ++++++++++++++++---- board/gen860t/u-boot-flashenv.lds | 132 ++++++++++++++++++++++++++++++++++++++ board/gen860t/u-boot.lds | 11 ---- 5 files changed, 217 insertions(+), 42 deletions(-) create mode 100644 board/gen860t/u-boot-flashenv.lds (limited to 'board/gen860t') diff --git a/board/gen860t/README b/board/gen860t/README index 761ceed302..7c03f93650 100644 --- a/board/gen860t/README +++ b/board/gen860t/README @@ -1,8 +1,7 @@ - This directory contains board specific code for a generic MPC860T based embedded computer, called 'GEN860T'. The design is generic in the sense that common, readily available components are used and that the architecture of the -system is i(relatively) straightforward: +system is relatively straightforward: One eight bit wide boot (FLASH) memory 32 bit main memory using SDRAM @@ -23,14 +22,14 @@ hearing from you, especially if you discover bugs or find ways to improve the quality of this U-Boot port. Here are the salient features of the system: -Clock : 33 Mhz oscillator -Processor core frequency : 66 Mhz if in 1:2:1 mode; can also run 1:1 -Bus frequency : 33 Mhz +Clock : 33.3 Mhz oscillator +Processor core frequency : 66.6 Mhz if in 1:2:1 mode; can also run 1:1 +Bus frequency : 33.3 Mhz Main memory: Type : SDRAM Width : 32 bits - Size : 64 megabytes + Size : 64 mibibytes Chip : Two Micron MT48LC16M16A2TG-7E CS : MPC860T CS1*/UPMA UPMA CONNECTIONS: @@ -42,7 +41,7 @@ Main memory: Boot memory: Type : FLASH Width : 8 bits - Size : 16 megabytes + Size : 16 mibibytes Chip : One Intel 28F128J3A (StrataFlash) CS : MPC860T CS0*/GPCM (this is the "boot" chip select) @@ -56,7 +55,7 @@ EEPROM memory: Filesystem memory: Type : NAND FLASH (Toshiba) Width : 8 bits (i.e. interface to DOC is 8 bits) - Size : 32 megabytes + Size : 32 mibibytes Chip : One DiskOnCHip Millenium Plus (DOC 2000+) CS : MPC860T CS2*/GPCM @@ -92,6 +91,12 @@ Miscellaneous: Mil-Std 1553 databus interface on CS5*/GPCM. Audio sounder (beeper) with digital volume control connected to SPKROUT. +SC variant: + A reduced-feature version of the GEN860T port is also supported: GEN860T_SC. + The 'SC' variant only provides support for the Virtex FPGA, SDRAM main + memory, EEPROM and flash memory. The system clock frequency is reduced + to 24 MHz. + Issues: The DOC 2000+ returns 0x40 as its device ID when probed using the method desxribed in the DOC datasheet. Unfortunately, the U-Boot DOC driver @@ -105,11 +110,11 @@ Status: in MTD for this device. I wish I had known this sooner :( The GEN860T board specific files and configuration is based on the work -of others who have contributed to U-Boot. The copright and license notices +of others who have contributed to U-Boot. The copyright and license notices of these authors have been retained wherever their code has been reused. All new code to support the GEN860T board is: - (C) Copyright 2001-2002 + (C) Copyright 2001-2003 Keith Outwater (keith_outwater@mvis.com) and the following license applies: diff --git a/board/gen860t/gen860t.c b/board/gen860t/gen860t.c index 16a3262c4b..094eeef037 100644 --- a/board/gen860t/gen860t.c +++ b/board/gen860t/gen860t.c @@ -271,18 +271,12 @@ misc_init_r (void) int last_stage_init(void) { +#if !defined(CONFIG_SC) unsigned char buf[256]; int i; /* - * Set LEDs here since status LED init code has already run - */ - status_led_set(STATUS_LED_BIT1, STATUS_LED_ON); - status_led_set(STATUS_LED_BIT3, STATUS_LED_ON); - - /* - * Turn the beeper volume all the way down in case this is a warm - * boot. + * Turn the beeper volume all the way down in case this is a warm boot. */ set_beeper_volume(-64); init_beeper(); @@ -294,6 +288,18 @@ last_stage_init(void) if (i > 0) { do_beeper(buf); } +#endif return 0; } + +/* + * Stub to make POST code happy. Can't self-poweroff, so just hang. + */ +void +board_poweroff(void) +{ + puts("### Please power off the board ###\n"); + while (1); +} + /* vim: set ts=4 sw=4 tw=78 : */ diff --git a/board/gen860t/ioport.c b/board/gen860t/ioport.c index 5d6524dbd3..7b3ebd4490 100644 --- a/board/gen860t/ioport.c +++ b/board/gen860t/ioport.c @@ -42,8 +42,9 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = { /* * Port A configuration - * Pin Signal Type Active Initial state - * PA7 fpgaProgramLowOut Out Low High + * Pin Signal Type Active Initial state + * PA7 fpgaProgramLowOut Out Low High + * PA1 fpgaCoreVoltageFailLow In Low N/A */ { /* conf ppar psor pdir podr pdat pint function */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* No pin */ @@ -62,22 +63,32 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = { /* PA4 */ { 1, 0, 0, 1, 0, 0, 0 }, /* red bicolor LED 0*/ /* PA3 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PA2 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#if !defined(CONFIG_SC) + /* PA1 */ { 1, 0, 0, 0, 0, 0, 0 }, /* fpgaCoreVoltageFail*/ +#else /* PA1 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#endif /* PA0 */ { 0, 0, 0, 0, 0, 0, 0 } /* */ }, /* + * Port B configuration * Pin Signal Type Active Initial state * PB14 docBusyLowIn In Low X * PB15 gpio1Sig Out High Low * PB16 fpgaDoneBi In High X - * PB17 swBitOkLowOut Out Low Low + * PB17 swBitOkLowOut Out Low High * PB19 speakerVolSig Out/Hi-Z High/Low High (Hi-Z) * PB22 fpgaInitLowBi In Low X * PB23 batteryOkSig In High X - */ - { /* conf ppar psor pdir podr pdat pint function */ - /* PB31 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ + * PB31 pulseCatcherClr Out High 0 + */ + { /* conf ppar psor pdir podr pdat pint function */ +#if !defined(CONFIG_SC) + /* PB31 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#else + /* PB31 */ { 1, 0, 0, 1, 0, 0, 0 }, /* pulseCatcherClr */ +#endif /* PB30 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PB29 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PB28 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ @@ -85,19 +96,32 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = { /* PB26 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PB25 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PB24 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#if !defined(CONFIG_SC) /* PB23 */ { 1, 0, 0, 0, 0, 0, 0 }, /* batteryOk */ +#else + /* PB23 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#endif /* PB22 */ { 1, 0, 0, 0, 0, 0, 0 }, /* fpgaInitLowBi */ /* PB21 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PB20 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#if !defined(CONFIG_SC) /* PB19 */ { 1, 0, 0, 1, 1, 1, 0 }, /* speakerVol */ +#else + /* PB19 */ { 0, 0, 0, 1, 1, 1, 0 }, /* */ +#endif /* PB18 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ - /* PB17 */ { 1, 0, 0, 1, 0, 0, 0 }, /* swBitOkLow */ + /* PB17 */ { 1, 0, 0, 1, 0, 1, 0 }, /* swBitOkLow */ /* PB16 */ { 1, 0, 0, 0, 0, 0, 0 }, /* fpgaDone */ /* PB15 */ { 1, 0, 0, 1, 0, 0, 0 }, /* gpio1 */ +#if !defined(CONFIG_SC) /* PB14 */ { 1, 0, 0, 0, 0, 0, 0 } /* docBusyLow */ - }, +#else + /* PB14 */ { 0, 0, 0, 0, 0, 0, 0 } /* */ +#endif + }, /* + * Port C configuration * Pin Signal Type Active Initial state * PC4 i2cBus1EnSig Out High High * PC5 i2cBus2EnSig Out High High @@ -108,29 +132,48 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = { * PC12 systemBitOkIn In High X * PC15 selfDreqLow In Low X */ - { /* conf ppar psor pdir podr pdat pint function */ + { /* conf ppar psor pdir podr pdat pint function */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PC15 */ { 1, 0, 0, 0, 0, 0, 0 }, /* selfDreqLowIn */ /* PC14 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PC13 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#if !defined(CONFIG_SC) /* PC12 */ { 1, 0, 0, 0, 0, 0, 0 }, /* systemBitOkIn */ +#else + /* PC12 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#endif /* PC11 */ { 1, 0, 0, 1, 0, 1, 0 }, /* fpgaResetLowOut */ +#if !defined(CONFIG_SC) /* PC10 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus4EnSig */ +#else + /* PC10 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */ +#endif /* PC9 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ +#if !defined(CONFIG_SC) /* PC8 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus3EnSig */ +#else + /* PC8 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */ +#endif /* PC7 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PC6 */ { 1, 0, 0, 1, 0, 1, 0 }, /* gpio0 */ +#if !defined(CONFIG_SC) /* PC5 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus2EnSig */ /* PC4 */ { 1, 0, 0, 1, 0, 1, 0 }, /* i2cBus1EnSig */ +#else + /* PC5 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */ + /* PC4 */ { 0, 0, 0, 1, 0, 1, 0 }, /* */ +#endif /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 } /* */ - }, + }, - /* Port D configuration */ - { /* conf ppar psor pdir podr pdat pint function */ + /* + * Port D configuration + */ + { /* conf ppar psor pdir podr pdat pint function */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* PD15 */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ @@ -149,7 +192,7 @@ const mpc8xx_iop_conf_t iop_conf_tab[NUM_PORTS][PORT_BITS] = { /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 }, /* */ /* N/A */ { 0, 0, 0, 0, 0, 0, 0 } /* */ - } + } }; /* diff --git a/board/gen860t/u-boot-flashenv.lds b/board/gen860t/u-boot-flashenv.lds new file mode 100644 index 0000000000..8b1ce1a1b4 --- /dev/null +++ b/board/gen860t/u-boot-flashenv.lds @@ -0,0 +1,132 @@ +/* + * Linker command file for the GEN860T board when the environment is + * stored in flash memory. + * + * (C) Copyright 2000 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * See file CREDITS for list of people who contributed to this + * project. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + */ + +OUTPUT_ARCH(powerpc) +SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib); +SECTIONS +{ + /* + * Read-only sections, merged into text segment: + */ + . = + SIZEOF_HEADERS; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .rel.text : { *(.rel.text) } + .rela.text : { *(.rela.text) } + .rel.data : { *(.rel.data) } + .rela.data : { *(.rela.data) } + .rel.rodata : { *(.rel.rodata) } + .rela.rodata : { *(.rela.rodata) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .init : { *(.init) } + .plt : { *(.plt) } + .text : + { + cpu/mpc8xx/start.o (.text) + *(.text) + *(.fixup) + *(.got1) + } + _etext = .; + PROVIDE (etext = .); + .rodata : + { + *(.rodata) + *(.rodata1) + } + .fini : { *(.fini) } =0 + .ctors : { *(.ctors) } + .dtors : { *(.dtors) } + + /* + * Read-write section, merged into data segment: + */ + . = (. + 0x00FF) & 0xFFFFFF00; + _erotext = .; + PROVIDE (erotext = .); + .reloc : + { + *(.got) + _GOT2_TABLE_ = .; + *(.got2) + _FIXUP_TABLE_ = .; + *(.fixup) + } + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >>2; + __fixup_entries = (. - _FIXUP_TABLE_)>>2; + + .data: + { + *(.data) + *(.data1) + *(.sdata) + *(.sdata2) + *(.dynamic) + CONSTRUCTORS + } + _edata = .; + PROVIDE (edata = .); + + __start___ex_table = .; + __ex_table : { *(__ex_table) } + __stop___ex_table = .; + + . = ALIGN(256); + __init_begin = .; + .text.init : { *(.text.init) } + .data.init : { *(.data.init) } + . = ALIGN(256); + __init_end = .; + + __bss_start = .; + .bss : + { + *(.sbss) *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + + _end = . ; + PROVIDE (end = .); + + .ppcenv: + { + . = env_offset; + common/environment.o + } +} diff --git a/board/gen860t/u-boot.lds b/board/gen860t/u-boot.lds index 1b53c723d5..b67faa63d0 100644 --- a/board/gen860t/u-boot.lds +++ b/board/gen860t/u-boot.lds @@ -56,15 +56,6 @@ SECTIONS .text : { cpu/mpc8xx/start.o (.text) - common/dlmalloc.o (.text) - lib_ppc/ppcstring.o (.text) - lib_generic/vsprintf.o (.text) - lib_generic/crc32.o (.text) - lib_generic/zlib.o (.text) - -/* . = env_offset; - common/environment.o(.text) */ - *(.text) *(.fixup) *(.got1) @@ -128,8 +119,6 @@ SECTIONS *(.bss) *(COMMON) } - _end = . ; PROVIDE (end = .); } - -- cgit v1.2.1