[U-Boot-Users] PATCH - Gateworks Avila (Xscale IXP42x) support

Ranjit Deshpande ranjit at kenati.com
Tue Jul 24 19:54:03 CEST 2007


I've tried to search the mailing list but was unable to do so. I am assuming
that this board has no support at the momemt.

What is Avila ?
===============
This is an affordable Xscale development platform as well as a usable,
off-the-shelf Wireless AP/Router platform.

This platform is based on the IXDP425 but has some minor differences most of
which are contained in the config file. This board has its own mach-type
defined by Linux so I've added that to board/ixdp425/ixdp425.c and also put
in the board information string.

More information on these boards can be found here:

http://www.gateworks.com/avila_processors.htm

Which tree does this apply to ?
===============================
IXP custodian tree: u-boot-ixp.git

What is supported/tested with this patch ?
==========================================
* Boot from flash (JFFS2 or raw image)
* NPE Ethernet (you will need NPE microcode from Intel).

I am working on a patch for supporting the CF IDE interface on this board
which I will submit separately.

Signed-off-by: Ranjit Deshpande <ranjit at kenati.com>
===========================================================================
diff -purN u-boot/u-boot-ixp.git/board/ixdp425/ixdp425.c
u-boot.avila/u-boot-ixp.git/board/ixdp425/ixdp425.c
--- u-boot/u-boot-ixp.git/board/ixdp425/ixdp425.c    2007-06-06
07:26:56.000000000 -0700
+++ u-boot.avila/u-boot-ixp.git/board/ixdp425/ixdp425.c    2007-07-23
15:31:55.438517399 -0700
@@ -45,9 +45,14 @@ int board_post_init (void)
 
 int board_init (void)
 {
+#ifdef CONFIG_AVILA
+    /* arch number of Gateworks Avila */
+    gd->bd->bi_arch_number = MACH_TYPE_AVILA;
+#endif
+#ifdef CONFIG_IXDP425
     /* arch number of IXDP */
     gd->bd->bi_arch_number = MACH_TYPE_IXDP425;
-
+#endif
     /* adress of boot parameters */
     gd->bd->bi_boot_params = 0x00000100;
 
@@ -91,9 +96,29 @@ int checkboard(void)
 
 #ifdef CONFIG_IXDPG425
     puts("Board: IXDPG425 - Intel Network Gateway Reference Platform");
-#else
+#endif
+#ifdef CONFIG_IXDP425
     puts("Board: IXDP425 - Intel Development Platform");
 #endif
+#ifdef CONFIG_AVILA
+    puts("Board: Gateworks Avila "
+#ifdef CONFIG_AVILA_2342
+    "2342"
+#endif
+#ifdef CONFIG_AVILA_2345
+    "2345"
+#endif
+#ifdef CONFIG_AVILA_2347
+    "2347"
+#endif
+#ifdef CONFIG_AVILA_2348_2
+    "2348-2"
+#endif
+#ifdef CONFIG_AVILA_2348_4
+    "2348-4"
+#endif
+    );
+#endif
 
     if (s != NULL) {
         puts(", serial# ");
diff -purN u-boot/u-boot-ixp.git/include/configs/avila.h
u-boot.avila/u-boot-ixp.git/include/configs/avila.h
--- u-boot/u-boot-ixp.git/include/configs/avila.h    1969-12-31
16:00:00.000000000 -0800
+++ u-boot.avila/u-boot-ixp.git/include/configs/avila.h    2007-07-23
19:11:54.368379254 -0700
@@ -0,0 +1,223 @@
+/*
+ * (C) Copyright 2003
+ * Kyle Harris, Nexus Technologies, Inc. kharris at nexus-tech.net
+ *
+ * (C) Copyright 2007
+ * Ranjit Deshpande, Kenati Technologies, Inc. <ranjit at kenati.com>
+ *
+ * Configuation settings for the Gateworks Avila board.
+ *
+ * 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
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+#define CONFIG_IXP425           1       /* This is an IXP425 CPU    */
+#define CONFIG_AVILA        1       /* on a Gateworks Avila board */
+
+/* Define the sub-type for the Avila platform.  */
+#undef CONFIG_AVILA_2342    1
+#undef CONFIG_AVILA_2345
+#undef CONFIG_AVILA_2347
+#undef CONFIG_AVILA_2348_2
+#define CONFIG_AVILA_2348_4
+
+#define CONFIG_DISPLAY_CPUINFO    1    /* display cpu info (and speed)
*/
+#define CONFIG_DISPLAY_BOARDINFO 1    /* display board info        */
+
+/***************************************************************
+ * U-boot generic defines start here.
+ ***************************************************************/
+
+#undef CONFIG_USE_IRQ                   /* we don't need IRQ/FIQ stuff */
+
+/*
+ * Size of malloc() pool
+ */
+#define CFG_MALLOC_LEN      (CFG_ENV_SIZE + 128*1024)
+#define CFG_GBL_DATA_SIZE    128    /* size in bytes reserved for initial
data */
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+
+#define CONFIG_BAUDRATE         115200
+
+#define CONFIG_COMMANDS         (CONFIG_CMD_DFL        | \
+                 CFG_CMD_PCI        | \
+                 CFG_CMD_JFFS2)        & \
+                ~(CFG_CMD_ITEST        | \
+                  CFG_CMD_NFS        | \
+                  CFG_CMD_AUTOSCRIPT)
+
+#define CONFIG_PCI
+#define CONFIG_NET_MULTI
+#define CONFIG_EEPRO100
+/* This must be included AFTER the definition of CONFIG_COMMANDS (if any)
*/
+/* These are u-boot generic parameters */
+#include <cmd_confdefs.h>
+
+#define CONFIG_BOOTDELAY        3
+#define CONFIG_ETHADDR          08:00:3e:26:0a:5b
+#define CONFIG_NETMASK          255.255.255.0
+#define CONFIG_IPADDR           192.168.0.21
+#define CONFIG_SERVERIP         192.168.0.148
+#define CONFIG_BOOTCOMMAND      "bootm 50040000"
+#define CONFIG_BOOTARGS         "root=/dev/mtdblock2 rootfstype=cramfs
console=ttyS0,115200"
+#define CONFIG_CMDLINE_TAG
+
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#define CONFIG_KGDB_BAUDRATE    230400          /* speed to run kgdb serial
port */
+#define CONFIG_KGDB_SER_INDEX   2               /* which serial port to use
*/
+#endif
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP                            /* undef to save memory
*/
+#define CFG_PROMPT              "=> "   /* Monitor Command Prompt       */
+#define CFG_CBSIZE              256             /* Console I/O Buffer Size
*/
+#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size
*/
+#define CFG_MAXARGS             16              /* max number of command
args   */
+#define CFG_BARGSIZE            CFG_CBSIZE      /* Boot Argument Buffer
Size    */
+
+#define CFG_MEMTEST_START       0x00400000      /* memtest works on     */
+#define CFG_MEMTEST_END         0x00800000      /* 4 ... 8 MB in DRAM   */
+
+#undef  CFG_CLKS_IN_HZ          /* everything, incl board info, in Hz */
+
+#define CFG_LOAD_ADDR           0x00010000      /* default load address */
+
+#define CFG_HZ                  3333333         /* spec says 66.666 MHz,
but it appears to be 33 */
+                        /* valid baudrates */
+#define CFG_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200 }
+
+/*
+ * Stack sizes
+ *
+ * The stack sizes are set up in start.S using the settings below
+ */
+#define CONFIG_STACKSIZE        (128*1024)      /* regular stack */
+#ifdef CONFIG_USE_IRQ
+#define CONFIG_STACKSIZE_IRQ    (4*1024)        /* IRQ stack */
+#define CONFIG_STACKSIZE_FIQ    (4*1024)        /* FIQ stack */
+#endif
+
+/***************************************************************
+ * Platform/Board specific defines start here.
+ ***************************************************************/
+
+/*
+ * Hardware drivers
+ */
+
+
+/*
+ * select serial console configuration
+ */
+#define CFG_IXP425_CONSOLE    IXP425_UART1   /* we use UART1 for console */
+
+/*
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS    1          /* we have 2 banks of DRAM */
+#define PHYS_SDRAM_1            0x00000000 /* SDRAM Bank #1 */
+
+#if defined (CONFIG_AVILA_2347) || defined (CONFIG_AVILA_2348_2)
+#define PHYS_SDRAM_1_SIZE       0x02000000 /* 32 MB */
+#else
+#define PHYS_SDRAM_1_SIZE       0x04000000 /* 64 MB */
+#endif
+
+/* CFI flash driver used, therefore size is ignored */
+#define PHYS_FLASH_1            0x50000000 /* Flash Bank #1 */
+#define PHYS_FLASH_SIZE         0x00800000 /* 8 MB */
+#define PHYS_FLASH_BANK_SIZE    0x00800000 /* 8 MB Banks */
+#define PHYS_FLASH_SECT_SIZE    0x00020000 /* 128 KB sectors (x1) */
+
+#define CFG_DRAM_BASE           0x00000000
+#define CFG_DRAM_SIZE           0x04000000
+
+#define CFG_FLASH_BASE          PHYS_FLASH_1
+#define CFG_MONITOR_BASE    CFG_FLASH_BASE
+#define CFG_MONITOR_LEN        (384 << 10)    /* Reserve 256 kB for Monitor
*/
+
+/*
+ * Expansion bus settings
+ */
+#define CFG_EXP_CS0                0xbcd23c42
+
+/*
+ * SDRAM settings
+ */
+#define CFG_SDR_CONFIG        0xa
+#define CFG_SDR_MODE_CONFIG    0x1
+#define CFG_SDRAM_REFRESH_CNT     0x81a
+
+/*
+ * GPIO settings
+ */
+
+/*
+ * FLASH and environment organization
+ */
+/*
+ * FLASH and environment organization
+ */
+#define CFG_MAX_FLASH_BANKS     1       /* max number of memory banks
*/
+#define CFG_MAX_FLASH_SECT      128     /* max number of sectors on one
chip    */
+
+#define CFG_FLASH_CFI                /* The flash is CFI compatible    */
+#define CFG_FLASH_CFI_DRIVER            /* Use common CFI driver    */
+#define    CFG_ENV_IS_IN_FLASH    1
+
+#define CFG_FLASH_BANKS_LIST    { PHYS_FLASH_1 }
+
+#define CFG_FLASH_CFI_WIDTH    FLASH_CFI_16BIT    /* no byte writes on
IXP4xx    */
+
+#define CFG_FLASH_ERASE_TOUT    120000    /* Timeout for Flash Erase (in
ms)    */
+#define CFG_FLASH_WRITE_TOUT    500    /* Timeout for Flash Write (in ms)
*/
+
+#define CFG_FLASH_EMPTY_INFO        /* print 'E' for empty sector on flinfo
*/
+
+#define CFG_ENV_SECT_SIZE    0x20000     /* size of one complete sector
*/
+#define CFG_ENV_ADDR        (PHYS_FLASH_1 + 0x60000)
+#define    CFG_ENV_SIZE        0x20000    /* Total Size of Environment
Sector    */
+
+/* NPE Settings. Enable if you have downloaded the microcode for Ethernet
*/
+/*
+#define CONFIG_IXP4XX_NPE    1
+#define CFG_NPE_NUMS        2
+#define CONFIG_HAS_ETH1        1
+#ifdef CONFIG_AVILA_2345
+#define CONFIG_PHY_ADDR        4
+#define CONFIG_PHY1_ADDR    5
+#else
+#define CONFIG_PHY_ADDR        0
+#define CONFIG_PHY1_ADDR    1
+#endif
+#define CONFIG_MII        1
+#define CFG_CACHELINE_SIZE    32
+*/
+
+#endif  /* __CONFIG_H */
diff -purN u-boot/u-boot-ixp.git/MAKEALL u-boot.avila/u-boot-ixp.git/MAKEALL
--- u-boot/u-boot-ixp.git/MAKEALL    2007-06-06 07:26:56.000000000 -0700
+++ u-boot.avila/u-boot-ixp.git/MAKEALL    2007-07-23 19:13:11.297004839
-0700
@@ -230,7 +230,10 @@ LIST_pxa="    \
     xsengine    zylonite                    \
 "
 
-LIST_ixp="ixdp425    ixdpg425    pdnb3        scpu"
+LIST_ixp="    \
+    avila        ixdp425        ixdpg425    pdnb3        \
+    scpu
+"
 
 
 LIST_arm="    \
diff -purN u-boot/u-boot-ixp.git/Makefile
u-boot.avila/u-boot-ixp.git/Makefile
--- u-boot/u-boot-ixp.git/Makefile    2007-06-06 07:26:56.000000000 -0700
+++ u-boot.avila/u-boot-ixp.git/Makefile    2007-07-23 15:16:43.276950219
-0700
@@ -2148,6 +2148,9 @@ SMN42_config    :    unconfig
 adsvix_config    :    unconfig
     @$(MKCONFIG) $(@:_config=) arm pxa adsvix
 
+avila_config    :    unconfig
+    @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
+
 cerf250_config :    unconfig
     @$(MKCONFIG) $(@:_config=) arm pxa cerf250
 








More information about the U-Boot mailing list