Commit 53dd6ce4f0208bb4d15311f6365f79f6c5b68673

Authored by Wolfgang Denk
1 parent 8623c11e08

Add support for KVME080 board

Patch by Sangmoon Kim, 18 Aug 2005

Showing 12 changed files with 1026 additions and 3 deletions Side-by-side Diff

... ... @@ -2,6 +2,9 @@
2 2 Changes since U-Boot 1.1.4:
3 3 ======================================================================
4 4  
  5 +* Add support for KVME080 board
  6 + Patch by Sangmoon Kim, 18 Aug 2005
  7 +
5 8 * Fix MIPS LE build problem
6 9 Patch by Matej Kupljen, 10 Aug 2005
7 10  
... ... @@ -233,6 +233,7 @@
233 233 N: Sangmoon Kim
234 234 E: dogoil@etinsys.com
235 235 D: Support for debris board
  236 +D: Support for KVME080 board
236 237  
237 238 N: Frederick W. Klatt
238 239 E: fred.klatt@windriver.com
... ... @@ -197,6 +197,7 @@
197 197 Sangmoon Kim <dogoil@etinsys.com>
198 198  
199 199 debris MPC8245
  200 + KVME080 MPC8245
200 201  
201 202 Thomas Lange <thomas@corelatus.se>
202 203  
... ... @@ -95,9 +95,9 @@
95 95 LIST_824x=" \
96 96 A3000 barco BMW CPC45 \
97 97 CU824 debris eXalion HIDDEN_DRAGON \
98   - MOUSSE MUSENKI MVBLUE OXC \
99   - PN62 Sandpoint8240 Sandpoint8245 sbc8240 \
100   - SL8245 utx8245 \
  98 + kvme080 MOUSSE MUSENKI MVBLUE \
  99 + OXC PN62 Sandpoint8240 Sandpoint8245 \
  100 + sbc8240 SL8245 utx8245 \
101 101 "
102 102  
103 103 #########################################################################
... ... @@ -1063,6 +1063,9 @@
1063 1063 HIDDEN_DRAGON_config: unconfig
1064 1064 @./mkconfig $(@:_config=) ppc mpc824x hidden_dragon
1065 1065  
  1066 +kvme080_config: unconfig
  1067 + @./mkconfig $(@:_config=) ppc mpc824x kvme080 etin
  1068 +
1066 1069 MOUSSE_config: unconfig
1067 1070 @./mkconfig $(@:_config=) ppc mpc824x mousse
1068 1071  
board/etin/kvme080/Makefile
  1 +#
  2 +# (C) Copyright 2000-2006
  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 multiverse.o
  29 +
  30 +$(LIB): .depend $(OBJS)
  31 + $(AR) crv $@ $(OBJS)
  32 +
  33 +#########################################################################
  34 +
  35 +.depend: Makefile $(OBJS:.o=.c)
  36 + $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
  37 +
  38 +sinclude .depend
  39 +
  40 +#########################################################################
board/etin/kvme080/config.mk
  1 +#
  2 +# (C) Copyright 2005
  3 +# Sangmoon, Etin Systems, dogoil@etinsys.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 +# KVME080 board
  26 +#
  27 +
  28 +TEXT_BASE = 0xFFF00000
  29 +
  30 +PLATFORM_CPPFLAGS += -DTEXT_BASE=$(TEXT_BASE)
board/etin/kvme080/kvme080.c
  1 +/*
  2 + * (C) Copyright 2005
  3 + * Sangmoon Kim, Etin Systems. dogoil@etinsys.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 +#include <common.h>
  25 +#include <mpc824x.h>
  26 +#include <pci.h>
  27 +#include <i2c.h>
  28 +#include <asm/processor.h>
  29 +
  30 +int checkboard(void)
  31 +{
  32 + puts ("Board: KVME080\n");
  33 + return 0;
  34 +}
  35 +
  36 +unsigned long setdram(int m, int row, int col, int bank)
  37 +{
  38 + int i;
  39 + unsigned long start, end;
  40 + uint32_t mccr1;
  41 + uint32_t mear1 = 0, emear1 = 0, msar1 = 0, emsar1 = 0;
  42 + uint32_t mear2 = 0, emear2 = 0, msar2 = 0, emsar2 = 0;
  43 + uint8_t mber = 0;
  44 +
  45 + CONFIG_READ_WORD(MCCR1, mccr1);
  46 + mccr1 &= 0xffff0000;
  47 +
  48 + start = CFG_SDRAM_BASE;
  49 + end = start + (1 << (col + row + 3) ) * bank - 1;
  50 +
  51 + for (i = 0; i < m; i++) {
  52 + mccr1 |= ((row == 13)? 2 : (bank == 4)? 0 : 3) << i * 2;
  53 + if (i < 4) {
  54 + msar1 |= ((start >> 20) & 0xff) << i * 8;
  55 + emsar1 |= ((start >> 28) & 0xff) << i * 8;
  56 + mear1 |= ((end >> 20) & 0xff) << i * 8;
  57 + emear1 |= ((end >> 28) & 0xff) << i * 8;
  58 + } else {
  59 + msar2 |= ((start >> 20) & 0xff) << (i-4) * 8;
  60 + emsar2 |= ((start >> 28) & 0xff) << (i-4) * 8;
  61 + mear2 |= ((end >> 20) & 0xff) << (i-4) * 8;
  62 + emear2 |= ((end >> 28) & 0xff) << (i-4) * 8;
  63 + }
  64 + mber |= 1 << i;
  65 + start += (1 << (col + row + 3) ) * bank;
  66 + end += (1 << (col + row + 3) ) * bank;
  67 + }
  68 + for (; i < 8; i++) {
  69 + if (i < 4) {
  70 + msar1 |= 0xff << i * 8;
  71 + emsar1 |= 0x30 << i * 8;
  72 + mear1 |= 0xff << i * 8;
  73 + emear1 |= 0x30 << i * 8;
  74 + } else {
  75 + msar2 |= 0xff << (i-4) * 8;
  76 + emsar2 |= 0x30 << (i-4) * 8;
  77 + mear2 |= 0xff << (i-4) * 8;
  78 + emear2 |= 0x30 << (i-4) * 8;
  79 + }
  80 + }
  81 +
  82 + CONFIG_WRITE_WORD(MCCR1, mccr1);
  83 + CONFIG_WRITE_WORD(MSAR1, msar1);
  84 + CONFIG_WRITE_WORD(EMSAR1, emsar1);
  85 + CONFIG_WRITE_WORD(MEAR1, mear1);
  86 + CONFIG_WRITE_WORD(EMEAR1, emear1);
  87 + CONFIG_WRITE_WORD(MSAR2, msar2);
  88 + CONFIG_WRITE_WORD(EMSAR2, emsar2);
  89 + CONFIG_WRITE_WORD(MEAR2, mear2);
  90 + CONFIG_WRITE_WORD(EMEAR2, emear2);
  91 + CONFIG_WRITE_BYTE(MBER, mber);
  92 +
  93 + return (1 << (col + row + 3) ) * bank * m;
  94 +}
  95 +
  96 +long int initdram(int board_type)
  97 +{
  98 + unsigned int msr;
  99 + long int size = 0;
  100 +
  101 + msr = mfmsr();
  102 + mtmsr(msr & ~(MSR_IR | MSR_DR));
  103 + mtspr(IBAT2L, CFG_IBAT0L + 0x10000000);
  104 + mtspr(IBAT2U, CFG_IBAT0U + 0x10000000);
  105 + mtspr(DBAT2L, CFG_DBAT0L + 0x10000000);
  106 + mtspr(DBAT2U, CFG_DBAT0U + 0x10000000);
  107 + mtmsr(msr);
  108 +
  109 + if (setdram(2,13,10,4) == get_ram_size(CFG_SDRAM_BASE, 0x20000000))
  110 + size = 0x20000000; /* 512MB */
  111 + else if (setdram(1,13,10,4) == get_ram_size(CFG_SDRAM_BASE, 0x10000000))
  112 + size = 0x10000000; /* 256MB */
  113 + else if (setdram(2,13,9,4) == get_ram_size(CFG_SDRAM_BASE, 0x10000000))
  114 + size = 0x10000000; /* 256MB */
  115 + else if (setdram(1,13,9,4) == get_ram_size(CFG_SDRAM_BASE, 0x08000000))
  116 + size = 0x08000000; /* 128MB */
  117 + else if (setdram(2,12,9,4) == get_ram_size(CFG_SDRAM_BASE, 0x08000000))
  118 + size = 0x08000000; /* 128MB */
  119 + else if (setdram(1,12,9,4) == get_ram_size(CFG_SDRAM_BASE, 0x04000000))
  120 + size = 0x04000000; /* 64MB */
  121 +
  122 + msr = mfmsr();
  123 + mtmsr(msr & ~(MSR_IR | MSR_DR));
  124 + mtspr(IBAT2L, CFG_IBAT2L);
  125 + mtspr(IBAT2U, CFG_IBAT2U);
  126 + mtspr(DBAT2L, CFG_DBAT2L);
  127 + mtspr(DBAT2U, CFG_DBAT2U);
  128 + mtmsr(msr);
  129 +
  130 + return size;
  131 +}
  132 +
  133 +struct pci_controller hose;
  134 +
  135 +void pci_init_board(void)
  136 +{
  137 + pci_mpc824x_init(&hose);
  138 +}
  139 +
  140 +int board_early_init_f(void)
  141 +{
  142 + *(volatile unsigned char *)(0xff080120) = 0xfb;
  143 +
  144 + return 0;
  145 +}
  146 +
  147 +int board_early_init_r(void)
  148 +{
  149 + unsigned int msr;
  150 +
  151 + CONFIG_WRITE_WORD(ERCR1, 0x95ff8000);
  152 + CONFIG_WRITE_WORD(ERCR3, 0x0c00000e);
  153 + CONFIG_WRITE_WORD(ERCR4, 0x0800000e);
  154 +
  155 + msr = mfmsr();
  156 + mtmsr(msr & ~(MSR_IR | MSR_DR));
  157 + mtspr(IBAT1L, 0x70000000 | BATL_PP_10 | BATL_CACHEINHIBIT);
  158 + mtspr(IBAT1U, 0x70000000 | BATU_BL_256M | BATU_VS | BATU_VP);
  159 + mtspr(DBAT1L, 0x70000000 | BATL_PP_10 | BATL_CACHEINHIBIT);
  160 + mtspr(DBAT1U, 0x70000000 | BATU_BL_256M | BATU_VS | BATU_VP);
  161 + mtmsr(msr);
  162 +
  163 + return 0;
  164 +}
  165 +
  166 +extern int multiverse_init(void);
  167 +
  168 +int misc_init_r(void)
  169 +{
  170 + multiverse_init();
  171 + return 0;
  172 +}
  173 +
  174 +void *nvram_read(void *dest, const long src, size_t count)
  175 +{
  176 + volatile uchar *d = (volatile uchar*) dest;
  177 + volatile uchar *s = (volatile uchar*) src;
  178 + while(count--) {
  179 + *d++ = *s++;
  180 + asm volatile("sync");
  181 + }
  182 + return dest;
  183 +}
  184 +
  185 +void nvram_write(long dest, const void *src, size_t count)
  186 +{
  187 + volatile uchar *d = (volatile uchar*)dest;
  188 + volatile uchar *s = (volatile uchar*)src;
  189 + while(count--) {
  190 + *d++ = *s++;
  191 + asm volatile("sync");
  192 + }
  193 +}
board/etin/kvme080/multiverse.c
  1 +/*
  2 + * multiverse.c
  3 + *
  4 + * VME driver for Multiverse
  5 + *
  6 + * Author : Sangmoon Kim
  7 + * dogoil@etinsys.com
  8 + *
  9 + * Copyright 2005 ETIN SYSTEMS Co.,Ltd.
  10 + *
  11 + * This program is free software; you can redistribute it and/or modify it
  12 + * under the terms of the GNU General Public License as published by the
  13 + * Free Software Foundation; either version 2 of the License, or (at your
  14 + * option) any later version.
  15 + */
  16 +
  17 +#include <common.h>
  18 +#include <asm/io.h>
  19 +#include <pci.h>
  20 +
  21 +#include "multiverse.h"
  22 +
  23 +static unsigned long vme_asi_addr;
  24 +static unsigned long vme_iack_addr;
  25 +static unsigned long pci_reg_addr;
  26 +static unsigned long vme_reg_addr;
  27 +
  28 +int multiv_reset(unsigned long base)
  29 +{
  30 + writeb(0x09, base + VME_SLAVE32_AM);
  31 + writeb(0x39, base + VME_SLAVE24_AM);
  32 + writeb(0x29, base + VME_SLAVE16_AM);
  33 + writeb(0x2f, base + VME_SLAVE_REG_AM);
  34 + writeb((VME_A32_SLV_BUS >> 24) & 0xff, base + VME_SLAVE32_A);
  35 + writeb((VME_A24_SLV_BUS >> 16) & 0xff, base + VME_SLAVE24_A);
  36 + writeb((VME_A16_SLV_BUS >> 8 ) & 0xff, base + VME_SLAVE16_A);
  37 +#ifdef A32_SLV_WINDOW
  38 + if (readb(base + VME_STATUS) & VME_STATUS_SYSCON) {
  39 + writeb(((~(VME_A32_SLV_SIZE-1)) >> 24) & 0xff,
  40 + base + VME_SLAVE32_MASK);
  41 + writeb(0x01, base + VME_SLAVE32_EN);
  42 + } else {
  43 + writeb(0xff, base + VME_SLAVE32_MASK);
  44 + writeb(0x00, base + VME_SLAVE32_EN);
  45 + }
  46 +#else
  47 + writeb(0xff, base + VME_SLAVE32_MASK);
  48 + writeb(0x00, base + VME_SLAVE32_EN);
  49 +#endif
  50 +#ifdef A24_SLV_WINDOW
  51 + if (readb(base + VME_STATUS) & VME_STATUS_SYSCON) {
  52 + writeb(((~(VME_A24_SLV_SIZE-1)) >> 16) & 0xff,
  53 + base + VME_SLAVE24_MASK);
  54 + writeb(0x01, base + VME_SLAVE24_EN);
  55 + } else {
  56 + writeb(0xff, base + VME_SLAVE24_MASK);
  57 + writeb(0x00, base + VME_SLAVE24_EN);
  58 + }
  59 +#else
  60 + writeb(0xff, base + VME_SLAVE24_MASK);
  61 + writeb(0x00, base + VME_SLAVE24_EN);
  62 +#endif
  63 +#ifdef A16_SLV_WINDOW
  64 + if (readb(base + VME_STATUS) & VME_STATUS_SYSCON) {
  65 + writeb(((~(VME_A16_SLV_SIZE-1)) >> 8) & 0xff,
  66 + base + VME_SLAVE16_MASK);
  67 + writeb(0x01, base + VME_SLAVE16_EN);
  68 + } else {
  69 + writeb(0xff, base + VME_SLAVE16_MASK);
  70 + writeb(0x00, base + VME_SLAVE16_EN);
  71 + }
  72 +#else
  73 + writeb(0xff, base + VME_SLAVE16_MASK);
  74 + writeb(0x00, base + VME_SLAVE16_EN);
  75 +#endif
  76 +#ifdef REG_SLV_WINDOW
  77 + if (readb(base + VME_STATUS) & VME_STATUS_SYSCON) {
  78 + writeb(((~(VME_REG_SLV_SIZE-1)) >> 16) & 0xff,
  79 + base + VME_SLAVE_REG_MASK);
  80 + writeb(0x01, base + VME_SLAVE_REG_EN);
  81 + } else {
  82 + writeb(0xf8, base + VME_SLAVE_REG_MASK);
  83 + }
  84 +#else
  85 + writeb(0xf8, base + VME_SLAVE_REG_MASK);
  86 +#endif
  87 + writeb(0x09, base + VME_MASTER32_AM);
  88 + writeb(0x39, base + VME_MASTER24_AM);
  89 + writeb(0x29, base + VME_MASTER16_AM);
  90 + writeb(0x2f, base + VME_MASTER_REG_AM);
  91 + writel(0x00000000, base + VME_RMW_ADRS);
  92 + writeb(0x00, base + VME_IRQ);
  93 + writeb(0x00, base + VME_INT_EN);
  94 + writel(0x00000000, base + VME_IRQ1_REG);
  95 + writel(0x00000000, base + VME_IRQ2_REG);
  96 + writel(0x00000000, base + VME_IRQ3_REG);
  97 + writel(0x00000000, base + VME_IRQ4_REG);
  98 + writel(0x00000000, base + VME_IRQ5_REG);
  99 + writel(0x00000000, base + VME_IRQ6_REG);
  100 + writel(0x00000000, base + VME_IRQ7_REG);
  101 + return 0;
  102 +}
  103 +
  104 +void multiv_auto_slot_id(unsigned long base)
  105 +{
  106 + unsigned int vector;
  107 + int slot_id = 1;
  108 + if (readb(base + VME_CTRL) & VME_CTRL_SYSFAIL) {
  109 + *(volatile unsigned int*)(base + VME_IRQ2_REG) = 0xfe;
  110 + writeb(readb(base + VME_IRQ) | 0x04, base + VME_IRQ);
  111 + writeb(readb(base + VME_CTRL) & ~VME_CTRL_SYSFAIL,
  112 + base + VME_CTRL);
  113 + while (readb(base + VME_STATUS) & VME_STATUS_SYSFAIL);
  114 + if (readb(base + VME_STATUS) & VME_STATUS_SYSCON) {
  115 + while (readb(base + VME_INT) & 0x04) {
  116 + vector = *(volatile unsigned int*)
  117 + (vme_iack_addr + VME_IACK2);
  118 + *(unsigned char*)(vme_asi_addr + 0x7ffff)
  119 + = (slot_id << 3) & 0xff;
  120 + slot_id ++;
  121 + if (slot_id > 31)
  122 + break;
  123 + }
  124 + }
  125 + }
  126 +}
  127 +
  128 +int multiverse_init(void)
  129 +{
  130 + int i;
  131 + pci_dev_t pdev;
  132 + unsigned int bar[6];
  133 +
  134 + pdev = pci_find_device(0x1895, 0x0001, 0);
  135 +
  136 + if (pdev == 0)
  137 + return -1;
  138 +
  139 + for (i = 0; i < 6; i++)
  140 + pci_read_config_dword (pdev,
  141 + PCI_BASE_ADDRESS_0 + i * 4, &bar[i]);
  142 +
  143 + pci_reg_addr = bar[0];
  144 + vme_reg_addr = bar[1] + 0x00F00000;
  145 + vme_iack_addr = bar[1] + 0x00200000;
  146 + vme_asi_addr = bar[3];
  147 +
  148 + pci_write_config_dword (pdev, PCI_COMMAND,
  149 + PCI_COMMAND_IO | PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER);
  150 +
  151 + writel(0xFF000000, pci_reg_addr + P_TA1);
  152 + writel(0x04, pci_reg_addr + P_IMG_CTRL1);
  153 + writel(0xf0000000, pci_reg_addr + P_TA2);
  154 + writel(0x04, pci_reg_addr + P_IMG_CTRL2);
  155 + writel(0xF1000000, pci_reg_addr + P_TA3);
  156 + writel(0x04, pci_reg_addr + P_IMG_CTRL3);
  157 + writel(VME_A32_MSTR_BUS, pci_reg_addr + P_TA5);
  158 + writel(~(VME_A32_MSTR_SIZE-1), pci_reg_addr + P_AM5);
  159 + writel(0x04, pci_reg_addr + P_IMG_CTRL5);
  160 +
  161 + writel(VME_A32_SLV_BUS, pci_reg_addr + W_BA1);
  162 + writel(~(VME_A32_SLV_SIZE-1), pci_reg_addr + W_AM1);
  163 + writel(VME_A32_SLV_LOCAL, pci_reg_addr + W_TA1);
  164 + writel(0x04, pci_reg_addr + W_IMG_CTRL1);
  165 +
  166 + writel(0xF0000000, pci_reg_addr + W_BA2);
  167 + writel(0xFF000000, pci_reg_addr + W_AM2);
  168 + writel(VME_A24_SLV_LOCAL, pci_reg_addr + W_TA2);
  169 + writel(0x04, pci_reg_addr + W_IMG_CTRL2);
  170 +
  171 + writel(0xFF000000, pci_reg_addr + W_BA3);
  172 + writel(0xFF000000, pci_reg_addr + W_AM3);
  173 + writel(VME_A16_SLV_LOCAL, pci_reg_addr + W_TA3);
  174 + writel(0x04, pci_reg_addr + W_IMG_CTRL3);
  175 +
  176 + writel(0x00000001, pci_reg_addr + W_ERR_CS);
  177 + writel(0x00000001, pci_reg_addr + P_ERR_CS);
  178 +
  179 + multiv_reset(vme_reg_addr);
  180 + writeb(readb(vme_reg_addr + VME_CTRL) | VME_CTRL_SHORT_D,
  181 + vme_reg_addr + VME_CTRL);
  182 +
  183 + multiv_auto_slot_id(vme_reg_addr);
  184 +
  185 + return 0;
  186 +}
board/etin/kvme080/multiverse.h
  1 +/*
  2 + * multiverse.h
  3 + *
  4 + * VME driver for Multiverse
  5 + *
  6 + * Author : Sangmoon Kim
  7 + * dogoil@etinsys.com
  8 + *
  9 + * Copyright 2005 ETIN SYSTEMS Co.,Ltd.
  10 + *
  11 + * This program is free software; you can redistribute it and/or modify it
  12 + * under the terms of the GNU General Public License as published by the
  13 + * Free Software Foundation; either version 2 of the License, or (at your
  14 + * option) any later version.
  15 + */
  16 +
  17 +#ifndef __MULTIVERSE_H__
  18 +#define __MULTIVERSE_H__
  19 +
  20 +#define VME_A32_MSTR_BUS 0x90000000
  21 +#define VME_A32_MSTR_SIZE 0x01000000
  22 +
  23 +#define VME_A32_SLV_SIZE 0x01000000
  24 +
  25 +#define VME_A32_SLV_BUS 0x90000000
  26 +#define VME_A24_SLV_BUS 0x00000000
  27 +#define VME_A16_SLV_BUS 0x00000000
  28 +
  29 +#define VME_A32_SLV_LOCAL 0x00000000
  30 +#define VME_A24_SLV_LOCAL 0x00000000
  31 +#define VME_A16_SLV_LOCAL 0x00000000
  32 +
  33 +#define A32_SLV_WINDOW
  34 +#undef A24_SLV_WINDOW
  35 +#undef A16_SLV_WINDOW
  36 +#undef REG_SLV_WINDOW
  37 +
  38 +/* PCI Registers */
  39 +
  40 +#define P_IMG_CTRL0 0x100
  41 +#define P_BA0 0x104
  42 +#define P_AM0 0x108
  43 +#define P_TA0 0x10C
  44 +#define P_IMG_CTRL1 0x110
  45 +#define P_BA1 0x114
  46 +#define P_AM1 0x118
  47 +#define P_TA1 0x11C
  48 +#define P_IMG_CTRL2 0x120
  49 +#define P_BA2 0x124
  50 +#define P_AM2 0x128
  51 +#define P_TA2 0x12C
  52 +#define P_IMG_CTRL3 0x130
  53 +#define P_BA3 0x134
  54 +#define P_AM3 0x138
  55 +#define P_TA3 0x13C
  56 +#define P_IMG_CTRL4 0x140
  57 +#define P_BA4 0x144
  58 +#define P_AM4 0x148
  59 +#define P_TA4 0x14C
  60 +#define P_IMG_CTRL5 0x150
  61 +#define P_BA5 0x154
  62 +#define P_AM5 0x158
  63 +#define P_TA5 0x15C
  64 +#define P_ERR_CS 0x160
  65 +#define P_ERR_ADDR 0x164
  66 +#define P_ERR_DATA 0x168
  67 +
  68 +#define WB_CONF_SPC_BAR 0x180
  69 +#define W_IMG_CTRL1 0x184
  70 +#define W_BA1 0x188
  71 +#define W_AM1 0x18C
  72 +#define W_TA1 0x190
  73 +#define W_IMG_CTRL2 0x194
  74 +#define W_BA2 0x198
  75 +#define W_AM2 0x19C
  76 +#define W_TA2 0x1A0
  77 +#define W_IMG_CTRL3 0x1A4
  78 +#define W_BA3 0x1A8
  79 +#define W_AM3 0x1AC
  80 +#define W_TA3 0x1B0
  81 +#define W_IMG_CTRL4 0x1B4
  82 +#define W_BA4 0x1B8
  83 +#define W_AM4 0x1BC
  84 +#define W_TA4 0x1C0
  85 +#define W_IMG_CTRL5 0x1C4
  86 +#define W_BA5 0x1C8
  87 +#define W_AM5 0x1CC
  88 +#define W_TA5 0x1D0
  89 +#define W_ERR_CS 0x1D4
  90 +#define W_ERR_ADDR 0x1D8
  91 +#define W_ERR_DATA 0x1DC
  92 +#define CNF_ADDR 0x1E0
  93 +#define CNF_DATA 0x1E4
  94 +#define INT_ACK 0x1E8
  95 +#define ICR 0x1EC
  96 +#define ISR 0x1F0
  97 +
  98 +/* VME registers */
  99 +
  100 +#define VME_SLAVE32_AM 0x03
  101 +#define VME_SLAVE24_AM 0x02
  102 +#define VME_SLAVE16_AM 0x01
  103 +#define VME_SLAVE_REG_AM 0x00
  104 +#define VME_SLAVE32_A 0x07
  105 +#define VME_SLAVE24_A 0x06
  106 +#define VME_SLAVE16_A 0x05
  107 +#define VME_SLAVE_REG_A 0x04
  108 +#define VME_SLAVE32_MASK 0x0B
  109 +#define VME_SLAVE24_MASK 0x0A
  110 +#define VME_SLAVE16_MASK 0x09
  111 +#define VME_SLAVE_REG_MASK 0x08
  112 +#define VME_SLAVE32_EN 0x0F
  113 +#define VME_SLAVE24_EN 0x0E
  114 +#define VME_SLAVE16_EN 0x0D
  115 +#define VME_SLAVE_REG_EN 0x0C
  116 +#define VME_MASTER32_AM 0x13
  117 +#define VME_MASTER24_AM 0x12
  118 +#define VME_MASTER16_AM 0x11
  119 +#define VME_MASTER_REG_AM 0x10
  120 +#define VME_RMW_ADRS 0x14
  121 +#define VME_MBOX 0x18
  122 +#define VME_STATUS 0x1E
  123 +#define VME_CTRL 0x1C
  124 +#define VME_IRQ 0x20
  125 +#define VME_INT_EN 0x21
  126 +#define VME_INT 0x22
  127 +#define VME_IRQ1_REG 0x24
  128 +#define VME_IRQ2_REG 0x28
  129 +#define VME_IRQ3_REG 0x2C
  130 +#define VME_IRQ4_REG 0x30
  131 +#define VME_IRQ5_REG 0x34
  132 +#define VME_IRQ6_REG 0x38
  133 +#define VME_IRQ7_REG 0x3C
  134 +
  135 +/* VME control register */
  136 +
  137 +#define VME_CTRL_BRDRST 0x01
  138 +#define VME_CTRL_SYSRST 0x02
  139 +#define VME_CTRL_RMW 0x04
  140 +#define VME_CTRL_SHORT_D 0x08
  141 +#define VME_CTRL_SYSFAIL 0x10
  142 +#define VME_CTRL_VOWN 0x20
  143 +#define VME_CTRL_A16_REG_MODE 0x40
  144 +
  145 +/* VME status register */
  146 +
  147 +#define VME_STATUS_SYSCON 0x01
  148 +#define VME_STATUS_SYSFAIL 0x02
  149 +#define VME_STATUS_ACFAIL 0x04
  150 +#define VME_STATUS_SYSRST 0x08
  151 +#define VME_STATUS_VOWN 0x10
  152 +
  153 +/* Interrupt types */
  154 +
  155 +#define LVL1 0x0002
  156 +#define LVL2 0x0004
  157 +#define LVL3 0x0008
  158 +#define LVL4 0x0010
  159 +#define LVL5 0x0020
  160 +#define LVL6 0x0040
  161 +#define LVL7 0x0080
  162 +#define MULTIVERSE_INTI_INT 0x0100
  163 +#define MULTIVERSE_WB_INT 0x0200
  164 +#define MULTIVERSE_PCI_INT 0x0400
  165 +
  166 +/* interrupt acknowledge */
  167 +
  168 +#define VME_IACK1 0x04
  169 +#define VME_IACK2 0x08
  170 +#define VME_IACK3 0x0c
  171 +#define VME_IACK4 0x10
  172 +#define VME_IACK5 0x14
  173 +#define VME_IACK6 0x18
  174 +#define VME_IACK7 0x1c
  175 +
  176 +#endif /* __MULTIVERSE_H__ */
board/etin/kvme080/u-boot.lds
  1 +/*
  2 + * (C) Copyright 2001-2006
  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/mpc824x/start.o (.text)
  57 + lib_ppc/board.o (.text)
  58 + lib_ppc/ppcstring.o (.text)
  59 +
  60 + . = DEFINED(env_offset) ? env_offset : .;
  61 + common/environment.o (.text)
  62 +
  63 + *(.text)
  64 +
  65 + *(.fixup)
  66 + *(.got1)
  67 + . = ALIGN(16);
  68 + *(.rodata)
  69 + *(.rodata1)
  70 + }
  71 + .fini : { *(.fini) } =0
  72 + .ctors : { *(.ctors) }
  73 + .dtors : { *(.dtors) }
  74 +
  75 + /* Read-write section, merged into data segment: */
  76 + . = (. + 0x0FFF) & 0xFFFFF000;
  77 + _erotext = .;
  78 + PROVIDE (erotext = .);
  79 + .reloc :
  80 + {
  81 + *(.got)
  82 + _GOT2_TABLE_ = .;
  83 + *(.got2)
  84 + _FIXUP_TABLE_ = .;
  85 + *(.fixup)
  86 + }
  87 + __got2_entries = (_FIXUP_TABLE_ - _GOT2_TABLE_) >> 2;
  88 + __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
  89 +
  90 + .data :
  91 + {
  92 + *(.data)
  93 + *(.data1)
  94 + *(.sdata)
  95 + *(.sdata2)
  96 + *(.dynamic)
  97 + CONSTRUCTORS
  98 + }
  99 + _edata = .;
  100 + PROVIDE (edata = .);
  101 +
  102 + __u_boot_cmd_start = .;
  103 + .u_boot_cmd : { *(.u_boot_cmd) }
  104 + __u_boot_cmd_end = .;
  105 +
  106 + __start___ex_table = .;
  107 + __ex_table : { *(__ex_table) }
  108 + __stop___ex_table = .;
  109 +
  110 + . = ALIGN(4096);
  111 + __init_begin = .;
  112 + .text.init : { *(.text.init) }
  113 + .data.init : { *(.data.init) }
  114 + . = ALIGN(4096);
  115 + __init_end = .;
  116 +
  117 + __bss_start = .;
  118 + .bss :
  119 + {
  120 + *(.sbss) *(.scommon)
  121 + *(.dynbss)
  122 + *(.bss)
  123 + *(COMMON)
  124 + }
  125 +
  126 + _end = . ;
  127 + PROVIDE (end = .);
  128 +}
include/configs/kvme080.h
  1 +/*
  2 + * (C) Copyright 2005
  3 + * Sangmoon Kim, dogoil@etinsys.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 +#ifndef __CONFIG_H
  25 +#define __CONFIG_H
  26 +
  27 +#define CONFIG_MPC824X 1
  28 +#define CONFIG_MPC8245 1
  29 +#define CONFIG_KVME080 1
  30 +
  31 +#define CONFIG_CONS_INDEX 1
  32 +
  33 +#define CONFIG_BAUDRATE 115200
  34 +
  35 +#define CONFIG_BOOTDELAY 5
  36 +
  37 +#define CONFIG_IPADDR 192.168.0.2
  38 +#define CONFIG_NETMASK 255.255.255.0
  39 +#define CONFIG_SERVERIP 192.168.0.1
  40 +
  41 +#define CONFIG_BOOTARGS \
  42 + "console=ttyS0,115200 " \
  43 + "root=/dev/nfs rw nfsroot=192.168.0.1:/opt/eldk/ppc_82xx " \
  44 + "ip=192.168.0.2:192.168.0.1:192.168.0.1:255.255.255.0:" \
  45 + "kvme080:eth0:none " \
  46 + "mtdparts=phys_mapped_flash:12m(root),-(kernel)"
  47 +
  48 +#define CONFIG_BOOTCOMMAND \
  49 + "tftp 800000 kvme080/uImage; " \
  50 + "bootm 800000"
  51 +
  52 +#define CONFIG_LOADADDR 800000
  53 +
  54 +#define CONFIG_BOARD_EARLY_INIT_F
  55 +#define CONFIG_BOARD_EARLY_INIT_R
  56 +#define CONFIG_MISC_INIT_R
  57 +
  58 +#define CONFIG_LOADS_ECHO 1
  59 +#undef CFG_LOADS_BAUD_CHANGE
  60 +
  61 +#undef CONFIG_WATCHDOG
  62 +
  63 +#define CONFIG_BOOTP_MASK (CONFIG_BOOTP_DEFAULT | CONFIG_BOOTP_BOOTFILESIZE)
  64 +
  65 +#define CONFIG_MAC_PARTITION
  66 +#define CONFIG_DOS_PARTITION
  67 +
  68 +#define CONFIG_RTC_DS164x
  69 +
  70 +#define CONFIG_COMMANDS ( CONFIG_CMD_DFL | \
  71 + CFG_CMD_ASKENV | \
  72 + CFG_CMD_CACHE | \
  73 + CFG_CMD_DATE | \
  74 + CFG_CMD_DHCP | \
  75 + CFG_CMD_DIAG | \
  76 + CFG_CMD_EEPROM | \
  77 + CFG_CMD_ELF | \
  78 + CFG_CMD_I2C | \
  79 + CFG_CMD_JFFS2 | \
  80 + CFG_CMD_NFS | \
  81 + CFG_CMD_PCI | \
  82 + CFG_CMD_PING | \
  83 + CFG_CMD_SDRAM | \
  84 + CFG_CMD_SNTP)
  85 +
  86 +#define CONFIG_NETCONSOLE
  87 +
  88 +#include <cmd_confdefs.h>
  89 +
  90 +#define CFG_LONGHELP
  91 +#define CFG_PROMPT "=> "
  92 +#define CFG_CBSIZE 256
  93 +#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16)
  94 +#define CFG_MAXARGS 16
  95 +#define CFG_BARGSIZE CFG_CBSIZE
  96 +
  97 +#define CFG_MEMTEST_START 0x00400000
  98 +#define CFG_MEMTEST_END 0x07C00000
  99 +
  100 +#define CFG_LOAD_ADDR 0x00100000
  101 +#define CFG_HZ 1000
  102 +
  103 +#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
  104 +
  105 +#define CFG_INIT_RAM_ADDR 0x40000000
  106 +#define CFG_INIT_RAM_END 0x1000
  107 +#define CFG_GBL_DATA_SIZE 128
  108 +#define CFG_GBL_DATA_OFFSET (CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
  109 +
  110 +#define CFG_SDRAM_BASE 0x00000000
  111 +#define CFG_FLASH_BASE 0x7C000000
  112 +#define CFG_EUMB_ADDR 0xFC000000
  113 +#define CFG_NVRAM_BASE_ADDR 0xFF000000
  114 +#define CFG_NS16550_COM1 0xFF080000
  115 +#define CFG_NS16550_COM2 0xFF080010
  116 +#define CFG_NS16550_COM3 0xFF080020
  117 +#define CFG_NS16550_COM4 0xFF080030
  118 +#define CFG_RESET_ADDRESS 0xFFF00100
  119 +
  120 +#define CFG_MAX_RAM_SIZE 0x20000000
  121 +#define CFG_FLASH_SIZE (16 * 1024 * 1024)
  122 +#define CFG_NVRAM_SIZE 0x7FFF8
  123 +
  124 +#define CONFIG_VERY_BIG_RAM
  125 +
  126 +#define CFG_MONITOR_LEN 0x00040000
  127 +#define CFG_MONITOR_BASE TEXT_BASE
  128 +#define CFG_MALLOC_LEN (512 << 10)
  129 +
  130 +#define CFG_BOOTMAPSZ (8 << 20)
  131 +
  132 +#define CFG_FLASH_CFI
  133 +#define CFG_FLASH_CFI_DRIVER
  134 +#define CFG_FLASH_USE_BUFFER_WRITE
  135 +#define CFG_FLASH_PROTECTION
  136 +#define CFG_FLASH_EMPTY_INFO
  137 +#define CFG_FLASH_PROTECT_CLEAR
  138 +
  139 +#define CFG_MAX_FLASH_BANKS 1
  140 +#define CFG_MAX_FLASH_SECT 256
  141 +
  142 +#define CFG_FLASH_ERASE_TOUT 120000
  143 +#define CFG_FLASH_WRITE_TOUT 500
  144 +
  145 +#define CFG_JFFS2_FIRST_BANK 0
  146 +#define CFG_JFFS2_NUM_BANKS 1
  147 +
  148 +#define CFG_ENV_IS_IN_NVRAM 1
  149 +#define CONFIG_ENV_OVERWRITE 1
  150 +#define CFG_NVRAM_ACCESS_ROUTINE
  151 +#define CFG_ENV_ADDR CFG_NVRAM_BASE_ADDR
  152 +#define CFG_ENV_SIZE 0x400
  153 +#define CFG_ENV_OFFSET 0
  154 +
  155 +#define CFG_NS16550
  156 +#define CFG_NS16550_SERIAL
  157 +#define CFG_NS16550_REG_SIZE 1
  158 +#define CFG_NS16550_CLK 14745600
  159 +
  160 +#define CONFIG_PCI
  161 +#define CONFIG_PCI_PNP
  162 +
  163 +#define CONFIG_NET_MULTI
  164 +#define CONFIG_EEPRO100
  165 +#define CONFIG_EEPRO100_SROM_WRITE
  166 +
  167 +#define CFG_RX_ETH_BUFFER 8
  168 +
  169 +#define CONFIG_HARD_I2C 1
  170 +#define CFG_I2C_SPEED 400000
  171 +#define CFG_I2C_SLAVE 0x7F
  172 +
  173 +#define CFG_I2C_EEPROM_ADDR 0x57
  174 +#define CFG_I2C_EEPROM_ADDR_LEN 1
  175 +#define CFG_EEPROM_PAGE_WRITE_BITS 3
  176 +#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 10
  177 +
  178 +#define CONFIG_SYS_CLK_FREQ 33333333
  179 +
  180 +#define CFG_CACHELINE_SIZE 32
  181 +#if CONFIG_COMMANDS & CFG_CMD_KGDB
  182 +# define CFG_CACHELINE_SHIFT 5
  183 +#endif
  184 +
  185 +#define CFG_DLL_EXTEND 0x00
  186 +#define CFG_PCI_HOLD_DEL 0x20
  187 +
  188 +#define CFG_ROMNAL 15
  189 +#define CFG_ROMFAL 31
  190 +
  191 +#define CFG_REFINT 430
  192 +
  193 +#define CFG_DBUS_SIZE2 1
  194 +
  195 +#define CFG_BSTOPRE 121
  196 +#define CFG_REFREC 8
  197 +#define CFG_RDLAT 4
  198 +#define CFG_PRETOACT 3
  199 +#define CFG_ACTTOPRE 5
  200 +#define CFG_ACTORW 3
  201 +#define CFG_SDMODE_CAS_LAT 3
  202 +#define CFG_SDMODE_WRAP 0
  203 +
  204 +#define CFG_REGISTERD_TYPE_BUFFER 1
  205 +#define CFG_EXTROM 1
  206 +#define CFG_REGDIMM 0
  207 +
  208 +#define CFG_BANK0_START 0x00000000
  209 +#define CFG_BANK0_END (0x4000000 - 1)
  210 +#define CFG_BANK0_ENABLE 1
  211 +#define CFG_BANK1_START 0x04000000
  212 +#define CFG_BANK1_END (0x8000000 - 1)
  213 +#define CFG_BANK1_ENABLE 1
  214 +#define CFG_BANK2_START 0x3ff00000
  215 +#define CFG_BANK2_END 0x3fffffff
  216 +#define CFG_BANK2_ENABLE 0
  217 +#define CFG_BANK3_START 0x3ff00000
  218 +#define CFG_BANK3_END 0x3fffffff
  219 +#define CFG_BANK3_ENABLE 0
  220 +#define CFG_BANK4_START 0x00000000
  221 +#define CFG_BANK4_END 0x00000000
  222 +#define CFG_BANK4_ENABLE 0
  223 +#define CFG_BANK5_START 0x00000000
  224 +#define CFG_BANK5_END 0x00000000
  225 +#define CFG_BANK5_ENABLE 0
  226 +#define CFG_BANK6_START 0x00000000
  227 +#define CFG_BANK6_END 0x00000000
  228 +#define CFG_BANK6_ENABLE 0
  229 +#define CFG_BANK7_START 0x00000000
  230 +#define CFG_BANK7_END 0x00000000
  231 +#define CFG_BANK7_ENABLE 0
  232 +
  233 +#define CFG_BANK_ENABLE 0x03
  234 +
  235 +#define CFG_ODCR 0x75
  236 +#define CFG_PGMAX 0x32
  237 +
  238 +#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_10 | BATL_MEMCOHERENCE)
  239 +#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_256M | BATU_VS | BATU_VP)
  240 +
  241 +#define CFG_IBAT1L (CFG_INIT_RAM_ADDR | BATL_PP_10 | BATL_MEMCOHERENCE)
  242 +#define CFG_IBAT1U (CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
  243 +
  244 +#define CFG_IBAT2L (0x80000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
  245 +#define CFG_IBAT2U (0x80000000 | BATU_BL_256M | BATU_VS | BATU_VP)
  246 +
  247 +#define CFG_IBAT3L (0xF0000000 | BATL_PP_10 | BATL_CACHEINHIBIT)
  248 +#define CFG_IBAT3U (0xF0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
  249 +
  250 +#define CFG_DBAT0L CFG_IBAT0L
  251 +#define CFG_DBAT0U CFG_IBAT0U
  252 +#define CFG_DBAT1L CFG_IBAT1L
  253 +#define CFG_DBAT1U CFG_IBAT1U
  254 +#define CFG_DBAT2L CFG_IBAT2L
  255 +#define CFG_DBAT2U CFG_IBAT2U
  256 +#define CFG_DBAT3L CFG_IBAT3L
  257 +#define CFG_DBAT3U CFG_IBAT3U
  258 +
  259 +#define BOOTFLAG_COLD 0x01
  260 +#define BOOTFLAG_WARM 0x02
  261 +
  262 +#endif /* __CONFIG_H */