From: Stefan Roese <sr@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH 9/9] Add support for Korat PPC440EPx board
Date: Thu, 27 Dec 2007 16:21:58 +0100 [thread overview]
Message-ID: <200712271621.58805.sr@denx.de> (raw)
In-Reply-To: <476D70BA.3060807@arlinx.com>
On Saturday 22 December 2007, Larry Johnson wrote:
> These patches add support for the PPC440EPx-based "Korat" board to
> U-Boot. They are based primarily on support for the Sequoia board.
>
> Signed-off-by: Larry Johnson <lrj@acm.org>
> ---
> MAINTAINERS | 4 +
> MAKEALL | 1 +
> Makefile | 3 +
> board/korat/Makefile | 51 ++++
> board/korat/config.mk | 37 +++
> board/korat/init.S | 80 +++++
> board/korat/korat.c | 761
> ++++++++++++++++++++++++++++++++++++++++++++++++ board/korat/u-boot.lds |
> 145 +++++++++
> 8 files changed, 1082 insertions(+), 0 deletions(-)
> create mode 100644 board/korat/Makefile
> create mode 100644 board/korat/config.mk
> create mode 100644 board/korat/init.S
> create mode 100644 board/korat/korat.c
> create mode 100644 board/korat/u-boot.lds
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index bf0ebb1..0238d2e 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -204,6 +204,10 @@ Murray Jensen <Murray.Jensen@csiro.au>
> cogent_mpc8260 MPC8260
> hymod MPC8260
>
> +Larry Johnson <lrj@acm.org>
> +
> + korat PPC440EPx
> +
> Brad Kemp <Brad.Kemp@seranoa.com>
>
> ppmc8260 MPC8260
> diff --git a/MAKEALL b/MAKEALL
> index fb53a91..97e3891 100755
> --- a/MAKEALL
> +++ b/MAKEALL
> @@ -191,6 +191,7 @@ LIST_4xx=" \
> katmai \
> kilauea \
> kilauea_nand \
> + korat \
> luan \
> lwmon5 \
> makalu \
> diff --git a/Makefile b/Makefile
> index c73d4cf..c127bcf 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1231,6 +1231,9 @@ haleakala_nand_config: unconfig
> @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/kilauea/config.tmp
> @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
>
> +korat_config: unconfig
> + @$(MKCONFIG) $(@:_config=) ppc ppc4xx korat
> +
> luan_config: unconfig
> @$(MKCONFIG) $(@:_config=) ppc ppc4xx luan amcc
>
> diff --git a/board/korat/Makefile b/board/korat/Makefile
> new file mode 100644
> index 0000000..fa19e6f
> --- /dev/null
> +++ b/board/korat/Makefile
> @@ -0,0 +1,51 @@
> +#
> +# (C) Copyright 2002-2007
> +# Wolfgang Denk, DENX Software Engineering, wd at 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
> +#
> +
> +include $(TOPDIR)/config.mk
> +
> +LIB = $(obj)lib$(BOARD).a
> +
> +COBJS = $(BOARD).o
> +SOBJS = init.o
> +
> +SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
> +OBJS := $(addprefix $(obj),$(COBJS))
> +SOBJS := $(addprefix $(obj),$(SOBJS))
> +
> +$(LIB): $(OBJS) $(SOBJS)
> + $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
> +
> +clean:
> + rm -f $(SOBJS) $(OBJS)
> +
> +distclean: clean
> + rm -f $(LIB) core *.bak .depend
> +
> +#########################################################################
> +
> +# defines $(obj).depend target
> +include $(SRCTREE)/rules.mk
> +
> +sinclude $(obj).depend
> +
> +#########################################################################
> diff --git a/board/korat/config.mk b/board/korat/config.mk
> new file mode 100644
> index 0000000..39966e0
> --- /dev/null
> +++ b/board/korat/config.mk
> @@ -0,0 +1,37 @@
> +#
> +# (C) Copyright 2002
> +# Wolfgang Denk, DENX Software Engineering, wd at 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
> +#
> +#
> +# Korat (PPC440EPx) board
> +#
> +
> +TEXT_BASE = 0xFFFA0000
> +
> +PLATFORM_CPPFLAGS += -DCONFIG_440=1
> +
> +ifeq ($(debug),1)
> +PLATFORM_CPPFLAGS += -DDEBUG
> +endif
> +
> +ifeq ($(dbcr),1)
> +PLATFORM_CPPFLAGS += -DCFG_INIT_DBCR=0x8cff0000
> +endif
> diff --git a/board/korat/init.S b/board/korat/init.S
> new file mode 100644
> index 0000000..bd0e8b4
> --- /dev/null
> +++ b/board/korat/init.S
> @@ -0,0 +1,80 @@
> +/*
> + *
> + * 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
> + */
> +
> +#include <ppc_asm.tmpl>
> +#include <asm-ppc/mmu.h>
> +#include <config.h>
> +
> +/*************************************************************************
>* + * TLB TABLE
> + *
> + * This table is used by the cpu boot code to setup the initial tlb
> + * entries. Rather than make broad assumptions in the cpu source tree,
> + * this table lets each board set things up however they like.
> + *
> + * Pointer to the table is returned in r1
> + *
> +
> *************************************************************************/
> + .section .bootpg,"ax"
> + .globl tlbtab
> +
> +tlbtab:
> + tlbtab_start
> +
> + /*
> + * BOOT_CS (FLASH) must be first. Before relocation SA_I can be off to
> use the + * speed up boot process. It is patched after relocation to
> enable SA_I + */
> + tlbentry( CFG_BOOT_BASE_ADDR, SZ_256M, CFG_BOOT_BASE_ADDR, 1,
> AC_R|AC_W|AC_X|SA_G ) +
> + /*
> + * TLB entries for SDRAM are not needed on this platform. They are
> + * generated dynamically in the SPD DDR2 detection routine.
> + */
> +
> +#ifdef CFG_INIT_RAM_DCACHE
> + /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
> + tlbentry( CFG_INIT_RAM_ADDR, SZ_64K, CFG_INIT_RAM_ADDR, 0,
> AC_R|AC_W|AC_X|SA_G ) +#endif
> +
> + /* TLB-entry for PCI Memory */
> + tlbentry( CFG_PCI_MEMBASE, SZ_256M, CFG_PCI_MEMBASE, 1,
> AC_R|AC_W|SA_G|SA_I ) + tlbentry( CFG_PCI_MEMBASE1, SZ_256M,
> CFG_PCI_MEMBASE1, 1, AC_R|AC_W|SA_G|SA_I ) + tlbentry( CFG_PCI_MEMBASE2,
> SZ_256M, CFG_PCI_MEMBASE2, 1, AC_R|AC_W|SA_G|SA_I ) + tlbentry(
> CFG_PCI_MEMBASE3, SZ_256M, CFG_PCI_MEMBASE3, 1, AC_R|AC_W|SA_G|SA_I ) +
> + /* TLB-entry for EBC */
> + tlbentry( CFG_CPLD_BASE, SZ_1K, CFG_CPLD_BASE, 1, AC_R|AC_W|SA_G|SA_I )
> +
> + /* TLB-entry for Internal Registers & OCM */
> + /* I wonder why this must be executable -- lrj at acm.org 2007-10-08 */
> + tlbentry( 0xE0000000, SZ_16M, 0xE0000000, 0, AC_R|AC_W|AC_X|SA_I )
> +
> + /*TLB-entry PCI registers*/
> + tlbentry( 0xEEC00000, SZ_1K, 0xEEC00000, 1, AC_R|AC_W|SA_G|SA_I )
> +
> + /* TLB-entry for peripherals */
> + tlbentry( 0xEF000000, SZ_16M, 0xEF000000, 1, AC_R|AC_W|SA_G|SA_I)
> +
> + /* TLB-entry PCI IO Space - from sr at denx.de */
> + tlbentry(0xE8000000, SZ_64K, 0xE8000000, 1, AC_R|AC_W|SA_G|SA_I)
> +
> + tlbtab_end
> diff --git a/board/korat/korat.c b/board/korat/korat.c
> new file mode 100644
> index 0000000..7cb9ee1
> --- /dev/null
> +++ b/board/korat/korat.c
> @@ -0,0 +1,761 @@
> +/*
> + * (C) Copyright 2007
> + * Larry Johnson, lrj at acm.org
> + *
> + * (C) Copyright 2006
> + * Stefan Roese, DENX Software Engineering, sr at denx.de.
> + *
> + * (C) Copyright 2006
> + * Jacqueline Pira-Ferriol, AMCC/IBM, jpira-ferriol at fr.ibm.com
> + * Alain Saurel, AMCC/IBM, alain.saurel at fr.ibm.com
> + *
> + * 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
> + */
> +
> +#include <common.h>
> +#include <asm/processor.h>
> +#include <asm-ppc/io.h>
> +#include <i2c.h>
> +#include <ppc440.h>
> +
> +DECLARE_GLOBAL_DATA_PTR;
> +
> +extern flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* info for FLASH
> chips */ +
> +ulong flash_get_size(ulong base, int banknum);
> +
> +int board_early_init_f(void)
> +{
> + u32 sdr0_pfc1, sdr0_pfc2;
> + u32 gpio0_ir;
> + u32 reg;
> + int eth;
> +
> + mtdcr(ebccfga, xbcfg);
> + mtdcr(ebccfgd, 0xb8400000);
> +
> + /*--------------------------------------------------------------------
> + * Setup the GPIO pins
> + *
> + * Korat GPIO usage:
> + *
> + * Init.
> + * Pin Source I/O value Function
> + * ------ ------ --- ----- ---------------------------------
> + * GPIO00 Alt1 I/O x PerAddr07
> + * GPIO01 Alt1 I/O x PerAddr06
> + * GPIO02 Alt1 I/O x PerAddr05
> + * GPIO03 GPIO x x GPIO03 to expansion bus connector
> + * GPIO04 GPIO x x GPIO04 to expansion bus connector
> + * GPIO05 GPIO x x GPIO05 to expansion bus connector
> + * GPIO06 Alt1 O x PerCS1 (2nd NOR flash)
> + * GPIO07 Alt1 O x PerCS2 (CPLD)
> + * GPIO08 Alt1 O x PerCS3 to expansion bus connector
> + * GPIO09 Alt1 O x PerCS4 to expansion bus connector
> + * GPIO10 Alt1 O x PerCS5 to expansion bus connector
> + * GPIO11 Alt1 I x PerErr
> + * GPIO12 GPIO O 0 ATMega !Reset
> + * GPIO13 GPIO O 1 SPI Atmega !SS
> + * GPIO14 GPIO O 1 Write protect EEPROM #1 (0xA8)
> + * GPIO15 GPIO O 0 CPU Run LED !On
> + * GPIO16 Alt1 O x GMC1TxD0
> + * GPIO17 Alt1 O x GMC1TxD1
> + * GPIO18 Alt1 O x GMC1TxD2
> + * GPIO19 Alt1 O x GMC1TxD3
> + * GPIO20 Alt1 O x RejectPkt0
> + * GPIO21 Alt1 O x RejectPkt1
> + * GPIO22 GPIO I x PGOOD_DDR
> + * GPIO23 Alt1 O x SCPD0
> + * GPIO24 Alt1 O x GMC0TxD2
> + * GPIO25 Alt1 O x GMC0TxD3
> + * GPIO26 GPIO? I/O x IIC0SDA (selected in SDR0_PFC4)
> + * GPIO27 GPIO O 0 PHY #0 1000BASE-X
> + * GPIO28 GPIO O 0 PHY #1 1000BASE-X
> + * GPIO29 GPIO I x Test jumper !Present
> + * GPIO30 GPIO I x SFP module #0 !Present
> + * GPIO31 GPIO I x SFP module #1 !Present
> + *
> + * GPIO32 GPIO O 1 SFP module #0 Tx !Enable
> + * GPIO33 GPIO O 1 SFP module #1 Tx !Enable
> + * GPIO34 Alt2 I x !UART1_CTS
> + * GPIO35 Alt2 O x !UART1_RTS
> + * GPIO36 Alt1 I x !UART0_CTS
> + * GPIO37 Alt1 O x !UART0_RTS
> + * GPIO38 Alt2 O x UART1_Tx
> + * GPIO39 Alt2 I x UART1_Rx
> + * GPIO40 Alt1 I x IRQ0 (Ethernet 0)
> + * GPIO41 Alt1 I x IRQ1 (Ethernet 1)
> + * GPIO42 Alt1 I x IRQ2 (PCI interrupt)
> + * GPIO43 Alt1 I x IRQ3 (System Alert from CPLD)
> + * GPIO44 xxxx x x (grounded through pulldown)
> + * GPIO45 GPIO O 0 PHY #0 Enable
> + * GPIO46 GPIO O 0 PHY #1 Enable
> + * GPIO47 GPIO I x Reset switch !Pressed
> + * GPIO48 GPIO I x Shutdown switch !Pressed
> + * GPIO49 xxxx x x (reserved for trace port)
> + * . . . . .
> + * . . . . .
> + * . . . . .
> + * GPIO63 xxxx x x (reserved for trace port)
> + *-------------------------------------------------------------------*/
> +
> + out_be32((u32 *) GPIO0_OR, 0x00060000);
> + out_be32((u32 *) GPIO1_OR, 0xC0000000);
> +
> + out_be32((u32 *) GPIO0_OSRL, 0x54055400);
> + out_be32((u32 *) GPIO0_OSRH, 0x55015000);
> + out_be32((u32 *) GPIO1_OSRL, 0x02180000);
> + out_be32((u32 *) GPIO1_OSRH, 0x00000000);
> +
> + out_be32((u32 *) GPIO0_TSRL, 0x54055500);
> + out_be32((u32 *) GPIO0_TSRH, 0x00015000);
> + out_be32((u32 *) GPIO1_TSRL, 0x00000000);
> + out_be32((u32 *) GPIO1_TSRH, 0x00000000);
> +
> + out_be32((u32 *) GPIO0_TCR, 0x000FF0D8);
> + out_be32((u32 *) GPIO1_TCR, 0xD6060000);
> +
> + out_be32((u32 *) GPIO0_ISR1L, 0x54000100);
> + out_be32((u32 *) GPIO0_ISR1H, 0x00500000);
> + out_be32((u32 *) GPIO1_ISR1L, 0x00405500);
> + out_be32((u32 *) GPIO1_ISR1H, 0x00000000);
> +
> + out_be32((u32 *) GPIO0_ISR2L, 0x00000000);
> + out_be32((u32 *) GPIO0_ISR2H, 0x00000000);
> + out_be32((u32 *) GPIO1_ISR2L, 0x04010000);
> + out_be32((u32 *) GPIO1_ISR2H, 0x00000000);
> +
> + out_be32((u32 *) GPIO0_ISR3L, 0x00000000);
> + out_be32((u32 *) GPIO0_ISR3H, 0x00000000);
> + out_be32((u32 *) GPIO1_ISR3L, 0x00000000);
> + out_be32((u32 *) GPIO1_ISR3H, 0x00000000);
Just for your information: The LWMON5 has a complete GPIO setup via the
CFG_4xx_GPIO_TABLE define in the board config file. This is much easier to
maintain. I suggest you change this GPIO configuration at some time to use
this method. For now I will accept this version since it is tested.
And yes, this should be done for Sequoia too at some time. Patches as always
welcome. ;)
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
next prev parent reply other threads:[~2007-12-27 15:21 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-22 20:16 [U-Boot-Users] [PATCH 9/9] Add support for Korat PPC440EPx board Larry Johnson
2007-12-27 15:21 ` Stefan Roese [this message]
2007-12-27 16:36 ` Larry Johnson
2007-12-27 18:19 ` Stefan Roese
2007-12-27 16:10 ` Stefan Roese
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200712271621.58805.sr@denx.de \
--to=sr@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.