Added primary and secondary bootloaders
authorHamish Guthrie <hcg@openwrt.org>
Tue, 20 Mar 2007 09:59:17 +0000 (09:59 +0000)
committerHamish Guthrie <hcg@openwrt.org>
Tue, 20 Mar 2007 09:59:17 +0000 (09:59 +0000)
SVN-Revision: 6626

target/linux/at91-2.6/image/Config.in [new file with mode: 0644]
target/linux/at91-2.6/image/Makefile
target/linux/at91-2.6/image/romboot/Makefile [new file with mode: 0644]
target/linux/at91-2.6/image/romboot/patches/000-fixenv.patch [new file with mode: 0644]
target/linux/at91-2.6/image/romboot/patches/001-makefile.patch [new file with mode: 0644]
target/linux/at91-2.6/image/u-boot/Makefile [new file with mode: 0644]
target/linux/at91-2.6/image/u-boot/patches/001-lowlevel-config.patch [new file with mode: 0644]
target/linux/at91-2.6/image/u-boot/patches/002-dataflash_machine.patch [new file with mode: 0644]
target/linux/at91-2.6/image/u-boot/patches/003-mac_init.patch [new file with mode: 0644]
target/linux/at91-2.6/image/u-boot/patches/004-mac_config.patch [new file with mode: 0644]
target/linux/at91-2.6/image/u-boot/patches/005-remove_float.patch [new file with mode: 0644]

diff --git a/target/linux/at91-2.6/image/Config.in b/target/linux/at91-2.6/image/Config.in
new file mode 100644 (file)
index 0000000..4335faa
--- /dev/null
@@ -0,0 +1,18 @@
+config AT91_ROMBOOT
+       bool "Build romboot loader"
+       depends LINUX_2_6_AT91
+       default y
+
+config AT91_UBOOT
+       bool "Build u-boot loader"
+       depends LINUX_2_6_AT91
+       default y
+
+config UBOOT_TARGET
+       string "U-Boot Board Configuration"
+       default "vlink"
+       help
+         For all supported boards there are reqdy-to-use default
+               configurations available; just type "<board_name>".
+
+
index 07660f2350616984c9803b611db31934b627a7bf..8b1a9476d796dd08898d6247f69e76383c02e774 100644 (file)
@@ -5,16 +5,25 @@
 # See /LICENSE for more information.
 #
 
-TARGET_DEVICE_TABLE:=$(TOPDIR)/target/linux/vlink-2.6/image/device_table.txt
-
 include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/image.mk
 
 define Build/Clean
+       $(MAKE) -C romboot clean
+       $(MAKE) -C u-boot clean
+endef
+
+define Build/Compile
+       $(MAKE) -C romboot compile
+#      $(MAKE) -C u-boot configure
+       $(MAKE) -C u-boot compile
 endef
 
 define Image/Prepare
   cp $(LINUX_DIR)/arch/arm/boot/uImage $(KDIR)/uImage
+       cp $(KDIR)/romboot/romboot.bin $(KDIR)/romboot.bin
+       cp $(KDIR)/u-boot-1.1.4/u-boot.bin $(KDIR)/u-boot.bin
+       cat $(KDIR)/romboot/romboot.block $(KDIR)/u-boot-1.1.4/u-boot.block > $(KDIR)/loaders.block
 endef
 
 define Image/BuildKernel
@@ -25,12 +34,4 @@ define Image/Build
        $(call Image/Build/$(1),$(1))
 endef
 
-define Image/Build/jffs2-64k
-       dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).img bs=65536 conv=sync
-endef
-
-define Image/Build/jffs2-128k
-       dd if=$(KDIR)/root.$(1) of=$(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-$(1).img bs=131072 conv=sync
-endef
-
 $(eval $(call BuildImage))
diff --git a/target/linux/at91-2.6/image/romboot/Makefile b/target/linux/at91-2.6/image/romboot/Makefile
new file mode 100644 (file)
index 0000000..aa679ab
--- /dev/null
@@ -0,0 +1,28 @@
+#
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# $Id$
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=romboot
+PKG_VERSION:=0.1
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)
+PKG_SOURCE:=$(PKG_NAME).tar.gz
+PKG_SOURCE_URL:=http://www.teest.com/at91
+PKG_MD5SUM:=
+PKG_CAT:=zcat
+
+include $(INCLUDE_DIR)/package.mk
+
+define Build/InstallDev
+       dd if=$(PKG_BUILD_DIR)/romboot.bin of=$(PKG_BUILD_DIR)/romboot.block bs=32k count=1 conv=sync
+endef
+
+$(eval $(call Build/DefaultTargets))
diff --git a/target/linux/at91-2.6/image/romboot/patches/000-fixenv.patch b/target/linux/at91-2.6/image/romboot/patches/000-fixenv.patch
new file mode 100644 (file)
index 0000000..7c28572
--- /dev/null
@@ -0,0 +1,57 @@
+diff -uNr romboot/main.cpp romboot.new/main.cpp
+--- romboot/main.cpp   2004-07-16 17:10:04.000000000 +0200
++++ romboot.new/main.cpp       2006-03-03 02:27:37.000000000 +0100
+@@ -23,12 +23,12 @@
+ #define AT91C_UBOOT_DATAFLASH_ADDR 0xC0008000
+ // crystal= 18.432MHz
+-//#define AT91C_PLLA_VALUE 0x2026BE04 // -> 179.712MHz
+-//#define AT91C_PLLA_MCK 0x0000202
++#define AT91C_PLLA_VALUE 0x2026BE04 // -> 179.712MHz
++#define AT91C_PLLA_MCK 0x0000202
+ // crystal= 20.000MHz
+-#define AT91C_PLLA_VALUE 0x2023BE04 // -> 180MHz
+-#define AT91C_PLLA_MCK 0x0000202
++//#define AT91C_PLLA_VALUE 0x2023BE04 // -> 180MHz
++//#define AT91C_PLLA_MCK 0x0000202
+ #define DELAY_MAIN_FREQ       1000
+ #define DISP_LINE_LEN 16
+@@ -151,7 +151,7 @@
+ //*-----------------------------------------------------------------------------
+ void AT91F_DisplayMenu(void)
+ {
+-  printf("\n\rATMEL LOADER %s %s %s\n\r", AT91C_VERSION, __DATE__, __TIME__);
++  printf("\n\rFDL LOADER %s %s %s\n\r", AT91C_VERSION, __DATE__, __TIME__);
+   printf(menu_separ); 
+   AT91F_DataflashPrintInfo();
+   printf(menu_separ); 
+@@ -306,6 +306,19 @@
+   AT91F_SetPLL();
+ }
++void LedCode(void)
++{
++      int *pRegister;
++      pRegister = (int *)0xFFFFF800; // Enable port C peripheral reg
++        *pRegister = 0x3c00;
++        pRegister = (int *)0xFFFFF810; // Output Enable reg
++        *pRegister = 0x3c00;
++        pRegister = (int *)0xFFFFF830; // Set data
++        *pRegister = 0x1400;
++        pRegister = (int *)0xFFFFF834; // Clear bits
++        *pRegister = 0x2800;
++}
++
+ void AT91F_StartUboot(unsigned int dummy, void *pvoid)
+ {
+   printf("Load U-BOOT from dataflash[%x] to SDRAM[%x]\n\r", AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_ADDR);
+@@ -313,6 +326,7 @@
+   printf("Set PLLA to 180Mhz and Master clock to 60Mhz and start U-BOOT\n\r");
+   //* Reset registers
+   AT91F_ResetRegisters();
++  LedCode();
+   Jump(AT91C_UBOOT_ADDR);
+   while(1);
+ }
diff --git a/target/linux/at91-2.6/image/romboot/patches/001-makefile.patch b/target/linux/at91-2.6/image/romboot/patches/001-makefile.patch
new file mode 100644 (file)
index 0000000..e0995c7
--- /dev/null
@@ -0,0 +1,50 @@
+--- romboot/Makefile.old       2007-03-18 09:29:20.000000000 +0100
++++ romboot/Makefile   2007-03-18 09:29:13.000000000 +0100
+@@ -0,0 +1,47 @@
++LINKFLAGS= -T elf32-littlearm.lds -Ttext 0
++COMPILEFLAGS= -Os
++TARGET=romboot
++OBJFILES=cstartup_ram.o asm_isr.o jump.o at45.o com.o dataflash.o \
++      init.o main.o stdio.o _udivsi3.o _umodsi3.o div0.o
++LIBRARIES=
++INCLUDES= -Iinclude
++
++all:$(TARGET)
++
++$(TARGET): $(OBJFILES)
++      $(LD) $(OBJFILES) -o $(TARGET).out $(LINKFLAGS) -n
++      $(OBJCOPY) $(TARGET).out -O binary $(TARGET).bin
++
++asm_isr.o: asm_isr.S
++      $(CC) -c -Iinclude -o $@ $<
++
++cstartup_ram.o: cstartup_ram.S
++      $(CC) -c -Iinclude -o $@ $<
++
++jump.o: jump.S
++      $(CC) -c -Iinclude -o $@ $<
++
++_udivsi3.o: _udivsi3.S
++      $(CC) -c $<
++
++_umodsi3.o: _umodsi3.S
++      $(CC) -c $<
++
++#%.o: %.S
++#     $(CC) -c $(INCLUDES) -o $@ $<
++
++%.o: %.cpp
++      $(CC) -c $(COMPILEFLAGS) $(INCLUDES) -o $@ $<
++
++div0.o: div0.c
++      $(CC) -c $(COMPILEFLAGS) $<
++
++clean:
++      rm $(OBJFILES) -f
++      rm *~ -f
++      rm $(TARGET) -f
++
++
++#LD="$CROSS"ld
++
++
diff --git a/target/linux/at91-2.6/image/u-boot/Makefile b/target/linux/at91-2.6/image/u-boot/Makefile
new file mode 100644 (file)
index 0000000..4584f20
--- /dev/null
@@ -0,0 +1,37 @@
+#
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# $Id$
+
+include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
+
+PKG_NAME:=u-boot
+PKG_VERSION:=1.1.4
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
+PKG_SOURCE_URL:=ftp://ftp.denx.de/pub/u-boot
+PKG_MD5SUM:=
+PKG_CAT:=bzcat
+
+include $(INCLUDE_DIR)/package.mk
+
+UBOOT_CONFIG=$(strip $(subst ",, $(CONFIG_UBOOT_TARGET)))
+
+define Build/Compile
+       $(MAKE) -C $(PKG_BUILD_DIR) $(UBOOT_CONFIG)_config
+       export CROSS_COMPILE=$(TARGET_CROSS); \
+       $(MAKE) -C $(PKG_BUILD_DIR)
+endef
+
+define Build/InstallDev
+       dd if=$(PKG_BUILD_DIR)/u-boot.bin of=$(PKG_BUILD_DIR)/u-boot.block bs=232k count=1 conv=sync
+#      mv $(PKG_BUILD_DIR) $(KERNEL_BUILD_DIR)/$(PKG_NAME)
+endef
+
+$(eval $(call Build/DefaultTargets))
diff --git a/target/linux/at91-2.6/image/u-boot/patches/001-lowlevel-config.patch b/target/linux/at91-2.6/image/u-boot/patches/001-lowlevel-config.patch
new file mode 100644 (file)
index 0000000..25f92e4
--- /dev/null
@@ -0,0 +1,91 @@
+--- u-boot-1.1.4/cpu/arm920t/config.mk 2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.klaus/cpu/arm920t/config.mk   2006-02-27 19:07:41.000000000 +0100
+@@ -30,5 +30,5 @@
+ # Supply options according to compiler version
+ #
+ # =========================================================================
+-PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
++PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32)
+ PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
+--- u-boot-1.1.4/cpu/arm920t/start.S   2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.klaus/cpu/arm920t/start.S     2006-02-22 16:45:24.000000000 +0100
+@@ -237,6 +237,7 @@
+  */
++#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+ cpu_init_crit:
+       /*
+        * flush v4 I/D caches
+@@ -265,6 +266,7 @@
+       mov     lr, ip
+       mov     pc, lr
++#endif
+ /*
+  *************************************************************************
+--- u-boot-1.1.4/examples/Makefile     2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.klaus/examples/Makefile       2006-03-02 02:37:14.000000000 +0100
+@@ -30,7 +30,7 @@
+ endif
+ ifeq ($(ARCH),arm)
+-LOAD_ADDR = 0xc100000
++LOAD_ADDR = 0x21000000
+ endif
+ ifeq ($(ARCH),mips)
+--- u-boot-1.1.4/include/config.h      1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.klaus/include/config.h        2006-02-27 19:04:46.000000000 +0100
+@@ -0,0 +1,2 @@
++/* Automatically generated - do not edit */
++#include <configs/at91rm9200dk.h>
+--- u-boot-1.1.4/include/config.mk     1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.klaus/include/config.mk       2006-02-27 19:04:46.000000000 +0100
+@@ -0,0 +1,4 @@
++ARCH   = arm
++CPU    = arm920t
++BOARD  = at91rm9200dk
++SOC    = at91rm9200
+--- u-boot-1.1.4/include/configs/at91rm9200dk.h        2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.klaus/include/configs/at91rm9200dk.h  2006-02-26 22:44:17.000000000 +0100
+@@ -25,6 +25,11 @@
+ #ifndef __CONFIG_H
+ #define __CONFIG_H
++// Added 2 defines to skip re-init lowlevel and relocate HCG HLH
++//
++#define CONFIG_SKIP_LOWLEVEL_INIT
++#define CONFIG_SKIP_RELOCATE_UBOOT
++
+ /* ARM asynchronous clock */
+ #define AT91C_MAIN_CLOCK      179712000       /* from 18.432 MHz crystal (18432000 / 4 * 39) */
+ #define AT91C_MASTER_CLOCK    59904000        /* peripheral clock (AT91C_MASTER_CLOCK / 3) */
+@@ -165,12 +170,12 @@
+ #define CFG_FLASH_ERASE_TOUT          (2*CFG_HZ) /* Timeout for Flash Erase */
+ #define CFG_FLASH_WRITE_TOUT          (2*CFG_HZ) /* Timeout for Flash Write */
+-#undef        CFG_ENV_IS_IN_DATAFLASH
++#define       CFG_ENV_IS_IN_DATAFLASH
+ #ifdef CFG_ENV_IS_IN_DATAFLASH
+-#define CFG_ENV_OFFSET                        0x20000
++#define CFG_ENV_OFFSET                        0x21000
+ #define CFG_ENV_ADDR                  (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
+-#define CFG_ENV_SIZE                  0x2000  /* 0x8000 */
++#define CFG_ENV_SIZE                  0x8400  /* 0x8000 */
+ #else
+ #define CFG_ENV_IS_IN_FLASH           1
+ #ifdef CONFIG_SKIP_LOWLEVEL_INIT
+--- u-boot-1.1.4/Makefile      2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.klaus/Makefile        2006-03-02 02:49:23.000000000 +0100
+@@ -57,7 +57,7 @@
+ CROSS_COMPILE = powerpc-linux-
+ endif
+ ifeq ($(ARCH),arm)
+-CROSS_COMPILE = arm-linux-
++CROSS_COMPILE = ../staging_dir/bin/arm-linux-
+ endif
+ ifeq ($(ARCH),i386)
+ ifeq ($(HOSTARCH),i387)
diff --git a/target/linux/at91-2.6/image/u-boot/patches/002-dataflash_machine.patch b/target/linux/at91-2.6/image/u-boot/patches/002-dataflash_machine.patch
new file mode 100644 (file)
index 0000000..cf7648c
--- /dev/null
@@ -0,0 +1,6065 @@
+diff -Naur u-boot-1.1.4.org/board/vlink/at45.c u-boot-1.1.4.tmp/board/vlink/at45.c
+--- u-boot-1.1.4.org/board/vlink/at45.c        1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/board/vlink/at45.c        2005-12-16 17:39:27.000000000 +0100
+@@ -0,0 +1,621 @@
++/* Driver for ATMEL DataFlash support
++ * Author : Hamid Ikdoumi (Atmel)
++ *
++ * 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 <config.h>
++#include <common.h>
++#include <asm/hardware.h>
++
++#ifdef CONFIG_HAS_DATAFLASH
++#include <dataflash.h>
++
++#define AT91C_SPI_CLK 10000000        /* Max Value = 10MHz to be compliant to
++the Continuous Array Read function */
++
++/* AC Characteristics */
++/* DLYBS = tCSS = 250ns min and DLYBCT = tCSH = 250ns */
++#define DATAFLASH_TCSS        (0xC << 16)
++#define DATAFLASH_TCHS        (0x1 << 24)
++
++#define AT91C_TIMEOUT_WRDY                    200000
++#define AT91C_SPI_PCS0_SERIAL_DATAFLASH               0xE     /* Chip Select 0 : NPCS0 %1110 */
++#define AT91C_SPI_PCS3_DATAFLASH_CARD         0x7     /* Chip Select 3 : NPCS3 %0111 */
++
++void AT91F_SpiInit(void) {
++
++/*-------------------------------------------------------------------*/
++/*    SPI DataFlash Init                                                              */
++/*-------------------------------------------------------------------*/
++      /* Configure PIOs */
++      AT91C_BASE_PIOA->PIO_ASR = AT91C_PA3_NPCS0 | AT91C_PA4_NPCS1 | AT91C_PA1_MOSI | AT91C_PA5_NPCS2 |
++                                 AT91C_PA6_NPCS3 | AT91C_PA0_MISO | AT91C_PA2_SPCK;
++      AT91C_BASE_PIOA->PIO_PDR = AT91C_PA3_NPCS0 | AT91C_PA4_NPCS1 | AT91C_PA1_MOSI | AT91C_PA5_NPCS2 |
++                                 AT91C_PA6_NPCS3 | AT91C_PA0_MISO | AT91C_PA2_SPCK;
++      /* Enable CLock */
++      AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_SPI;
++
++      /* Reset the SPI */
++      AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SWRST;
++
++      /* Configure SPI in Master Mode with No CS selected !!! */
++      AT91C_BASE_SPI->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS;
++
++      /* Configure CS0 and CS3 */
++      *(AT91C_SPI_CSR + 0) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT &
++      DATAFLASH_TCHS) | ((AT91C_MASTER_CLOCK / (2*AT91C_SPI_CLK)) << 8);
++
++      *(AT91C_SPI_CSR + 3) = AT91C_SPI_CPOL | (AT91C_SPI_DLYBS & DATAFLASH_TCSS) | (AT91C_SPI_DLYBCT &
++      DATAFLASH_TCHS) | ((AT91C_MASTER_CLOCK / (2*AT91C_SPI_CLK)) << 8);
++
++}
++
++void AT91F_SpiEnable(int cs) {
++      switch(cs) {
++      case 0: /* Configure SPI CS0 for Serial DataFlash AT45DBxx */
++              AT91C_BASE_SPI->SPI_MR &= 0xFFF0FFFF;
++              AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS0_SERIAL_DATAFLASH<<16) & AT91C_SPI_PCS);
++              break;
++      case 3: /* Configure SPI CS3 for Serial DataFlash Card */
++              /* Set up PIO SDC_TYPE to switch on DataFlash Card and not MMC/SDCard */
++              AT91C_BASE_PIOB->PIO_PER = AT91C_PIO_PB7;       /* Set in PIO mode */
++              AT91C_BASE_PIOB->PIO_OER = AT91C_PIO_PB7;       /* Configure in output */
++              /* Clear Output */
++              AT91C_BASE_PIOB->PIO_CODR = AT91C_PIO_PB7;
++              /* Configure PCS */
++              AT91C_BASE_SPI->SPI_MR &= 0xFFF0FFFF;
++              AT91C_BASE_SPI->SPI_MR |= ((AT91C_SPI_PCS3_DATAFLASH_CARD<<16) & AT91C_SPI_PCS);
++              break;
++      }
++
++      /* SPI_Enable */
++      AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SPIEN;
++}
++
++/*----------------------------------------------------------------------------*/
++/* \fn    AT91F_SpiWrite                                                    */
++/* \brief Set the PDC registers for a transfert                                     */
++/*----------------------------------------------------------------------------*/
++unsigned int AT91F_SpiWrite ( AT91PS_DataflashDesc pDesc )
++{
++      unsigned int timeout;
++
++      pDesc->state = BUSY;
++
++      AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
++
++      /* Initialize the Transmit and Receive Pointer */
++      AT91C_BASE_SPI->SPI_RPR = (unsigned int)pDesc->rx_cmd_pt ;
++      AT91C_BASE_SPI->SPI_TPR = (unsigned int)pDesc->tx_cmd_pt ;
++
++      /* Intialize the Transmit and Receive Counters */
++      AT91C_BASE_SPI->SPI_RCR = pDesc->rx_cmd_size;
++      AT91C_BASE_SPI->SPI_TCR = pDesc->tx_cmd_size;
++
++      if ( pDesc->tx_data_size != 0 ) {
++              /* Initialize the Next Transmit and Next Receive Pointer */
++              AT91C_BASE_SPI->SPI_RNPR = (unsigned int)pDesc->rx_data_pt ;
++              AT91C_BASE_SPI->SPI_TNPR = (unsigned int)pDesc->tx_data_pt ;
++
++              /* Intialize the Next Transmit and Next Receive Counters */
++              AT91C_BASE_SPI->SPI_RNCR = pDesc->rx_data_size ;
++              AT91C_BASE_SPI->SPI_TNCR = pDesc->tx_data_size ;
++      }
++
++      /* arm simple, non interrupt dependent timer */
++      reset_timer_masked();
++      timeout = 0;
++
++      AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTEN + AT91C_PDC_RXTEN;
++      while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_RXBUFF) && ((timeout = get_timer_masked() ) < CFG_SPI_WRITE_TOUT));
++      AT91C_BASE_SPI->SPI_PTCR = AT91C_PDC_TXTDIS + AT91C_PDC_RXTDIS;
++      pDesc->state = IDLE;
++
++      if (timeout >= CFG_SPI_WRITE_TOUT){
++              printf("Error Timeout\n\r");
++              return DATAFLASH_ERROR;
++      }
++
++      return DATAFLASH_OK;
++}
++
++
++/*----------------------------------------------------------------------*/
++/* \fn    AT91F_DataFlashSendCommand                                  */
++/* \brief Generic function to send a command to the dataflash         */
++/*----------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashSendCommand(
++      AT91PS_DataFlash pDataFlash,
++      unsigned char OpCode,
++      unsigned int CmdSize,
++      unsigned int DataflashAddress)
++{
++    unsigned int adr;
++
++      if ( (pDataFlash->pDataFlashDesc->state) != IDLE)
++              return DATAFLASH_BUSY;
++
++      /* process the address to obtain page address and byte address */
++      adr = ((DataflashAddress / (pDataFlash->pDevice->pages_size)) << pDataFlash->pDevice->page_offset) + (DataflashAddress % (pDataFlash->pDevice->pages_size));
++
++      /* fill the  command  buffer */
++      pDataFlash->pDataFlashDesc->command[0] = OpCode;
++      if (pDataFlash->pDevice->pages_number >= 16384) {
++              pDataFlash->pDataFlashDesc->command[1] = (unsigned char)((adr & 0x0F000000) >> 24);
++              pDataFlash->pDataFlashDesc->command[2] = (unsigned char)((adr & 0x00FF0000) >> 16);
++              pDataFlash->pDataFlashDesc->command[3] = (unsigned char)((adr & 0x0000FF00) >> 8);
++              pDataFlash->pDataFlashDesc->command[4] = (unsigned char)(adr & 0x000000FF);
++      } else {
++              pDataFlash->pDataFlashDesc->command[1] = (unsigned char)((adr & 0x00FF0000) >> 16);
++              pDataFlash->pDataFlashDesc->command[2] = (unsigned char)((adr & 0x0000FF00) >> 8);
++              pDataFlash->pDataFlashDesc->command[3] = (unsigned char)(adr & 0x000000FF) ;
++              pDataFlash->pDataFlashDesc->command[4] = 0;
++      }
++      pDataFlash->pDataFlashDesc->command[5] = 0;
++      pDataFlash->pDataFlashDesc->command[6] = 0;
++      pDataFlash->pDataFlashDesc->command[7] = 0;
++
++      /* Initialize the SpiData structure for the spi write fuction */
++      pDataFlash->pDataFlashDesc->tx_cmd_pt   =  pDataFlash->pDataFlashDesc->command ;
++      pDataFlash->pDataFlashDesc->tx_cmd_size =  CmdSize ;
++      pDataFlash->pDataFlashDesc->rx_cmd_pt   =  pDataFlash->pDataFlashDesc->command ;
++      pDataFlash->pDataFlashDesc->rx_cmd_size =  CmdSize ;
++
++      /* send the command and read the data */
++      return AT91F_SpiWrite (pDataFlash->pDataFlashDesc);
++}
++
++
++/*----------------------------------------------------------------------*/
++/* \fn    AT91F_DataFlashGetStatus                                    */
++/* \brief Read the status register of the dataflash                   */
++/*----------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashGetStatus(AT91PS_DataflashDesc pDesc)
++{
++      AT91S_DataFlashStatus status;
++
++      /* if a transfert is in progress ==> return 0 */
++      if( (pDesc->state) != IDLE)
++              return DATAFLASH_BUSY;
++
++      /* first send the read status command (D7H) */
++      pDesc->command[0] = DB_STATUS;
++      pDesc->command[1] = 0;
++
++      pDesc->DataFlash_state  = GET_STATUS;
++      pDesc->tx_data_size     = 0 ;   /* Transmit the command and receive response */
++      pDesc->tx_cmd_pt                = pDesc->command ;
++      pDesc->rx_cmd_pt                = pDesc->command ;
++      pDesc->rx_cmd_size              = 2 ;
++      pDesc->tx_cmd_size              = 2 ;
++      status = AT91F_SpiWrite (pDesc);
++
++      pDesc->DataFlash_state = *( (unsigned char *) (pDesc->rx_cmd_pt) +1);
++
++      return status;
++}
++
++
++/*----------------------------------------------------------------------*/
++/* \fn    AT91F_DataFlashWaitReady                                    */
++/* \brief wait for dataflash ready (bit7 of the status register == 1) */
++/*----------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashWaitReady(AT91PS_DataflashDesc pDataFlashDesc, unsigned int timeout)
++{
++      pDataFlashDesc->DataFlash_state = IDLE;
++
++      do {
++              AT91F_DataFlashGetStatus(pDataFlashDesc);
++              timeout--;
++      } while( ((pDataFlashDesc->DataFlash_state & 0x80) != 0x80) && (timeout > 0) );
++
++      if((pDataFlashDesc->DataFlash_state & 0x80) != 0x80)
++              return DATAFLASH_ERROR;
++
++      return DATAFLASH_OK;
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_DataFlashContinuousRead                                */
++/* Object              : Continuous stream Read                               */
++/* Input Parameters    : DataFlash Service                                    */
++/*                                            : <src> = dataflash address     */
++/*                     : <*dataBuffer> = data buffer pointer                  */
++/*                     : <sizeToRead> = data buffer size                      */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashContinuousRead (
++      AT91PS_DataFlash pDataFlash,
++      int src,
++      unsigned char *dataBuffer,
++      int sizeToRead )
++{
++      AT91S_DataFlashStatus status;
++      /* Test the size to read in the device */
++      if ( (src + sizeToRead) > (pDataFlash->pDevice->pages_size * (pDataFlash->pDevice->pages_number)))
++              return DATAFLASH_MEMORY_OVERFLOW;
++
++      pDataFlash->pDataFlashDesc->rx_data_pt = dataBuffer;
++      pDataFlash->pDataFlashDesc->rx_data_size = sizeToRead;
++      pDataFlash->pDataFlashDesc->tx_data_pt = dataBuffer;
++      pDataFlash->pDataFlashDesc->tx_data_size = sizeToRead;
++
++      status = AT91F_DataFlashSendCommand (pDataFlash, DB_CONTINUOUS_ARRAY_READ, 8, src);
++      /* Send the command to the dataflash */
++      return(status);
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_DataFlashPagePgmBuf                            */
++/* Object              : Main memory page program through buffer 1 or buffer 2        */
++/* Input Parameters    : DataFlash Service                                    */
++/*                                            : <*src> = Source buffer        */
++/*                     : <dest> = dataflash destination address                       */
++/*                     : <SizeToWrite> = data buffer size                     */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashPagePgmBuf(
++      AT91PS_DataFlash pDataFlash,
++      unsigned char *src,
++      unsigned int dest,
++      unsigned int SizeToWrite)
++{
++      int cmdsize;
++      pDataFlash->pDataFlashDesc->tx_data_pt = src ;
++      pDataFlash->pDataFlashDesc->tx_data_size = SizeToWrite ;
++      pDataFlash->pDataFlashDesc->rx_data_pt = src;
++      pDataFlash->pDataFlashDesc->rx_data_size = SizeToWrite;
++
++      cmdsize = 4;
++      /* Send the command to the dataflash */
++      if (pDataFlash->pDevice->pages_number >= 16384)
++              cmdsize = 5;
++      return(AT91F_DataFlashSendCommand (pDataFlash, DB_PAGE_PGM_BUF1, cmdsize, dest));
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_MainMemoryToBufferTransfert                    */
++/* Object              : Read a page in the SRAM Buffer 1 or 2                        */
++/* Input Parameters    : DataFlash Service                                    */
++/*                     : Page concerned                                               */
++/*                     :                                                      */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_MainMemoryToBufferTransfert(
++      AT91PS_DataFlash pDataFlash,
++      unsigned char BufferCommand,
++      unsigned int page)
++{
++      int cmdsize;
++      /* Test if the buffer command is legal */
++      if ((BufferCommand != DB_PAGE_2_BUF1_TRF) && (BufferCommand != DB_PAGE_2_BUF2_TRF))
++              return DATAFLASH_BAD_COMMAND;
++
++      /* no data to transmit or receive */
++      pDataFlash->pDataFlashDesc->tx_data_size = 0;
++      cmdsize = 4;
++      if (pDataFlash->pDevice->pages_number >= 16384)
++              cmdsize = 5;
++      return(AT91F_DataFlashSendCommand (pDataFlash, BufferCommand, cmdsize, page*pDataFlash->pDevice->pages_size));
++}
++
++
++/*----------------------------------------------------------------------------- */
++/* Function Name       : AT91F_DataFlashWriteBuffer                           */
++/* Object              : Write data to the internal sram buffer 1 or 2                */
++/* Input Parameters    : DataFlash Service                                    */
++/*                    : <BufferCommand> = command to write buffer1 or buffer2 */
++/*                     : <*dataBuffer> = data buffer to write                 */
++/*                     : <bufferAddress> = address in the internal buffer     */
++/*                     : <SizeToWrite> = data buffer size                     */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashWriteBuffer (
++      AT91PS_DataFlash pDataFlash,
++      unsigned char BufferCommand,
++      unsigned char *dataBuffer,
++      unsigned int bufferAddress,
++      int SizeToWrite )
++{
++      int cmdsize;
++      /* Test if the buffer command is legal */
++      if ((BufferCommand != DB_BUF1_WRITE) && (BufferCommand != DB_BUF2_WRITE))
++              return DATAFLASH_BAD_COMMAND;
++
++      /* buffer address must be lower than page size */
++      if (bufferAddress > pDataFlash->pDevice->pages_size)
++              return DATAFLASH_BAD_ADDRESS;
++
++      if ( (pDataFlash->pDataFlashDesc->state)  != IDLE)
++              return DATAFLASH_BUSY;
++
++      /* Send first Write Command */
++      pDataFlash->pDataFlashDesc->command[0] = BufferCommand;
++      pDataFlash->pDataFlashDesc->command[1] = 0;
++      if (pDataFlash->pDevice->pages_number >= 16384) {
++              pDataFlash->pDataFlashDesc->command[2] = 0;
++              pDataFlash->pDataFlashDesc->command[3] = (unsigned char)(((unsigned int)(bufferAddress &  pDataFlash->pDevice->byte_mask)) >> 8) ;
++              pDataFlash->pDataFlashDesc->command[4] = (unsigned char)((unsigned int)bufferAddress  & 0x00FF) ;
++              cmdsize = 5;
++      } else {
++              pDataFlash->pDataFlashDesc->command[2] = (unsigned char)(((unsigned int)(bufferAddress &  pDataFlash->pDevice->byte_mask)) >> 8) ;
++              pDataFlash->pDataFlashDesc->command[3] = (unsigned char)((unsigned int)bufferAddress  & 0x00FF) ;
++              pDataFlash->pDataFlashDesc->command[4] = 0;
++              cmdsize = 4;
++      }
++
++      pDataFlash->pDataFlashDesc->tx_cmd_pt    = pDataFlash->pDataFlashDesc->command ;
++      pDataFlash->pDataFlashDesc->tx_cmd_size = cmdsize ;
++      pDataFlash->pDataFlashDesc->rx_cmd_pt    = pDataFlash->pDataFlashDesc->command ;
++      pDataFlash->pDataFlashDesc->rx_cmd_size = cmdsize ;
++
++      pDataFlash->pDataFlashDesc->rx_data_pt  = dataBuffer ;
++      pDataFlash->pDataFlashDesc->tx_data_pt  = dataBuffer ;
++      pDataFlash->pDataFlashDesc->rx_data_size        = SizeToWrite ;
++      pDataFlash->pDataFlashDesc->tx_data_size        = SizeToWrite ;
++
++      return AT91F_SpiWrite(pDataFlash->pDataFlashDesc);
++}
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_PageErase                                        */
++/* Object              : Erase a page                                                 */
++/* Input Parameters    : DataFlash Service                                    */
++/*                     : Page concerned                                               */
++/*                     :                                                      */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_PageErase(
++      AT91PS_DataFlash pDataFlash,
++      unsigned int page)
++{
++      int cmdsize;
++      /* Test if the buffer command is legal */
++      /* no data to transmit or receive */
++      pDataFlash->pDataFlashDesc->tx_data_size = 0;
++
++      cmdsize = 4;
++      if (pDataFlash->pDevice->pages_number >= 16384)
++              cmdsize = 5;
++      return(AT91F_DataFlashSendCommand (pDataFlash, DB_PAGE_ERASE, cmdsize, page*pDataFlash->pDevice->pages_size));
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_BlockErase                                       */
++/* Object              : Erase a Block                                                */
++/* Input Parameters    : DataFlash Service                                    */
++/*                     : Page concerned                                               */
++/*                     :                                                      */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_BlockErase(
++      AT91PS_DataFlash pDataFlash,
++      unsigned int block)
++{
++      int cmdsize;
++      /* Test if the buffer command is legal */
++      /* no data to transmit or receive */
++      pDataFlash->pDataFlashDesc->tx_data_size = 0;
++      cmdsize = 4;
++      if (pDataFlash->pDevice->pages_number >= 16384)
++              cmdsize = 5;
++      return(AT91F_DataFlashSendCommand (pDataFlash, DB_BLOCK_ERASE,cmdsize, block*8*pDataFlash->pDevice->pages_size));
++}
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_WriteBufferToMain                              */
++/* Object              : Write buffer to the main memory                      */
++/* Input Parameters    : DataFlash Service                                    */
++/*            : <BufferCommand> = command to send to buffer1 or buffer2       */
++/*                     : <dest> = main memory address                         */
++/* Return value               : State of the dataflash                                */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_WriteBufferToMain (
++      AT91PS_DataFlash pDataFlash,
++      unsigned char BufferCommand,
++      unsigned int dest )
++{
++      int cmdsize;
++      /* Test if the buffer command is correct */
++      if ((BufferCommand != DB_BUF1_PAGE_PGM) &&
++          (BufferCommand != DB_BUF1_PAGE_ERASE_PGM) &&
++          (BufferCommand != DB_BUF2_PAGE_PGM) &&
++          (BufferCommand != DB_BUF2_PAGE_ERASE_PGM) )
++              return DATAFLASH_BAD_COMMAND;
++
++      /* no data to transmit or receive */
++      pDataFlash->pDataFlashDesc->tx_data_size = 0;
++
++      cmdsize = 4;
++      if (pDataFlash->pDevice->pages_number >= 16384)
++              cmdsize = 5;
++      /* Send the command to the dataflash */
++      return(AT91F_DataFlashSendCommand (pDataFlash, BufferCommand, cmdsize, dest));
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_PartialPageWrite                                       */
++/* Object              : Erase partielly a page                                       */
++/* Input Parameters    : <page> = page number                                 */
++/*                    : <AdrInpage> = adr to begin the fading                 */
++/*                     : <length> = Number of bytes to erase                  */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_PartialPageWrite (
++      AT91PS_DataFlash pDataFlash,
++      unsigned char *src,
++      unsigned int dest,
++      unsigned int size)
++{
++      unsigned int page;
++      unsigned int AdrInPage;
++
++      page = dest / (pDataFlash->pDevice->pages_size);
++      AdrInPage = dest % (pDataFlash->pDevice->pages_size);
++
++      /* Read the contents of the page in the Sram Buffer */
++      AT91F_MainMemoryToBufferTransfert(pDataFlash, DB_PAGE_2_BUF1_TRF, page);
++      AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++      /*Update the SRAM buffer */
++      AT91F_DataFlashWriteBuffer(pDataFlash, DB_BUF1_WRITE, src, AdrInPage, size);
++
++      AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++
++      /* Erase page if a 128 Mbits device */
++      if (pDataFlash->pDevice->pages_number >= 16384) {
++              AT91F_PageErase(pDataFlash, page);
++              /* Rewrite the modified Sram Buffer in the main memory */
++              AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++      }
++
++      /* Rewrite the modified Sram Buffer in the main memory */
++      return(AT91F_WriteBufferToMain(pDataFlash, DB_BUF1_PAGE_ERASE_PGM, (page*pDataFlash->pDevice->pages_size)));
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_DataFlashWrite                                 */
++/* Object              :                                                      */
++/* Input Parameters    : <*src> = Source buffer                                       */
++/*                     : <dest> = dataflash adress                            */
++/*                     : <size> = data buffer size                            */
++/*------------------------------------------------------------------------------*/
++AT91S_DataFlashStatus AT91F_DataFlashWrite(
++      AT91PS_DataFlash pDataFlash,
++      unsigned char *src,
++      int dest,
++      int size )
++{
++      unsigned int length;
++      unsigned int page;
++      unsigned int status;
++
++      AT91F_SpiEnable(pDataFlash->pDevice->cs);
++
++      if ( (dest + size) > (pDataFlash->pDevice->pages_size * (pDataFlash->pDevice->pages_number)))
++              return DATAFLASH_MEMORY_OVERFLOW;
++
++      /* If destination does not fit a page start address */
++      if ((dest % ((unsigned int)(pDataFlash->pDevice->pages_size)))  != 0 ) {
++              length = pDataFlash->pDevice->pages_size - (dest % ((unsigned int)(pDataFlash->pDevice->pages_size)));
++
++              if (size < length)
++                      length = size;
++
++              if(!AT91F_PartialPageWrite(pDataFlash,src, dest, length))
++                      return DATAFLASH_ERROR;
++
++              AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++
++              /* Update size, source and destination pointers */
++              size -= length;
++              dest += length;
++              src += length;
++      }
++
++      while (( size - pDataFlash->pDevice->pages_size ) >= 0 ) {
++              /* program dataflash page */
++              page = (unsigned int)dest / (pDataFlash->pDevice->pages_size);
++
++              status = AT91F_DataFlashWriteBuffer(pDataFlash, DB_BUF1_WRITE, src, 0, pDataFlash->pDevice->pages_size);
++              AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++
++              status = AT91F_PageErase(pDataFlash, page);
++              AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++              if (!status)
++                      return DATAFLASH_ERROR;
++
++              status = AT91F_WriteBufferToMain (pDataFlash, DB_BUF1_PAGE_PGM, dest);
++              if(!status)
++                      return DATAFLASH_ERROR;
++
++              AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++
++              /* Update size, source and destination pointers */
++              size -= pDataFlash->pDevice->pages_size ;
++              dest += pDataFlash->pDevice->pages_size ;
++              src  += pDataFlash->pDevice->pages_size ;
++      }
++
++      /* If still some bytes to read */
++      if ( size > 0 ) {
++              /* program dataflash page */
++              if(!AT91F_PartialPageWrite(pDataFlash, src, dest, size) )
++                      return DATAFLASH_ERROR;
++
++              AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY);
++      }
++      return DATAFLASH_OK;
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_DataFlashRead                                  */
++/* Object              : Read a block in dataflash                            */
++/* Input Parameters    :                                                      */
++/* Return value               :                                                       */
++/*------------------------------------------------------------------------------*/
++int AT91F_DataFlashRead(
++      AT91PS_DataFlash pDataFlash,
++      unsigned long addr,
++      unsigned long size,
++      char *buffer)
++{
++      unsigned long SizeToRead;
++
++      AT91F_SpiEnable(pDataFlash->pDevice->cs);
++
++      if(AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
++              return -1;
++
++      while (size) {
++              SizeToRead = (size < 0x8000)? size:0x8000;
++
++              if (AT91F_DataFlashWaitReady(pDataFlash->pDataFlashDesc, AT91C_TIMEOUT_WRDY) != DATAFLASH_OK)
++                      return -1;
++
++              if (AT91F_DataFlashContinuousRead (pDataFlash, addr, buffer, SizeToRead) != DATAFLASH_OK)
++                      return -1;
++
++              size -= SizeToRead;
++              addr += SizeToRead;
++              buffer += SizeToRead;
++      }
++
++      return DATAFLASH_OK;
++}
++
++
++/*------------------------------------------------------------------------------*/
++/* Function Name       : AT91F_DataflashProbe                                         */
++/* Object              :                                                      */
++/* Input Parameters    :                                                      */
++/* Return value              : Dataflash status register                              */
++/*------------------------------------------------------------------------------*/
++int AT91F_DataflashProbe(int cs, AT91PS_DataflashDesc pDesc)
++{
++      AT91F_SpiEnable(cs);
++      AT91F_DataFlashGetStatus(pDesc);
++      return((pDesc->command[1] == 0xFF)? 0: pDesc->command[1] & 0x3C);
++}
++
++#endif
+diff -Naur u-boot-1.1.4.org/board/vlink/config.mk u-boot-1.1.4.tmp/board/vlink/config.mk
+--- u-boot-1.1.4.org/board/vlink/config.mk     1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/board/vlink/config.mk     2005-12-16 17:39:27.000000000 +0100
+@@ -0,0 +1 @@
++TEXT_BASE = 0x21f00000
+diff -Naur u-boot-1.1.4.org/board/vlink/flash.c u-boot-1.1.4.tmp/board/vlink/flash.c
+--- u-boot-1.1.4.org/board/vlink/flash.c       1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/board/vlink/flash.c       2006-06-05 02:44:43.000000000 +0200
+@@ -0,0 +1,504 @@
++/*
++ * (C) Copyright 2002
++ * Lineo, Inc. <www.lineo.com>
++ * Bernhard Kuhn <bkuhn@lineo.com>
++ *
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Alex Zuepke <azu@sysgo.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 <common.h>
++
++ulong myflush(void);
++
++
++/* Flash Organization Structure */
++typedef struct OrgDef
++{
++      unsigned int sector_number;
++      unsigned int sector_size;
++} OrgDef;
++
++
++/* Flash Organizations */
++OrgDef OrgAT49BV16x4[] =
++{
++      {  8,  8*1024 },        /*   8 *  8 kBytes sectors */
++      {  2, 32*1024 },        /*   2 * 32 kBytes sectors */
++      { 30, 64*1024 },        /*  30 * 64 kBytes sectors */
++};
++
++OrgDef OrgAT49BV16x4A[] =
++{
++      {  8,  8*1024 },        /*   8 *  8 kBytes sectors */
++      { 31, 64*1024 },        /*  31 * 64 kBytes sectors */
++};
++
++OrgDef OrgAT49BV6416[] =
++{
++      {   8,  8*1024 },       /*   8 *  8 kBytes sectors */
++      { 127, 64*1024 },       /* 127 * 64 kBytes sectors */
++};
++
++flash_info_t    flash_info[CFG_MAX_FLASH_BANKS];
++
++/* AT49BV1614A Codes */
++#define FLASH_CODE1           0xAA
++#define FLASH_CODE2           0x55
++#define ID_IN_CODE            0x90
++#define ID_OUT_CODE           0xF0
++
++
++#define CMD_READ_ARRAY                0x00F0
++#define CMD_UNLOCK1           0x00AA
++#define CMD_UNLOCK2           0x0055
++#define CMD_ERASE_SETUP               0x0080
++#define CMD_ERASE_CONFIRM     0x0030
++#define CMD_PROGRAM           0x00A0
++#define CMD_UNLOCK_BYPASS     0x0020
++#define CMD_SECTOR_UNLOCK     0x0070
++
++#define MEM_FLASH_ADDR1               (*(volatile u16 *)(CFG_FLASH_BASE + (0x00005555<<1)))
++#define MEM_FLASH_ADDR2               (*(volatile u16 *)(CFG_FLASH_BASE + (0x00002AAA<<1)))
++
++#define BIT_ERASE_DONE                0x0080
++#define BIT_RDY_MASK          0x0080
++#define BIT_PROGRAM_ERROR     0x0020
++#define BIT_TIMEOUT           0x80000000 /* our flag */
++
++#define READY 1
++#define ERR   2
++#define TMO   4
++
++/*-----------------------------------------------------------------------
++ */
++void flash_identification (flash_info_t * info)
++{
++      volatile u16 manuf_code, device_code, add_device_code;
++
++      MEM_FLASH_ADDR1 = FLASH_CODE1;
++      MEM_FLASH_ADDR2 = FLASH_CODE2;
++      MEM_FLASH_ADDR1 = ID_IN_CODE;
++
++      manuf_code = *(volatile u16 *) CFG_FLASH_BASE;
++      device_code = *(volatile u16 *) (CFG_FLASH_BASE + 2);
++      add_device_code = *(volatile u16 *) (CFG_FLASH_BASE + (3 << 1));
++
++      MEM_FLASH_ADDR1 = FLASH_CODE1;
++      MEM_FLASH_ADDR2 = FLASH_CODE2;
++      MEM_FLASH_ADDR1 = ID_OUT_CODE;
++
++      /* Vendor type */
++      info->flash_id = ATM_MANUFACT & FLASH_VENDMASK;
++      printf ("Atmel: ");
++
++      if ((device_code & FLASH_TYPEMASK) == (ATM_ID_BV1614 & FLASH_TYPEMASK)) {
++
++              if ((add_device_code & FLASH_TYPEMASK) ==
++                      (ATM_ID_BV1614A & FLASH_TYPEMASK)) {
++                      info->flash_id |= ATM_ID_BV1614A & FLASH_TYPEMASK;
++                      printf ("AT49BV1614A (16Mbit)\n");
++              } else {                                /* AT49BV1614 Flash */
++                      info->flash_id |= ATM_ID_BV1614 & FLASH_TYPEMASK;
++                      printf ("AT49BV1614 (16Mbit)\n");
++              }
++
++      } else if ((device_code & FLASH_TYPEMASK) == (ATM_ID_BV6416 & FLASH_TYPEMASK)) {
++              info->flash_id |= ATM_ID_BV6416 & FLASH_TYPEMASK;
++              printf ("AT49BV6416 (64Mbit)\n");
++      }
++}
++
++ushort flash_number_sector(OrgDef *pOrgDef, unsigned int nb_blocks)
++{
++      int i, nb_sectors = 0;
++
++      for (i=0; i<nb_blocks; i++){
++              nb_sectors += pOrgDef[i].sector_number;
++      }
++
++      return nb_sectors;
++}
++
++void flash_unlock_sector(flash_info_t * info, unsigned int sector)
++{
++      volatile u16 *addr = (volatile u16 *) (info->start[sector]);
++
++      MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++      *addr = CMD_SECTOR_UNLOCK;
++}
++
++
++ulong flash_init (void)
++{
++      int i, j, k;
++      unsigned int flash_nb_blocks, sector;
++      unsigned int start_address;
++      OrgDef *pOrgDef;
++
++      ulong size = 0;
++
++      for (i = 0; i < CFG_MAX_FLASH_BANKS; i++) {
++              ulong flashbase = 0;
++
++              flash_identification (&flash_info[i]);
++
++              if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
++                      (ATM_ID_BV1614 & FLASH_TYPEMASK)) {
++
++                      pOrgDef = OrgAT49BV16x4;
++                      flash_nb_blocks = sizeof (OrgAT49BV16x4) / sizeof (OrgDef);
++              } else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
++                      (ATM_ID_BV1614A & FLASH_TYPEMASK)){     /* AT49BV1614A Flash */
++
++                      pOrgDef = OrgAT49BV16x4A;
++                      flash_nb_blocks = sizeof (OrgAT49BV16x4A) / sizeof (OrgDef);
++              } else if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
++                      (ATM_ID_BV6416 & FLASH_TYPEMASK)){      /* AT49BV6416 Flash */
++
++                      pOrgDef = OrgAT49BV6416;
++                      flash_nb_blocks = sizeof (OrgAT49BV6416) / sizeof (OrgDef);
++              } else {
++                      flash_nb_blocks = 0;
++                      pOrgDef = OrgAT49BV16x4;
++              }
++
++              flash_info[i].sector_count = flash_number_sector(pOrgDef, flash_nb_blocks);
++              memset (flash_info[i].protect, 0, flash_info[i].sector_count);
++
++              if (i == 0)
++                      flashbase = PHYS_FLASH_1;
++              else
++                      panic ("configured too many flash banks!\n");
++
++              sector = 0;
++              start_address = flashbase;
++              flash_info[i].size = 0;
++
++              for (j = 0; j < flash_nb_blocks; j++) {
++                      for (k = 0; k < pOrgDef[j].sector_number; k++) {
++                              flash_info[i].start[sector++] = start_address;
++                              start_address += pOrgDef[j].sector_size;
++                              flash_info[i].size += pOrgDef[j].sector_size;
++                      }
++              }
++
++              size += flash_info[i].size;
++
++              if ((flash_info[i].flash_id & FLASH_TYPEMASK) ==
++                      (ATM_ID_BV6416 & FLASH_TYPEMASK)){      /* AT49BV6416 Flash */
++
++                      /* Unlock all sectors at reset */
++                      for (j=0; j<flash_info[i].sector_count; j++){
++                              flash_unlock_sector(&flash_info[i], j);
++                      }
++              }
++      }
++
++      /* Protect binary boot image */
++      flash_protect (FLAG_PROTECT_SET,
++                     CFG_FLASH_BASE,
++                     CFG_FLASH_BASE + CFG_BOOT_SIZE - 1, &flash_info[0]);
++
++      /* Protect environment variables */
++      flash_protect (FLAG_PROTECT_SET,
++                     CFG_ENV_ADDR,
++                     CFG_ENV_ADDR + CFG_ENV_SIZE - 1, &flash_info[0]);
++
++      /* Protect U-Boot gzipped image */
++      flash_protect (FLAG_PROTECT_SET,
++                     CFG_U_BOOT_BASE,
++                     CFG_U_BOOT_BASE + CFG_U_BOOT_SIZE - 1, &flash_info[0]);
++
++      return size;
++}
++
++/*-----------------------------------------------------------------------
++ */
++void flash_print_info (flash_info_t * info)
++{
++      int i;
++
++      switch (info->flash_id & FLASH_VENDMASK) {
++      case (ATM_MANUFACT & FLASH_VENDMASK):
++              printf ("Atmel: ");
++              break;
++      default:
++              printf ("Unknown Vendor ");
++              break;
++      }
++
++      switch (info->flash_id & FLASH_TYPEMASK) {
++      case (ATM_ID_BV1614 & FLASH_TYPEMASK):
++              printf ("AT49BV1614 (16Mbit)\n");
++              break;
++      case (ATM_ID_BV1614A & FLASH_TYPEMASK):
++              printf ("AT49BV1614A (16Mbit)\n");
++              break;
++      case (ATM_ID_BV6416 & FLASH_TYPEMASK):
++              printf ("AT49BV6416 (64Mbit)\n");
++              break;
++      default:
++              printf ("Unknown Chip Type\n");
++              return;
++      }
++
++      printf ("  Size: %ld MB in %d Sectors\n",
++              info->size >> 20, info->sector_count);
++
++      printf ("  Sector Start Addresses:");
++      for (i = 0; i < info->sector_count; i++) {
++              if ((i % 5) == 0) {
++                      printf ("\n   ");
++              }
++              printf (" %08lX%s", info->start[i],
++                      info->protect[i] ? " (RO)" : "     ");
++      }
++      printf ("\n");
++}
++
++/*-----------------------------------------------------------------------
++ */
++
++int flash_erase (flash_info_t * info, int s_first, int s_last)
++{
++      ulong result;
++      int iflag, cflag, prot, sect;
++      int rc = ERR_OK;
++      int chip1;
++
++      /* first look for protection bits */
++
++      if (info->flash_id == FLASH_UNKNOWN)
++              return ERR_UNKNOWN_FLASH_TYPE;
++
++      if ((s_first < 0) || (s_first > s_last)) {
++              return ERR_INVAL;
++      }
++
++      if ((info->flash_id & FLASH_VENDMASK) !=
++              (ATM_MANUFACT & FLASH_VENDMASK)) {
++              return ERR_UNKNOWN_FLASH_VENDOR;
++      }
++
++      prot = 0;
++      for (sect = s_first; sect <= s_last; ++sect) {
++              if (info->protect[sect]) {
++                      prot++;
++              }
++      }
++      if (prot)
++              return ERR_PROTECTED;
++
++      /*
++       * Disable interrupts which might cause a timeout
++       * here. Remember that our exception vectors are
++       * at address 0 in the flash, and we don't want a
++       * (ticker) exception to happen while the flash
++       * chip is in programming mode.
++       */
++      cflag = icache_status ();
++      icache_disable ();
++      iflag = disable_interrupts ();
++
++      /* Start erase on unprotected sectors */
++      for (sect = s_first; sect <= s_last && !ctrlc (); sect++) {
++              printf ("Erasing sector %2d ... ", sect);
++
++              /* arm simple, non interrupt dependent timer */
++              reset_timer_masked ();
++
++              if (info->protect[sect] == 0) { /* not protected */
++                      volatile u16 *addr = (volatile u16 *) (info->start[sect]);
++
++                      MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++                      MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++                      MEM_FLASH_ADDR1 = CMD_ERASE_SETUP;
++
++                      MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++                      MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++                      *addr = CMD_ERASE_CONFIRM;
++
++                      /* wait until flash is ready */
++                      chip1 = 0;
++
++                      do {
++                              result = *addr;
++
++                              /* check timeout */
++                              if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
++                                      MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++                                      chip1 = TMO;
++                                      break;
++                              }
++
++                              if (!chip1 && (result & 0xFFFF) & BIT_ERASE_DONE)
++                                      chip1 = READY;
++
++                      } while (!chip1);
++
++                      MEM_FLASH_ADDR1 = CMD_READ_ARRAY;
++
++                      if (chip1 == ERR) {
++                              rc = ERR_PROG_ERROR;
++                              goto outahere;
++                      }
++                      if (chip1 == TMO) {
++                              rc = ERR_TIMOUT;
++                              goto outahere;
++                      }
++
++                      printf ("ok.\n");
++              } else {                        /* it was protected */
++                      printf ("protected!\n");
++              }
++      }
++
++      if (ctrlc ())
++              printf ("User Interrupt!\n");
++
++outahere:
++      /* allow flash to settle - wait 10 ms */
++      udelay_masked (10000);
++
++      if (iflag)
++              enable_interrupts ();
++
++      if (cflag)
++              icache_enable ();
++
++      return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash
++ */
++
++volatile static int write_word (flash_info_t * info, ulong dest,
++                                                              ulong data)
++{
++      volatile u16 *addr = (volatile u16 *) dest;
++      ulong result;
++      int rc = ERR_OK;
++      int cflag, iflag;
++      int chip1;
++
++      /*
++       * Check if Flash is (sufficiently) erased
++       */
++      result = *addr;
++      if ((result & data) != data)
++              return ERR_NOT_ERASED;
++
++
++      /*
++       * Disable interrupts which might cause a timeout
++       * here. Remember that our exception vectors are
++       * at address 0 in the flash, and we don't want a
++       * (ticker) exception to happen while the flash
++       * chip is in programming mode.
++       */
++      cflag = icache_status ();
++      icache_disable ();
++      iflag = disable_interrupts ();
++
++      MEM_FLASH_ADDR1 = CMD_UNLOCK1;
++      MEM_FLASH_ADDR2 = CMD_UNLOCK2;
++      MEM_FLASH_ADDR1 = CMD_PROGRAM;
++      *addr = data;
++
++      /* arm simple, non interrupt dependent timer */
++      reset_timer_masked ();
++
++      /* wait until flash is ready */
++      chip1 = 0;
++      do {
++              result = *addr;
++
++              /* check timeout */
++              if (get_timer_masked () > CFG_FLASH_ERASE_TOUT) {
++                      chip1 = ERR | TMO;
++                      break;
++              }
++              if (!chip1 && ((result & 0x80) == (data & 0x80)))
++                      chip1 = READY;
++
++      } while (!chip1);
++
++      *addr = CMD_READ_ARRAY;
++
++      if (chip1 == ERR || *addr != data)
++              rc = ERR_PROG_ERROR;
++
++      if (iflag)
++              enable_interrupts ();
++
++      if (cflag)
++              icache_enable ();
++
++      return rc;
++}
++
++/*-----------------------------------------------------------------------
++ * Copy memory to flash.
++ */
++
++int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
++{
++      ulong wp, data;
++      int rc;
++
++      if (addr & 1) {
++              printf ("unaligned destination not supported\n");
++              return ERR_ALIGN;
++      };
++
++      if ((int) src & 1) {
++              printf ("unaligned source not supported\n");
++              return ERR_ALIGN;
++      };
++
++      wp = addr;
++
++      while (cnt >= 2) {
++              data = *((volatile u16 *) src);
++              if ((rc = write_word (info, wp, data)) != 0) {
++                      return (rc);
++              }
++              src += 2;
++              wp += 2;
++              cnt -= 2;
++      }
++
++      if (cnt == 1) {
++              data = (*((volatile u8 *) src)) | (*((volatile u8 *) (wp + 1)) <<
++                                                                                 8);
++              if ((rc = write_word (info, wp, data)) != 0) {
++                      return (rc);
++              }
++              src += 1;
++              wp += 1;
++              cnt -= 1;
++      };
++
++      return ERR_OK;
++}
+diff -Naur u-boot-1.1.4.org/board/vlink/Makefile u-boot-1.1.4.tmp/board/vlink/Makefile
+--- u-boot-1.1.4.org/board/vlink/Makefile      1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/board/vlink/Makefile      2006-06-05 02:48:33.000000000 +0200
+@@ -0,0 +1,46 @@
++#
++# (C) Copyright 2003
++# 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
++#
++
++include $(TOPDIR)/config.mk
++
++LIB   = lib$(BOARD).a
++
++OBJS  := vlink.o at45.o flash.o
++
++$(LIB):       $(OBJS) $(SOBJS)
++      $(AR) crv $@ $(OBJS) $(SOBJS)
++
++clean:
++      rm -f $(SOBJS) $(OBJS)
++
++distclean:    clean
++      rm -f $(LIB) core *.bak .depend
++
++#########################################################################
++
++.depend:      Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
++              $(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
++
++-include .depend
++
++#########################################################################
+diff -Naur u-boot-1.1.4.org/board/vlink/u-boot.lds u-boot-1.1.4.tmp/board/vlink/u-boot.lds
+--- u-boot-1.1.4.org/board/vlink/u-boot.lds    1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/board/vlink/u-boot.lds    2005-12-16 17:39:27.000000000 +0100
+@@ -0,0 +1,57 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj@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_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
++/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++      . = 0x00000000;
++
++      . = ALIGN(4);
++      .text      :
++      {
++        cpu/arm920t/start.o   (.text)
++        *(.text)
++      }
++
++      . = ALIGN(4);
++      .rodata : { *(.rodata) }
++
++      . = ALIGN(4);
++      .data : { *(.data) }
++
++      . = ALIGN(4);
++      .got : { *(.got) }
++
++      . = .;
++      __u_boot_cmd_start = .;
++      .u_boot_cmd : { *(.u_boot_cmd) }
++      __u_boot_cmd_end = .;
++
++      . = ALIGN(4);
++      __bss_start = .;
++      .bss : { *(.bss) }
++      _end = .;
++}
+diff -Naur u-boot-1.1.4.org/board/vlink/vlink.c u-boot-1.1.4.tmp/board/vlink/vlink.c
+--- u-boot-1.1.4.org/board/vlink/vlink.c       1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/board/vlink/vlink.c       2006-06-05 03:10:22.000000000 +0200
+@@ -0,0 +1,89 @@
++/*
++ * (C) Copyright 2002
++ * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
++ * Marius Groeger <mgroeger@sysgo.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 <common.h>
++#include <asm/arch/AT91RM9200.h>
++#include <at91rm9200_net.h>
++#include <dm9161.h>
++#include <asm/mach-types.h>
++
++/* ------------------------------------------------------------------------- */
++/*
++ * Miscelaneous platform dependent initialisations
++ */
++
++int board_init (void)
++{
++      DECLARE_GLOBAL_DATA_PTR;
++
++      /* Enable Ctrlc */
++      console_init_f ();
++
++      /* Correct IRDA resistor problem */
++      /* Set PA23_TXD in Output */
++      (AT91PS_PIO) AT91C_BASE_PIOA->PIO_OER = AT91C_PA23_TXD2;
++
++      /* memory and cpu-speed are setup before relocation */
++      /* so we do _nothing_ here */
++
++      /* arch number of Versalink-Board */
++      gd->bd->bi_arch_number = MACH_TYPE_VLINK;
++      /* adress of boot parameters */
++      gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
++
++      return 0;
++}
++
++int dram_init (void)
++{
++      DECLARE_GLOBAL_DATA_PTR;
++
++      gd->bd->bi_dram[0].start = PHYS_SDRAM;
++      gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
++      return 0;
++}
++
++#ifdef CONFIG_DRIVER_ETHER
++#if (CONFIG_COMMANDS & CFG_CMD_NET)
++
++/*
++ * Name:
++ *    at91rm9200_GetPhyInterface
++ * Description:
++ *    Initialise the interface functions to the PHY
++ * Arguments:
++ *    None
++ * Return value:
++ *    None
++ */
++void at91rm9200_GetPhyInterface(AT91PS_PhyOps p_phyops)
++{
++      p_phyops->Init = dm9161_InitPhy;
++      p_phyops->IsPhyConnected = dm9161_IsPhyConnected;
++      p_phyops->GetLinkSpeed = dm9161_GetLinkSpeed;
++      p_phyops->AutoNegotiate = dm9161_AutoNegotiate;
++}
++
++#endif        /* CONFIG_COMMANDS & CFG_CMD_NET */
++#endif        /* CONFIG_DRIVER_ETHER */
+diff -Naur u-boot-1.1.4.org/include/asm-arm/mach-types.h u-boot-1.1.4.tmp/include/asm-arm/mach-types.h
+--- u-boot-1.1.4.org/include/asm-arm/mach-types.h      2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.tmp/include/asm-arm/mach-types.h      2006-06-05 01:29:25.000000000 +0200
+@@ -424,7 +424,7 @@
+ #define MACH_TYPE_MPORT3S              411
+ #define MACH_TYPE_RA_ALPHA             412
+ #define MACH_TYPE_XCEP                 413
+-#define MACH_TYPE_ARCOM_MERCURY        414
++#define MACH_TYPE_ARCOM_VULCAN         414
+ #define MACH_TYPE_STARGATE             415
+ #define MACH_TYPE_ARMADILLOJ           416
+ #define MACH_TYPE_ELROY_JACK           417
+@@ -457,7 +457,7 @@
+ #define MACH_TYPE_XM250                444
+ #define MACH_TYPE_T6TC1XB              445
+ #define MACH_TYPE_ESS710               446
+-#define MACH_TYPE_MX3ADS               447
++#define MACH_TYPE_MX31ADS              447
+ #define MACH_TYPE_HIMALAYA             448
+ #define MACH_TYPE_BOLFENK              449
+ #define MACH_TYPE_AT91RM9200KR         450
+@@ -563,8 +563,8 @@
+ #define MACH_TYPE_ENS_CMU              550
+ #define MACH_TYPE_MM6_SDB              551
+ #define MACH_TYPE_SATURN               552
+-#define MACH_TYPE_ARGONPLUSEVB         553
+-#define MACH_TYPE_SCMA11EVB            554
++#define MACH_TYPE_I30030EVB            553
++#define MACH_TYPE_MXC27530EVB          554
+ #define MACH_TYPE_SMDK2800             555
+ #define MACH_TYPE_MTWILSON             556
+ #define MACH_TYPE_ZITI                 557
+@@ -644,7 +644,7 @@
+ #define MACH_TYPE_MX2JAZZ              631
+ #define MACH_TYPE_MULTIIO              632
+ #define MACH_TYPE_HRDISPLAY            633
+-#define MACH_TYPE_SCMA11BB             634
++#define MACH_TYPE_MXC27530ADS          634
+ #define MACH_TYPE_TRIZEPS3             635
+ #define MACH_TYPE_ZEFEERDZA            636
+ #define MACH_TYPE_ZEFEERDZB            637
+@@ -718,7 +718,7 @@
+ #define MACH_TYPE_GEM                  707
+ #define MACH_TYPE_I858                 708
+ #define MACH_TYPE_HX2750               709
+-#define MACH_TYPE_ZEUSEVB              710
++#define MACH_TYPE_MXC91131EVB          710
+ #define MACH_TYPE_P700                 711
+ #define MACH_TYPE_CPE                  712
+ #define MACH_TYPE_SPITZ                713
+@@ -736,6 +736,331 @@
+ #define MACH_TYPE_LN2410SBC            725
+ #define MACH_TYPE_CB3RUFC              726
+ #define MACH_TYPE_MP2USB               727
++#define MACH_TYPE_NTNP425C             728
++#define MACH_TYPE_COLIBRI              729
++#define MACH_TYPE_PCM7220              730
++#define MACH_TYPE_GATEWAY7001          731
++#define MACH_TYPE_PCM027               732
++#define MACH_TYPE_CMPXA                733
++#define MACH_TYPE_ANUBIS               734
++#define MACH_TYPE_ITE8152              735
++#define MACH_TYPE_LPC3XXX              736
++#define MACH_TYPE_PUPPETEER            737
++#define MACH_TYPE_MACH_VADATECH        738
++#define MACH_TYPE_E570                 739
++#define MACH_TYPE_X50                  740
++#define MACH_TYPE_RECON                741
++#define MACH_TYPE_XBOARDGP8            742
++#define MACH_TYPE_FPIC2                743
++#define MACH_TYPE_AKITA                744
++#define MACH_TYPE_A81                  745
++#define MACH_TYPE_SVM_SC25X            746
++#define MACH_TYPE_VADATECH020          747
++#define MACH_TYPE_TLI                  748
++#define MACH_TYPE_EDB9315LC            749
++#define MACH_TYPE_PASSEC               750
++#define MACH_TYPE_DS_TIGER             751
++#define MACH_TYPE_E310                 752
++#define MACH_TYPE_E330                 753
++#define MACH_TYPE_RT3000               754
++#define MACH_TYPE_NOKIA770             755
++#define MACH_TYPE_PNX0106              756
++#define MACH_TYPE_HX21XX               757
++#define MACH_TYPE_FARADAY              758
++#define MACH_TYPE_SBC9312              759
++#define MACH_TYPE_BATMAN               760
++#define MACH_TYPE_JPD201               761
++#define MACH_TYPE_MIPSA                762
++#define MACH_TYPE_KACOM                763
++#define MACH_TYPE_SWARCOCPU            764
++#define MACH_TYPE_SWARCODSL            765
++#define MACH_TYPE_BLUEANGEL            766
++#define MACH_TYPE_HAIRYGRAMA           767
++#define MACH_TYPE_BANFF                768
++#define MACH_TYPE_CARMEVA              769
++#define MACH_TYPE_SAM255               770
++#define MACH_TYPE_PPM10                771
++#define MACH_TYPE_EDB9315A             772
++#define MACH_TYPE_SUNSET               773
++#define MACH_TYPE_STARGATE2            774
++#define MACH_TYPE_INTELMOTE2           775
++#define MACH_TYPE_TRIZEPS4             776
++#define MACH_TYPE_MAINSTONE2           777
++#define MACH_TYPE_EZ_IXP42X            778
++#define MACH_TYPE_TAPWAVE_ZODIAC       779
++#define MACH_TYPE_UNIVERSALMETER       780
++#define MACH_TYPE_HICOARM9             781
++#define MACH_TYPE_PNX4008              782
++#define MACH_TYPE_KWS6000              783
++#define MACH_TYPE_PORTUX920T           784
++#define MACH_TYPE_EZ_X5                785
++#define MACH_TYPE_OMAP_RUDOLPH         786
++#define MACH_TYPE_CPUAT91              787
++#define MACH_TYPE_REA9200              788
++#define MACH_TYPE_ACTS_PUNE_SA1110     789
++#define MACH_TYPE_IXP425               790
++#define MACH_TYPE_I30030ADS            791
++#define MACH_TYPE_PERCH                792
++#define MACH_TYPE_EIS05R1              793
++#define MACH_TYPE_PEPPERPAD            794
++#define MACH_TYPE_SB3010               795
++#define MACH_TYPE_RM9200               796
++#define MACH_TYPE_DMA03                797
++#define MACH_TYPE_ROAD_S101            798
++#define MACH_TYPE_IQ_NEXTGEN_A         799
++#define MACH_TYPE_IQ_NEXTGEN_B         800
++#define MACH_TYPE_IQ_NEXTGEN_C         801
++#define MACH_TYPE_IQ_NEXTGEN_D         802
++#define MACH_TYPE_IQ_NEXTGEN_E         803
++#define MACH_TYPE_MALLOW_AT91          804
++#define MACH_TYPE_CYBERTRACKER_I       805
++#define MACH_TYPE_GESBC931X            806
++#define MACH_TYPE_CENTIPAD             807
++#define MACH_TYPE_ARMSOC               808
++#define MACH_TYPE_SE4200               809
++#define MACH_TYPE_EMS197A              810
++#define MACH_TYPE_MICRO9               811
++#define MACH_TYPE_MICRO9L              812
++#define MACH_TYPE_UC5471DSP            813
++#define MACH_TYPE_SJ5471ENG            814
++#define MACH_TYPE_CMPXA26X             815
++#define MACH_TYPE_NC                   816
++#define MACH_TYPE_OMAP_PALMTE          817
++#define MACH_TYPE_AJAX52X              818
++#define MACH_TYPE_SIRIUSTAR            819
++#define MACH_TYPE_IODATA_HDLG          820
++#define MACH_TYPE_AT91RM9200UTL        821
++#define MACH_TYPE_BIOSAFE              822
++#define MACH_TYPE_MP1000               823
++#define MACH_TYPE_PARSY                824
++#define MACH_TYPE_CCXP                 825
++#define MACH_TYPE_OMAP_GSAMPLE         826
++#define MACH_TYPE_REALVIEW_EB          827
++#define MACH_TYPE_SAMOA                828
++#define MACH_TYPE_T3XSCALE             829
++#define MACH_TYPE_I878                 830
++#define MACH_TYPE_BORZOI               831
++#define MACH_TYPE_GECKO                832
++#define MACH_TYPE_DS101                833
++#define MACH_TYPE_OMAP_PALMTT2         834
++#define MACH_TYPE_XSCALE_PALMLD        835
++#define MACH_TYPE_CC9C                 836
++#define MACH_TYPE_SBC1670              837
++#define MACH_TYPE_IXDP28X5             838
++#define MACH_TYPE_OMAP_PALMTT          839
++#define MACH_TYPE_ML696K               840
++#define MACH_TYPE_ARCOM_ZEUS           841
++#define MACH_TYPE_OSIRIS               842
++#define MACH_TYPE_MAESTRO              843
++#define MACH_TYPE_TUNGE2               844
++#define MACH_TYPE_IXBBM                845
++#define MACH_TYPE_MX27                 846
++#define MACH_TYPE_AX8004               847
++#define MACH_TYPE_AT91SAM9261EK        848
++#define MACH_TYPE_LOFT                 849
++#define MACH_TYPE_MAGPIE               850
++#define MACH_TYPE_MX21                 851
++#define MACH_TYPE_MB87M3400            852
++#define MACH_TYPE_MGUARD_DELTA         853
++#define MACH_TYPE_DAVINCI_DVDP         854
++#define MACH_TYPE_HTCUNIVERSAL         855
++#define MACH_TYPE_TPAD                 856
++#define MACH_TYPE_ROVERP3              857
++#define MACH_TYPE_JORNADA928           858
++#define MACH_TYPE_MV88FXX81            859
++#define MACH_TYPE_STMP36XX             860
++#define MACH_TYPE_SXNI79524            861
++#define MACH_TYPE_AMS_DELTA            862
++#define MACH_TYPE_URANIUM              863
++#define MACH_TYPE_UCON                 864
++#define MACH_TYPE_NAS100D              865
++#define MACH_TYPE_L083_1000            866
++#define MACH_TYPE_EZX                  867
++#define MACH_TYPE_PNX5220              868
++#define MACH_TYPE_BUTTE                869
++#define MACH_TYPE_SRM2                 870
++#define MACH_TYPE_DSBR                 871
++#define MACH_TYPE_CRYSTALBALL          872
++#define MACH_TYPE_TINYPXA27X           873
++#define MACH_TYPE_HERBIE               874
++#define MACH_TYPE_MAGICIAN             875
++#define MACH_TYPE_CM4002               876
++#define MACH_TYPE_B4                   877
++#define MACH_TYPE_MAUI                 878
++#define MACH_TYPE_CYBERTRACKER_G       879
++#define MACH_TYPE_NXDKN                880
++#define MACH_TYPE_MIO8390              881
++#define MACH_TYPE_OMI_BOARD            882
++#define MACH_TYPE_MX21CIV              883
++#define MACH_TYPE_MAHI_CDAC            884
++#define MACH_TYPE_XSCALE_PALMTX        885
++#define MACH_TYPE_S3C2413              887
++#define MACH_TYPE_SAMSYS_EP0           888
++#define MACH_TYPE_WG302V1              889
++#define MACH_TYPE_WG302V2              890
++#define MACH_TYPE_EB42X                891
++#define MACH_TYPE_IQ331ES              892
++#define MACH_TYPE_COSYDSP              893
++#define MACH_TYPE_UPLAT7D              894
++#define MACH_TYPE_PTDAVINCI            895
++#define MACH_TYPE_MBUS                 896
++#define MACH_TYPE_NADIA2VB             897
++#define MACH_TYPE_R1000                898
++#define MACH_TYPE_HW90250              899
++#define MACH_TYPE_OMAP_2430SDP         900
++#define MACH_TYPE_DAVINCI_EVM          901
++#define MACH_TYPE_OMAP_TORNADO         902
++#define MACH_TYPE_OLOCREEK             903
++#define MACH_TYPE_PALMZ72              904
++#define MACH_TYPE_NXDB500              905
++#define MACH_TYPE_APF9328              906
++#define MACH_TYPE_OMAP_WIPOQ           907
++#define MACH_TYPE_OMAP_TWIP            908
++#define MACH_TYPE_XSCALE_PALMTREO650   909
++#define MACH_TYPE_ACUMEN               910
++#define MACH_TYPE_XP100                911
++#define MACH_TYPE_FS2410               912
++#define MACH_TYPE_PXA270_CERF          913
++#define MACH_TYPE_SQ2FTLPALM           914
++#define MACH_TYPE_BSEMSERVER           915
++#define MACH_TYPE_NETCLIENT            916
++#define MACH_TYPE_XSCALE_PALMTT5       917
++#define MACH_TYPE_OMAP_PALMTC          918
++#define MACH_TYPE_OMAP_APOLLON         919
++#define MACH_TYPE_MXC30030EVB          920
++#define MACH_TYPE_REA_2D               921
++#define MACH_TYPE_TI3E524              922
++#define MACH_TYPE_ATEB9200             923
++#define MACH_TYPE_AUCKLAND             924
++#define MACH_TYPE_AK3320M              925
++#define MACH_TYPE_DURAMAX              926
++#define MACH_TYPE_N35                  927
++#define MACH_TYPE_PRONGHORN            928
++#define MACH_TYPE_FUNDY                929
++#define MACH_TYPE_LOGICPD_PXA270       930
++#define MACH_TYPE_CPU777               931
++#define MACH_TYPE_SIMICON9201          932
++#define MACH_TYPE_LEAP2_HPM            933
++#define MACH_TYPE_CM922TXA10           934
++#define MACH_TYPE_PXA                  935
++#define MACH_TYPE_SANDGATE2            936
++#define MACH_TYPE_SANDGATE2G           937
++#define MACH_TYPE_SANDGATE2P           938
++#define MACH_TYPE_FRED_JACK            939
++#define MACH_TYPE_TTG_COLOR1           940
++#define MACH_TYPE_NXEB500HMI           941
++#define MACH_TYPE_NETDCU8              942
++#define MACH_TYPE_ML675050_CPU_BOA     943
++#define MACH_TYPE_NG_FVX538            944
++#define MACH_TYPE_NG_FVS338            945
++#define MACH_TYPE_PNX4103              946
++#define MACH_TYPE_HESDB                947
++#define MACH_TYPE_XSILO                948
++#define MACH_TYPE_ESPRESSO             949
++#define MACH_TYPE_EMLC                 950
++#define MACH_TYPE_SISTERON             951
++#define MACH_TYPE_RX1950               952
++#define MACH_TYPE_TSC_VENUS            953
++#define MACH_TYPE_DS101J               954
++#define MACH_TYPE_MXC30030ADS          955
++#define MACH_TYPE_FUJITSU_WIMAXSOC     956
++#define MACH_TYPE_DUALPCMODEM          957
++#define MACH_TYPE_GESBC9312            958
++#define MACH_TYPE_HTCAPACHE            959
++#define MACH_TYPE_IXDP435              960
++#define MACH_TYPE_CATPROVT100          961
++#define MACH_TYPE_PICOTUX1XX           962
++#define MACH_TYPE_PICOTUX2XX           963
++#define MACH_TYPE_DSMG600              964
++#define MACH_TYPE_EMPC2                965
++#define MACH_TYPE_VENTURA              966
++#define MACH_TYPE_PHIDGET_SBC          967
++#define MACH_TYPE_IJ3K                 968
++#define MACH_TYPE_PISGAH               969
++#define MACH_TYPE_OMAP_FSAMPLE         970
++#define MACH_TYPE_SG720                971
++#define MACH_TYPE_REDFOX               972
++#define MACH_TYPE_MYSH_EP9315_1        973
++#define MACH_TYPE_TPF106               974
++#define MACH_TYPE_AT91RM9200KG         975
++#define MACH_TYPE_SLEDB                976
++#define MACH_TYPE_ONTRACK              977
++#define MACH_TYPE_PM1200               978
++#define MACH_TYPE_ESS24XXX             979
++#define MACH_TYPE_COREMP7              980
++#define MACH_TYPE_NEXCODER_6446        981
++#define MACH_TYPE_STVC8380             982
++#define MACH_TYPE_TEKLYNX              983
++#define MACH_TYPE_CARBONADO            984
++#define MACH_TYPE_SYSMOS_MP730         985
++#define MACH_TYPE_SNAPPER_CL15         986
++#define MACH_TYPE_PGIGIM               987
++#define MACH_TYPE_PTX9160P2            988
++#define MACH_TYPE_DCORE1               989
++#define MACH_TYPE_VICTORPXA            990
++#define MACH_TYPE_MX2DTB               991
++#define MACH_TYPE_PXA_IREX_ER0100      992
++#define MACH_TYPE_OMAP_PALMZ71         993
++#define MACH_TYPE_BARTEC_DEG           994
++#define MACH_TYPE_HW50251              995
++#define MACH_TYPE_IBOX                 996
++#define MACH_TYPE_ATLASLH7A404         997
++#define MACH_TYPE_PT2026               998
++#define MACH_TYPE_HTCALPINE            999
++#define MACH_TYPE_BARTEC_VTU           1000
++#define MACH_TYPE_VCOREII              1001
++#define MACH_TYPE_PDNB3                1002
++#define MACH_TYPE_HTCBEETLES           1003
++#define MACH_TYPE_S3C6400              1004
++#define MACH_TYPE_S3C2443              1005
++#define MACH_TYPE_OMAP_LDK             1006
++#define MACH_TYPE_SMDK2460             1007
++#define MACH_TYPE_SMDK2440             1008
++#define MACH_TYPE_SMDK2412             1009
++#define MACH_TYPE_WEBBOX               1010
++#define MACH_TYPE_CWWNDP               1011
++#define MACH_TYPE_DRAGON               1012
++#define MACH_TYPE_OPENDO_CPU_BOARD     1013
++#define MACH_TYPE_CCM2200              1014
++#define MACH_TYPE_ETWARM               1015
++#define MACH_TYPE_M93030               1016
++#define MACH_TYPE_CC7U                 1017
++#define MACH_TYPE_MTT_RANGER           1018
++#define MACH_TYPE_NEXUS                1019
++#define MACH_TYPE_DESMAN               1020
++#define MACH_TYPE_BKDE303              1021
++#define MACH_TYPE_SMDK2413             1022
++#define MACH_TYPE_AML_M7200            1023
++#define MACH_TYPE_AML_M5900            1024
++#define MACH_TYPE_SG640                1025
++#define MACH_TYPE_EDG79524             1026
++#define MACH_TYPE_AI2410               1027
++#define MACH_TYPE_IXP465               1028
++#define MACH_TYPE_BALLOON3             1029
++#define MACH_TYPE_HEINS                1030
++#define MACH_TYPE_MPLUSEVA             1031
++#define MACH_TYPE_RT042                1032
++#define MACH_TYPE_CWIEM                1033
++#define MACH_TYPE_CM_X270              1034
++#define MACH_TYPE_CM_X255              1035
++#define MACH_TYPE_ESH_AT91             1036
++#define MACH_TYPE_SANDGATE3            1037
++#define MACH_TYPE_PRIMO                1038
++#define MACH_TYPE_GEMSTONE             1039
++#define MACH_TYPE_PRONGHORNMETRO       1040
++#define MACH_TYPE_SIDEWINDER           1041
++#define MACH_TYPE_PICOMOD1             1042
++#define MACH_TYPE_SG590                1043
++#define MACH_TYPE_AKAI9307             1044
++#define MACH_TYPE_FONTAINE             1045
++#define MACH_TYPE_WOMBAT               1046
++#define MACH_TYPE_ACQ300               1047
++#define MACH_TYPE_MOD_270              1048
++#define MACH_TYPE_VC0820               1049
++#define MACH_TYPE_ANI_AIM              1050
++#define MACH_TYPE_JELLYFISH            1051
++#define MACH_TYPE_AMANITA              1052
++#define MACH_TYPE_VLINK                1053
+ #ifdef CONFIG_ARCH_EBSA110
+ # ifdef machine_arch_type
+@@ -3540,9 +3865,9 @@
+ # else
+ #  define machine_arch_type   MACH_TYPE_RAMSES
+ # endif
+-# define machine_is_ramses()  (machine_arch_type == MACH_TYPE_RAMSES)
++# define machine_is_mnci()    (machine_arch_type == MACH_TYPE_RAMSES)
+ #else
+-# define machine_is_ramses()  (0)
++# define machine_is_mnci()    (0)
+ #endif
+ #ifdef CONFIG_ARCH_S28X
+@@ -4500,9 +4825,9 @@
+ # else
+ #  define machine_arch_type   MACH_TYPE_M825XX
+ # endif
+-# define machine_is_m825xx()  (machine_arch_type == MACH_TYPE_M825XX)
++# define machine_is_comcerto()        (machine_arch_type == MACH_TYPE_M825XX)
+ #else
+-# define machine_is_m825xx()  (0)
++# define machine_is_comcerto()        (0)
+ #endif
+ #ifdef CONFIG_SA1100_M7100
+@@ -5657,16 +5982,16 @@
+ # define machine_is_xcep()    (0)
+ #endif
+-#ifdef CONFIG_MACH_ARCOM_MERCURY
++#ifdef CONFIG_MACH_ARCOM_VULCAN
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type   __machine_arch_type
+ # else
+-#  define machine_arch_type   MACH_TYPE_ARCOM_MERCURY
++#  define machine_arch_type   MACH_TYPE_ARCOM_VULCAN
+ # endif
+-# define machine_is_arcom_mercury()   (machine_arch_type == MACH_TYPE_ARCOM_MERCURY)
++# define machine_is_arcom_vulcan()    (machine_arch_type == MACH_TYPE_ARCOM_VULCAN)
+ #else
+-# define machine_is_arcom_mercury()   (0)
++# define machine_is_arcom_vulcan()    (0)
+ #endif
+ #ifdef CONFIG_MACH_STARGATE
+@@ -6053,16 +6378,16 @@
+ # define machine_is_ess710()  (0)
+ #endif
+-#ifdef CONFIG_MACH_MX3ADS
++#ifdef CONFIG_MACH_MX31ADS
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type   __machine_arch_type
+ # else
+-#  define machine_arch_type   MACH_TYPE_MX3ADS
++#  define machine_arch_type   MACH_TYPE_MX31ADS
+ # endif
+-# define machine_is_mx3ads()  (machine_arch_type == MACH_TYPE_MX3ADS)
++# define machine_is_mx31ads() (machine_arch_type == MACH_TYPE_MX31ADS)
+ #else
+-# define machine_is_mx3ads()  (0)
++# define machine_is_mx31ads() (0)
+ #endif
+ #ifdef CONFIG_MACH_HIMALAYA
+@@ -7325,28 +7650,28 @@
+ # define machine_is_saturn()  (0)
+ #endif
+-#ifdef CONFIG_MACH_ARGONPLUSEVB
++#ifdef CONFIG_MACH_I30030EVB
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type   __machine_arch_type
+ # else
+-#  define machine_arch_type   MACH_TYPE_ARGONPLUSEVB
++#  define machine_arch_type   MACH_TYPE_I30030EVB
+ # endif
+-# define machine_is_argonplusevb()    (machine_arch_type == MACH_TYPE_ARGONPLUSEVB)
++# define machine_is_i30030evb()       (machine_arch_type == MACH_TYPE_I30030EVB)
+ #else
+-# define machine_is_argonplusevb()    (0)
++# define machine_is_i30030evb()       (0)
+ #endif
+-#ifdef CONFIG_MACH_SCMA11EVB
++#ifdef CONFIG_MACH_MXC27530EVB
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type   __machine_arch_type
+ # else
+-#  define machine_arch_type   MACH_TYPE_SCMA11EVB
++#  define machine_arch_type   MACH_TYPE_MXC27530EVB
+ # endif
+-# define machine_is_scma11evb()       (machine_arch_type == MACH_TYPE_SCMA11EVB)
++# define machine_is_mxc27530evb()     (machine_arch_type == MACH_TYPE_MXC27530EVB)
+ #else
+-# define machine_is_scma11evb()       (0)
++# define machine_is_mxc27530evb()     (0)
+ #endif
+ #ifdef CONFIG_MACH_SMDK2800
+@@ -8297,16 +8622,16 @@
+ # define machine_is_hrdisplay()       (0)
+ #endif
+-#ifdef CONFIG_MACH_SCMA11BB
++#ifdef CONFIG_MACH_MXC27530ADS
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type   __machine_arch_type
+ # else
+-#  define machine_arch_type   MACH_TYPE_SCMA11BB
++#  define machine_arch_type   MACH_TYPE_MXC27530ADS
+ # endif
+-# define machine_is_scma11bb()        (machine_arch_type == MACH_TYPE_SCMA11BB)
++# define machine_is_mxc27530ads()     (machine_arch_type == MACH_TYPE_MXC27530ADS)
+ #else
+-# define machine_is_scma11bb()        (0)
++# define machine_is_mxc27530ads()     (0)
+ #endif
+ #ifdef CONFIG_MACH_TRIZEPS3
+@@ -9185,16 +9510,16 @@
+ # define machine_is_hx2750()  (0)
+ #endif
+-#ifdef CONFIG_MACH_ZEUSEVB
++#ifdef CONFIG_MACH_MXC91131EVB
+ # ifdef machine_arch_type
+ #  undef machine_arch_type
+ #  define machine_arch_type   __machine_arch_type
+ # else
+-#  define machine_arch_type   MACH_TYPE_ZEUSEVB
++#  define machine_arch_type   MACH_TYPE_MXC91131EVB
+ # endif
+-# define machine_is_zeusevb() (machine_arch_type == MACH_TYPE_ZEUSEVB)
++# define machine_is_mxc91131evb()     (machine_arch_type == MACH_TYPE_MXC91131EVB)
+ #else
+-# define machine_is_zeusevb() (0)
++# define machine_is_mxc91131evb()     (0)
+ #endif
+ #ifdef CONFIG_MACH_P700
+@@ -9401,6 +9726,3906 @@
+ # define machine_is_mp2usb()  (0)
+ #endif
++#ifdef CONFIG_MACH_NTNP425C
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NTNP425C
++# endif
++# define machine_is_ntnp425c()        (machine_arch_type == MACH_TYPE_NTNP425C)
++#else
++# define machine_is_ntnp425c()        (0)
++#endif
++
++#ifdef CONFIG_MACH_COLIBRI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_COLIBRI
++# endif
++# define machine_is_colibri() (machine_arch_type == MACH_TYPE_COLIBRI)
++#else
++# define machine_is_colibri() (0)
++#endif
++
++#ifdef CONFIG_MACH_PCM7220
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PCM7220
++# endif
++# define machine_is_pcm7220() (machine_arch_type == MACH_TYPE_PCM7220)
++#else
++# define machine_is_pcm7220() (0)
++#endif
++
++#ifdef CONFIG_MACH_GATEWAY7001
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_GATEWAY7001
++# endif
++# define machine_is_gateway7001()     (machine_arch_type == MACH_TYPE_GATEWAY7001)
++#else
++# define machine_is_gateway7001()     (0)
++#endif
++
++#ifdef CONFIG_MACH_PCM027
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PCM027
++# endif
++# define machine_is_pcm027()  (machine_arch_type == MACH_TYPE_PCM027)
++#else
++# define machine_is_pcm027()  (0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CMPXA
++# endif
++# define machine_is_cmpxa()   (machine_arch_type == MACH_TYPE_CMPXA)
++#else
++# define machine_is_cmpxa()   (0)
++#endif
++
++#ifdef CONFIG_MACH_ANUBIS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ANUBIS
++# endif
++# define machine_is_anubis()  (machine_arch_type == MACH_TYPE_ANUBIS)
++#else
++# define machine_is_anubis()  (0)
++#endif
++
++#ifdef CONFIG_MACH_ITE8152
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ITE8152
++# endif
++# define machine_is_ite8152() (machine_arch_type == MACH_TYPE_ITE8152)
++#else
++# define machine_is_ite8152() (0)
++#endif
++
++#ifdef CONFIG_MACH_LPC3XXX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_LPC3XXX
++# endif
++# define machine_is_lpc3xxx() (machine_arch_type == MACH_TYPE_LPC3XXX)
++#else
++# define machine_is_lpc3xxx() (0)
++#endif
++
++#ifdef CONFIG_MACH_PUPPETEER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PUPPETEER
++# endif
++# define machine_is_puppeteer()       (machine_arch_type == MACH_TYPE_PUPPETEER)
++#else
++# define machine_is_puppeteer()       (0)
++#endif
++
++#ifdef CONFIG_MACH_MACH_VADATECH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MACH_VADATECH
++# endif
++# define machine_is_vt001()   (machine_arch_type == MACH_TYPE_MACH_VADATECH)
++#else
++# define machine_is_vt001()   (0)
++#endif
++
++#ifdef CONFIG_MACH_E570
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_E570
++# endif
++# define machine_is_e570()    (machine_arch_type == MACH_TYPE_E570)
++#else
++# define machine_is_e570()    (0)
++#endif
++
++#ifdef CONFIG_MACH_X50
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_X50
++# endif
++# define machine_is_x50()     (machine_arch_type == MACH_TYPE_X50)
++#else
++# define machine_is_x50()     (0)
++#endif
++
++#ifdef CONFIG_MACH_RECON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_RECON
++# endif
++# define machine_is_recon()   (machine_arch_type == MACH_TYPE_RECON)
++#else
++# define machine_is_recon()   (0)
++#endif
++
++#ifdef CONFIG_MACH_XBOARDGP8
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XBOARDGP8
++# endif
++# define machine_is_xboardgp8()       (machine_arch_type == MACH_TYPE_XBOARDGP8)
++#else
++# define machine_is_xboardgp8()       (0)
++#endif
++
++#ifdef CONFIG_MACH_FPIC2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FPIC2
++# endif
++# define machine_is_fpic2()   (machine_arch_type == MACH_TYPE_FPIC2)
++#else
++# define machine_is_fpic2()   (0)
++#endif
++
++#ifdef CONFIG_MACH_AKITA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AKITA
++# endif
++# define machine_is_akita()   (machine_arch_type == MACH_TYPE_AKITA)
++#else
++# define machine_is_akita()   (0)
++#endif
++
++#ifdef CONFIG_MACH_A81
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_A81
++# endif
++# define machine_is_a81()     (machine_arch_type == MACH_TYPE_A81)
++#else
++# define machine_is_a81()     (0)
++#endif
++
++#ifdef CONFIG_MACH_SVM_SC25X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SVM_SC25X
++# endif
++# define machine_is_svm_sc25x()       (machine_arch_type == MACH_TYPE_SVM_SC25X)
++#else
++# define machine_is_svm_sc25x()       (0)
++#endif
++
++#ifdef CONFIG_MACH_VADATECH020
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_VADATECH020
++# endif
++# define machine_is_vt020()   (machine_arch_type == MACH_TYPE_VADATECH020)
++#else
++# define machine_is_vt020()   (0)
++#endif
++
++#ifdef CONFIG_MACH_TLI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TLI
++# endif
++# define machine_is_tli()     (machine_arch_type == MACH_TYPE_TLI)
++#else
++# define machine_is_tli()     (0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315LC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EDB9315LC
++# endif
++# define machine_is_edb9315lc()       (machine_arch_type == MACH_TYPE_EDB9315LC)
++#else
++# define machine_is_edb9315lc()       (0)
++#endif
++
++#ifdef CONFIG_MACH_PASSEC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PASSEC
++# endif
++# define machine_is_passec()  (machine_arch_type == MACH_TYPE_PASSEC)
++#else
++# define machine_is_passec()  (0)
++#endif
++
++#ifdef CONFIG_MACH_DS_TIGER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DS_TIGER
++# endif
++# define machine_is_ds_tiger()        (machine_arch_type == MACH_TYPE_DS_TIGER)
++#else
++# define machine_is_ds_tiger()        (0)
++#endif
++
++#ifdef CONFIG_MACH_E310
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_E310
++# endif
++# define machine_is_e310()    (machine_arch_type == MACH_TYPE_E310)
++#else
++# define machine_is_e310()    (0)
++#endif
++
++#ifdef CONFIG_MACH_E330
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_E330
++# endif
++# define machine_is_e330()    (machine_arch_type == MACH_TYPE_E330)
++#else
++# define machine_is_e330()    (0)
++#endif
++
++#ifdef CONFIG_MACH_RT3000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_RT3000
++# endif
++# define machine_is_rt3000()  (machine_arch_type == MACH_TYPE_RT3000)
++#else
++# define machine_is_rt3000()  (0)
++#endif
++
++#ifdef CONFIG_MACH_NOKIA770
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NOKIA770
++# endif
++# define machine_is_nokia770()        (machine_arch_type == MACH_TYPE_NOKIA770)
++#else
++# define machine_is_nokia770()        (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX0106
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PNX0106
++# endif
++# define machine_is_pnx0106() (machine_arch_type == MACH_TYPE_PNX0106)
++#else
++# define machine_is_pnx0106() (0)
++#endif
++
++#ifdef CONFIG_MACH_HX21XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HX21XX
++# endif
++# define machine_is_hx21xx()  (machine_arch_type == MACH_TYPE_HX21XX)
++#else
++# define machine_is_hx21xx()  (0)
++#endif
++
++#ifdef CONFIG_MACH_FARADAY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FARADAY
++# endif
++# define machine_is_faraday() (machine_arch_type == MACH_TYPE_FARADAY)
++#else
++# define machine_is_faraday() (0)
++#endif
++
++#ifdef CONFIG_MACH_SBC9312
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SBC9312
++# endif
++# define machine_is_sbc9312() (machine_arch_type == MACH_TYPE_SBC9312)
++#else
++# define machine_is_sbc9312() (0)
++#endif
++
++#ifdef CONFIG_MACH_BATMAN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BATMAN
++# endif
++# define machine_is_batman()  (machine_arch_type == MACH_TYPE_BATMAN)
++#else
++# define machine_is_batman()  (0)
++#endif
++
++#ifdef CONFIG_MACH_JPD201
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_JPD201
++# endif
++# define machine_is_jpd201()  (machine_arch_type == MACH_TYPE_JPD201)
++#else
++# define machine_is_jpd201()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MIPSA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MIPSA
++# endif
++# define machine_is_mipsa()   (machine_arch_type == MACH_TYPE_MIPSA)
++#else
++# define machine_is_mipsa()   (0)
++#endif
++
++#ifdef CONFIG_MACH_KACOM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_KACOM
++# endif
++# define machine_is_kacom()   (machine_arch_type == MACH_TYPE_KACOM)
++#else
++# define machine_is_kacom()   (0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCOCPU
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SWARCOCPU
++# endif
++# define machine_is_swarcocpu()       (machine_arch_type == MACH_TYPE_SWARCOCPU)
++#else
++# define machine_is_swarcocpu()       (0)
++#endif
++
++#ifdef CONFIG_MACH_SWARCODSL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SWARCODSL
++# endif
++# define machine_is_swarcodsl()       (machine_arch_type == MACH_TYPE_SWARCODSL)
++#else
++# define machine_is_swarcodsl()       (0)
++#endif
++
++#ifdef CONFIG_MACH_BLUEANGEL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BLUEANGEL
++# endif
++# define machine_is_blueangel()       (machine_arch_type == MACH_TYPE_BLUEANGEL)
++#else
++# define machine_is_blueangel()       (0)
++#endif
++
++#ifdef CONFIG_MACH_HAIRYGRAMA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HAIRYGRAMA
++# endif
++# define machine_is_hairygrama()      (machine_arch_type == MACH_TYPE_HAIRYGRAMA)
++#else
++# define machine_is_hairygrama()      (0)
++#endif
++
++#ifdef CONFIG_MACH_BANFF
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BANFF
++# endif
++# define machine_is_banff()   (machine_arch_type == MACH_TYPE_BANFF)
++#else
++# define machine_is_banff()   (0)
++#endif
++
++#ifdef CONFIG_MACH_CARMEVA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CARMEVA
++# endif
++# define machine_is_carmeva() (machine_arch_type == MACH_TYPE_CARMEVA)
++#else
++# define machine_is_carmeva() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAM255
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SAM255
++# endif
++# define machine_is_sam255()  (machine_arch_type == MACH_TYPE_SAM255)
++#else
++# define machine_is_sam255()  (0)
++#endif
++
++#ifdef CONFIG_MACH_PPM10
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PPM10
++# endif
++# define machine_is_ppm10()   (machine_arch_type == MACH_TYPE_PPM10)
++#else
++# define machine_is_ppm10()   (0)
++#endif
++
++#ifdef CONFIG_MACH_EDB9315A
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EDB9315A
++# endif
++# define machine_is_edb9315a()        (machine_arch_type == MACH_TYPE_EDB9315A)
++#else
++# define machine_is_edb9315a()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SUNSET
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SUNSET
++# endif
++# define machine_is_sunset()  (machine_arch_type == MACH_TYPE_SUNSET)
++#else
++# define machine_is_sunset()  (0)
++#endif
++
++#ifdef CONFIG_MACH_STARGATE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_STARGATE2
++# endif
++# define machine_is_stargate2()       (machine_arch_type == MACH_TYPE_STARGATE2)
++#else
++# define machine_is_stargate2()       (0)
++#endif
++
++#ifdef CONFIG_MACH_INTELMOTE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_INTELMOTE2
++# endif
++# define machine_is_intelmote2()      (machine_arch_type == MACH_TYPE_INTELMOTE2)
++#else
++# define machine_is_intelmote2()      (0)
++#endif
++
++#ifdef CONFIG_MACH_TRIZEPS4
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TRIZEPS4
++# endif
++# define machine_is_trizeps4()        (machine_arch_type == MACH_TYPE_TRIZEPS4)
++#else
++# define machine_is_trizeps4()        (0)
++#endif
++
++#ifdef CONFIG_MACH_MAINSTONE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MAINSTONE2
++# endif
++# define machine_is_mainstone2()      (machine_arch_type == MACH_TYPE_MAINSTONE2)
++#else
++# define machine_is_mainstone2()      (0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_IXP42X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EZ_IXP42X
++# endif
++# define machine_is_ez_ixp42x()       (machine_arch_type == MACH_TYPE_EZ_IXP42X)
++#else
++# define machine_is_ez_ixp42x()       (0)
++#endif
++
++#ifdef CONFIG_MACH_TAPWAVE_ZODIAC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TAPWAVE_ZODIAC
++# endif
++# define machine_is_tapwave_zodiac()  (machine_arch_type == MACH_TYPE_TAPWAVE_ZODIAC)
++#else
++# define machine_is_tapwave_zodiac()  (0)
++#endif
++
++#ifdef CONFIG_MACH_UNIVERSALMETER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_UNIVERSALMETER
++# endif
++# define machine_is_universalmeter()  (machine_arch_type == MACH_TYPE_UNIVERSALMETER)
++#else
++# define machine_is_universalmeter()  (0)
++#endif
++
++#ifdef CONFIG_MACH_HICOARM9
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HICOARM9
++# endif
++# define machine_is_hicoarm9()        (machine_arch_type == MACH_TYPE_HICOARM9)
++#else
++# define machine_is_hicoarm9()        (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4008
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PNX4008
++# endif
++# define machine_is_pnx4008() (machine_arch_type == MACH_TYPE_PNX4008)
++#else
++# define machine_is_pnx4008() (0)
++#endif
++
++#ifdef CONFIG_MACH_KWS6000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_KWS6000
++# endif
++# define machine_is_kws6000() (machine_arch_type == MACH_TYPE_KWS6000)
++#else
++# define machine_is_kws6000() (0)
++#endif
++
++#ifdef CONFIG_MACH_PORTUX920T
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PORTUX920T
++# endif
++# define machine_is_portux920t()      (machine_arch_type == MACH_TYPE_PORTUX920T)
++#else
++# define machine_is_portux920t()      (0)
++#endif
++
++#ifdef CONFIG_MACH_EZ_X5
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EZ_X5
++# endif
++# define machine_is_ez_x5()   (machine_arch_type == MACH_TYPE_EZ_X5)
++#else
++# define machine_is_ez_x5()   (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_RUDOLPH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_RUDOLPH
++# endif
++# define machine_is_omap_rudolph()    (machine_arch_type == MACH_TYPE_OMAP_RUDOLPH)
++#else
++# define machine_is_omap_rudolph()    (0)
++#endif
++
++#ifdef CONFIG_MACH_CPUAT91
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CPUAT91
++# endif
++# define machine_is_cpuat91() (machine_arch_type == MACH_TYPE_CPUAT91)
++#else
++# define machine_is_cpuat91() (0)
++#endif
++
++#ifdef CONFIG_MACH_REA9200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_REA9200
++# endif
++# define machine_is_rea9200() (machine_arch_type == MACH_TYPE_REA9200)
++#else
++# define machine_is_rea9200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ACTS_PUNE_SA1110
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ACTS_PUNE_SA1110
++# endif
++# define machine_is_acts_pune_sa1110()        (machine_arch_type == MACH_TYPE_ACTS_PUNE_SA1110)
++#else
++# define machine_is_acts_pune_sa1110()        (0)
++#endif
++
++#ifdef CONFIG_MACH_IXP425
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IXP425
++# endif
++# define machine_is_ixp425()  (machine_arch_type == MACH_TYPE_IXP425)
++#else
++# define machine_is_ixp425()  (0)
++#endif
++
++#ifdef CONFIG_MACH_I30030ADS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_I30030ADS
++# endif
++# define machine_is_i30030ads()       (machine_arch_type == MACH_TYPE_I30030ADS)
++#else
++# define machine_is_i30030ads()       (0)
++#endif
++
++#ifdef CONFIG_MACH_PERCH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PERCH
++# endif
++# define machine_is_perch()   (machine_arch_type == MACH_TYPE_PERCH)
++#else
++# define machine_is_perch()   (0)
++#endif
++
++#ifdef CONFIG_MACH_EIS05R1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EIS05R1
++# endif
++# define machine_is_eis05r1() (machine_arch_type == MACH_TYPE_EIS05R1)
++#else
++# define machine_is_eis05r1() (0)
++#endif
++
++#ifdef CONFIG_MACH_PEPPERPAD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PEPPERPAD
++# endif
++# define machine_is_pepperpad()       (machine_arch_type == MACH_TYPE_PEPPERPAD)
++#else
++# define machine_is_pepperpad()       (0)
++#endif
++
++#ifdef CONFIG_MACH_SB3010
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SB3010
++# endif
++# define machine_is_sb3010()  (machine_arch_type == MACH_TYPE_SB3010)
++#else
++# define machine_is_sb3010()  (0)
++#endif
++
++#ifdef CONFIG_MACH_RM9200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_RM9200
++# endif
++# define machine_is_rm9200()  (machine_arch_type == MACH_TYPE_RM9200)
++#else
++# define machine_is_rm9200()  (0)
++#endif
++
++#ifdef CONFIG_MACH_DMA03
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DMA03
++# endif
++# define machine_is_dma03()   (machine_arch_type == MACH_TYPE_DMA03)
++#else
++# define machine_is_dma03()   (0)
++#endif
++
++#ifdef CONFIG_MACH_ROAD_S101
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ROAD_S101
++# endif
++# define machine_is_road_s101()       (machine_arch_type == MACH_TYPE_ROAD_S101)
++#else
++# define machine_is_road_s101()       (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_A
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IQ_NEXTGEN_A
++# endif
++# define machine_is_iq_nextgen_a()    (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_A)
++#else
++# define machine_is_iq_nextgen_a()    (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_B
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IQ_NEXTGEN_B
++# endif
++# define machine_is_iq_nextgen_b()    (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_B)
++#else
++# define machine_is_iq_nextgen_b()    (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_C
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IQ_NEXTGEN_C
++# endif
++# define machine_is_iq_nextgen_c()    (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_C)
++#else
++# define machine_is_iq_nextgen_c()    (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IQ_NEXTGEN_D
++# endif
++# define machine_is_iq_nextgen_d()    (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_D)
++#else
++# define machine_is_iq_nextgen_d()    (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ_NEXTGEN_E
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IQ_NEXTGEN_E
++# endif
++# define machine_is_iq_nextgen_e()    (machine_arch_type == MACH_TYPE_IQ_NEXTGEN_E)
++#else
++# define machine_is_iq_nextgen_e()    (0)
++#endif
++
++#ifdef CONFIG_MACH_MALLOW_AT91
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MALLOW_AT91
++# endif
++# define machine_is_mallow_at91()     (machine_arch_type == MACH_TYPE_MALLOW_AT91)
++#else
++# define machine_is_mallow_at91()     (0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_I
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CYBERTRACKER_I
++# endif
++# define machine_is_cybertracker_i()  (machine_arch_type == MACH_TYPE_CYBERTRACKER_I)
++#else
++# define machine_is_cybertracker_i()  (0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC931X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_GESBC931X
++# endif
++# define machine_is_gesbc931x()       (machine_arch_type == MACH_TYPE_GESBC931X)
++#else
++# define machine_is_gesbc931x()       (0)
++#endif
++
++#ifdef CONFIG_MACH_CENTIPAD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CENTIPAD
++# endif
++# define machine_is_centipad()        (machine_arch_type == MACH_TYPE_CENTIPAD)
++#else
++# define machine_is_centipad()        (0)
++#endif
++
++#ifdef CONFIG_MACH_ARMSOC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ARMSOC
++# endif
++# define machine_is_armsoc()  (machine_arch_type == MACH_TYPE_ARMSOC)
++#else
++# define machine_is_armsoc()  (0)
++#endif
++
++#ifdef CONFIG_MACH_SE4200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SE4200
++# endif
++# define machine_is_se4200()  (machine_arch_type == MACH_TYPE_SE4200)
++#else
++# define machine_is_se4200()  (0)
++#endif
++
++#ifdef CONFIG_MACH_EMS197A
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EMS197A
++# endif
++# define machine_is_ems197a() (machine_arch_type == MACH_TYPE_EMS197A)
++#else
++# define machine_is_ems197a() (0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MICRO9
++# endif
++# define machine_is_micro9()  (machine_arch_type == MACH_TYPE_MICRO9)
++#else
++# define machine_is_micro9()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MICRO9L
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MICRO9L
++# endif
++# define machine_is_micro9l() (machine_arch_type == MACH_TYPE_MICRO9L)
++#else
++# define machine_is_micro9l() (0)
++#endif
++
++#ifdef CONFIG_MACH_UC5471DSP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_UC5471DSP
++# endif
++# define machine_is_uc5471dsp()       (machine_arch_type == MACH_TYPE_UC5471DSP)
++#else
++# define machine_is_uc5471dsp()       (0)
++#endif
++
++#ifdef CONFIG_MACH_SJ5471ENG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SJ5471ENG
++# endif
++# define machine_is_sj5471eng()       (machine_arch_type == MACH_TYPE_SJ5471ENG)
++#else
++# define machine_is_sj5471eng()       (0)
++#endif
++
++#ifdef CONFIG_MACH_CMPXA26X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CMPXA26X
++# endif
++# define machine_is_none()    (machine_arch_type == MACH_TYPE_CMPXA26X)
++#else
++# define machine_is_none()    (0)
++#endif
++
++#ifdef CONFIG_MACH_NC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NC
++# endif
++# define machine_is_nc1()     (machine_arch_type == MACH_TYPE_NC)
++#else
++# define machine_is_nc1()     (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_PALMTE
++# endif
++# define machine_is_omap_palmte()     (machine_arch_type == MACH_TYPE_OMAP_PALMTE)
++#else
++# define machine_is_omap_palmte()     (0)
++#endif
++
++#ifdef CONFIG_MACH_AJAX52X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AJAX52X
++# endif
++# define machine_is_ajax52x() (machine_arch_type == MACH_TYPE_AJAX52X)
++#else
++# define machine_is_ajax52x() (0)
++#endif
++
++#ifdef CONFIG_MACH_SIRIUSTAR
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SIRIUSTAR
++# endif
++# define machine_is_siriustar()       (machine_arch_type == MACH_TYPE_SIRIUSTAR)
++#else
++# define machine_is_siriustar()       (0)
++#endif
++
++#ifdef CONFIG_MACH_IODATA_HDLG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IODATA_HDLG
++# endif
++# define machine_is_iodata_hdlg()     (machine_arch_type == MACH_TYPE_IODATA_HDLG)
++#else
++# define machine_is_iodata_hdlg()     (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200UTL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AT91RM9200UTL
++# endif
++# define machine_is_at91rm9200utl()   (machine_arch_type == MACH_TYPE_AT91RM9200UTL)
++#else
++# define machine_is_at91rm9200utl()   (0)
++#endif
++
++#ifdef CONFIG_MACH_BIOSAFE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BIOSAFE
++# endif
++# define machine_is_biosafe() (machine_arch_type == MACH_TYPE_BIOSAFE)
++#else
++# define machine_is_biosafe() (0)
++#endif
++
++#ifdef CONFIG_MACH_MP1000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MP1000
++# endif
++# define machine_is_mp1000()  (machine_arch_type == MACH_TYPE_MP1000)
++#else
++# define machine_is_mp1000()  (0)
++#endif
++
++#ifdef CONFIG_MACH_PARSY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PARSY
++# endif
++# define machine_is_parsy()   (machine_arch_type == MACH_TYPE_PARSY)
++#else
++# define machine_is_parsy()   (0)
++#endif
++
++#ifdef CONFIG_MACH_CCXP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CCXP
++# endif
++# define machine_is_ccxp270() (machine_arch_type == MACH_TYPE_CCXP)
++#else
++# define machine_is_ccxp270() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_GSAMPLE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_GSAMPLE
++# endif
++# define machine_is_omap_gsample()    (machine_arch_type == MACH_TYPE_OMAP_GSAMPLE)
++#else
++# define machine_is_omap_gsample()    (0)
++#endif
++
++#ifdef CONFIG_MACH_REALVIEW_EB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_REALVIEW_EB
++# endif
++# define machine_is_realview_eb()     (machine_arch_type == MACH_TYPE_REALVIEW_EB)
++#else
++# define machine_is_realview_eb()     (0)
++#endif
++
++#ifdef CONFIG_MACH_SAMOA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SAMOA
++# endif
++# define machine_is_samoa()   (machine_arch_type == MACH_TYPE_SAMOA)
++#else
++# define machine_is_samoa()   (0)
++#endif
++
++#ifdef CONFIG_MACH_T3XSCALE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_T3XSCALE
++# endif
++# define machine_is_t3xscale()        (machine_arch_type == MACH_TYPE_T3XSCALE)
++#else
++# define machine_is_t3xscale()        (0)
++#endif
++
++#ifdef CONFIG_MACH_I878
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_I878
++# endif
++# define machine_is_i878()    (machine_arch_type == MACH_TYPE_I878)
++#else
++# define machine_is_i878()    (0)
++#endif
++
++#ifdef CONFIG_MACH_BORZOI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BORZOI
++# endif
++# define machine_is_borzoi()  (machine_arch_type == MACH_TYPE_BORZOI)
++#else
++# define machine_is_borzoi()  (0)
++#endif
++
++#ifdef CONFIG_MACH_GECKO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_GECKO
++# endif
++# define machine_is_gecko()   (machine_arch_type == MACH_TYPE_GECKO)
++#else
++# define machine_is_gecko()   (0)
++#endif
++
++#ifdef CONFIG_MACH_DS101
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DS101
++# endif
++# define machine_is_ds101()   (machine_arch_type == MACH_TYPE_DS101)
++#else
++# define machine_is_ds101()   (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_PALMTT2
++# endif
++# define machine_is_omap_palmtt2()    (machine_arch_type == MACH_TYPE_OMAP_PALMTT2)
++#else
++# define machine_is_omap_palmtt2()    (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMLD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XSCALE_PALMLD
++# endif
++# define machine_is_xscale_palmld()   (machine_arch_type == MACH_TYPE_XSCALE_PALMLD)
++#else
++# define machine_is_xscale_palmld()   (0)
++#endif
++
++#ifdef CONFIG_MACH_CC9C
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CC9C
++# endif
++# define machine_is_cc9c()    (machine_arch_type == MACH_TYPE_CC9C)
++#else
++# define machine_is_cc9c()    (0)
++#endif
++
++#ifdef CONFIG_MACH_SBC1670
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SBC1670
++# endif
++# define machine_is_sbc1670() (machine_arch_type == MACH_TYPE_SBC1670)
++#else
++# define machine_is_sbc1670() (0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP28X5
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IXDP28X5
++# endif
++# define machine_is_ixdp28x5()        (machine_arch_type == MACH_TYPE_IXDP28X5)
++#else
++# define machine_is_ixdp28x5()        (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_PALMTT
++# endif
++# define machine_is_omap_palmtt()     (machine_arch_type == MACH_TYPE_OMAP_PALMTT)
++#else
++# define machine_is_omap_palmtt()     (0)
++#endif
++
++#ifdef CONFIG_MACH_ML696K
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ML696K
++# endif
++# define machine_is_ml696k()  (machine_arch_type == MACH_TYPE_ML696K)
++#else
++# define machine_is_ml696k()  (0)
++#endif
++
++#ifdef CONFIG_MACH_ARCOM_ZEUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ARCOM_ZEUS
++# endif
++# define machine_is_arcom_zeus()      (machine_arch_type == MACH_TYPE_ARCOM_ZEUS)
++#else
++# define machine_is_arcom_zeus()      (0)
++#endif
++
++#ifdef CONFIG_MACH_OSIRIS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OSIRIS
++# endif
++# define machine_is_osiris()  (machine_arch_type == MACH_TYPE_OSIRIS)
++#else
++# define machine_is_osiris()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MAESTRO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MAESTRO
++# endif
++# define machine_is_maestro() (machine_arch_type == MACH_TYPE_MAESTRO)
++#else
++# define machine_is_maestro() (0)
++#endif
++
++#ifdef CONFIG_MACH_TUNGE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TUNGE2
++# endif
++# define machine_is_tunge2()  (machine_arch_type == MACH_TYPE_TUNGE2)
++#else
++# define machine_is_tunge2()  (0)
++#endif
++
++#ifdef CONFIG_MACH_IXBBM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IXBBM
++# endif
++# define machine_is_ixbbm()   (machine_arch_type == MACH_TYPE_IXBBM)
++#else
++# define machine_is_ixbbm()   (0)
++#endif
++
++#ifdef CONFIG_MACH_MX27
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MX27
++# endif
++# define machine_is_mx27ads() (machine_arch_type == MACH_TYPE_MX27)
++#else
++# define machine_is_mx27ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_AX8004
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AX8004
++# endif
++# define machine_is_ax8004()  (machine_arch_type == MACH_TYPE_AX8004)
++#else
++# define machine_is_ax8004()  (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91SAM9261EK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AT91SAM9261EK
++# endif
++# define machine_is_at91sam9261ek()   (machine_arch_type == MACH_TYPE_AT91SAM9261EK)
++#else
++# define machine_is_at91sam9261ek()   (0)
++#endif
++
++#ifdef CONFIG_MACH_LOFT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_LOFT
++# endif
++# define machine_is_loft()    (machine_arch_type == MACH_TYPE_LOFT)
++#else
++# define machine_is_loft()    (0)
++#endif
++
++#ifdef CONFIG_MACH_MAGPIE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MAGPIE
++# endif
++# define machine_is_magpie()  (machine_arch_type == MACH_TYPE_MAGPIE)
++#else
++# define machine_is_magpie()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MX21
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MX21
++# endif
++# define machine_is_mx21ads() (machine_arch_type == MACH_TYPE_MX21)
++#else
++# define machine_is_mx21ads() (0)
++#endif
++
++#ifdef CONFIG_MACH_MB87M3400
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MB87M3400
++# endif
++# define machine_is_mb87m3400()       (machine_arch_type == MACH_TYPE_MB87M3400)
++#else
++# define machine_is_mb87m3400()       (0)
++#endif
++
++#ifdef CONFIG_MACH_MGUARD_DELTA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MGUARD_DELTA
++# endif
++# define machine_is_mguard_delta()    (machine_arch_type == MACH_TYPE_MGUARD_DELTA)
++#else
++# define machine_is_mguard_delta()    (0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_DVDP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DAVINCI_DVDP
++# endif
++# define machine_is_davinci_dvdp()    (machine_arch_type == MACH_TYPE_DAVINCI_DVDP)
++#else
++# define machine_is_davinci_dvdp()    (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCUNIVERSAL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HTCUNIVERSAL
++# endif
++# define machine_is_htcuniversal()    (machine_arch_type == MACH_TYPE_HTCUNIVERSAL)
++#else
++# define machine_is_htcuniversal()    (0)
++#endif
++
++#ifdef CONFIG_MACH_TPAD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TPAD
++# endif
++# define machine_is_tpad()    (machine_arch_type == MACH_TYPE_TPAD)
++#else
++# define machine_is_tpad()    (0)
++#endif
++
++#ifdef CONFIG_MACH_ROVERP3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ROVERP3
++# endif
++# define machine_is_roverp3() (machine_arch_type == MACH_TYPE_ROVERP3)
++#else
++# define machine_is_roverp3() (0)
++#endif
++
++#ifdef CONFIG_MACH_JORNADA928
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_JORNADA928
++# endif
++# define machine_is_jornada928()      (machine_arch_type == MACH_TYPE_JORNADA928)
++#else
++# define machine_is_jornada928()      (0)
++#endif
++
++#ifdef CONFIG_MACH_MV88FXX81
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MV88FXX81
++# endif
++# define machine_is_mv88fxx81()       (machine_arch_type == MACH_TYPE_MV88FXX81)
++#else
++# define machine_is_mv88fxx81()       (0)
++#endif
++
++#ifdef CONFIG_MACH_STMP36XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_STMP36XX
++# endif
++# define machine_is_stmp36xx()        (machine_arch_type == MACH_TYPE_STMP36XX)
++#else
++# define machine_is_stmp36xx()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SXNI79524
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SXNI79524
++# endif
++# define machine_is_sxni79524()       (machine_arch_type == MACH_TYPE_SXNI79524)
++#else
++# define machine_is_sxni79524()       (0)
++#endif
++
++#ifdef CONFIG_MACH_AMS_DELTA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AMS_DELTA
++# endif
++# define machine_is_ams_delta()       (machine_arch_type == MACH_TYPE_AMS_DELTA)
++#else
++# define machine_is_ams_delta()       (0)
++#endif
++
++#ifdef CONFIG_MACH_URANIUM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_URANIUM
++# endif
++# define machine_is_uranium() (machine_arch_type == MACH_TYPE_URANIUM)
++#else
++# define machine_is_uranium() (0)
++#endif
++
++#ifdef CONFIG_MACH_UCON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_UCON
++# endif
++# define machine_is_ucon()    (machine_arch_type == MACH_TYPE_UCON)
++#else
++# define machine_is_ucon()    (0)
++#endif
++
++#ifdef CONFIG_MACH_NAS100D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NAS100D
++# endif
++# define machine_is_nas100d() (machine_arch_type == MACH_TYPE_NAS100D)
++#else
++# define machine_is_nas100d() (0)
++#endif
++
++#ifdef CONFIG_MACH_L083_1000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_L083_1000
++# endif
++# define machine_is_l083()    (machine_arch_type == MACH_TYPE_L083_1000)
++#else
++# define machine_is_l083()    (0)
++#endif
++
++#ifdef CONFIG_MACH_EZX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EZX
++# endif
++# define machine_is_ezx()     (machine_arch_type == MACH_TYPE_EZX)
++#else
++# define machine_is_ezx()     (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX5220
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PNX5220
++# endif
++# define machine_is_pnx5220() (machine_arch_type == MACH_TYPE_PNX5220)
++#else
++# define machine_is_pnx5220() (0)
++#endif
++
++#ifdef CONFIG_MACH_BUTTE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BUTTE
++# endif
++# define machine_is_butte()   (machine_arch_type == MACH_TYPE_BUTTE)
++#else
++# define machine_is_butte()   (0)
++#endif
++
++#ifdef CONFIG_MACH_SRM2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SRM2
++# endif
++# define machine_is_srm2()    (machine_arch_type == MACH_TYPE_SRM2)
++#else
++# define machine_is_srm2()    (0)
++#endif
++
++#ifdef CONFIG_MACH_DSBR
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DSBR
++# endif
++# define machine_is_dsbr()    (machine_arch_type == MACH_TYPE_DSBR)
++#else
++# define machine_is_dsbr()    (0)
++#endif
++
++#ifdef CONFIG_MACH_CRYSTALBALL
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CRYSTALBALL
++# endif
++# define machine_is_crystalball()     (machine_arch_type == MACH_TYPE_CRYSTALBALL)
++#else
++# define machine_is_crystalball()     (0)
++#endif
++
++#ifdef CONFIG_MACH_TINYPXA27X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TINYPXA27X
++# endif
++# define machine_is_tinypxa27x()      (machine_arch_type == MACH_TYPE_TINYPXA27X)
++#else
++# define machine_is_tinypxa27x()      (0)
++#endif
++
++#ifdef CONFIG_MACH_HERBIE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HERBIE
++# endif
++# define machine_is_herbie()  (machine_arch_type == MACH_TYPE_HERBIE)
++#else
++# define machine_is_herbie()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MAGICIAN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MAGICIAN
++# endif
++# define machine_is_magician()        (machine_arch_type == MACH_TYPE_MAGICIAN)
++#else
++# define machine_is_magician()        (0)
++#endif
++
++#ifdef CONFIG_MACH_CM4002
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CM4002
++# endif
++# define machine_is_cm4002()  (machine_arch_type == MACH_TYPE_CM4002)
++#else
++# define machine_is_cm4002()  (0)
++#endif
++
++#ifdef CONFIG_MACH_B4
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_B4
++# endif
++# define machine_is_b4()      (machine_arch_type == MACH_TYPE_B4)
++#else
++# define machine_is_b4()      (0)
++#endif
++
++#ifdef CONFIG_MACH_MAUI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MAUI
++# endif
++# define machine_is_maui()    (machine_arch_type == MACH_TYPE_MAUI)
++#else
++# define machine_is_maui()    (0)
++#endif
++
++#ifdef CONFIG_MACH_CYBERTRACKER_G
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CYBERTRACKER_G
++# endif
++# define machine_is_cybertracker_g()  (machine_arch_type == MACH_TYPE_CYBERTRACKER_G)
++#else
++# define machine_is_cybertracker_g()  (0)
++#endif
++
++#ifdef CONFIG_MACH_NXDKN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NXDKN
++# endif
++# define machine_is_nxdkn()   (machine_arch_type == MACH_TYPE_NXDKN)
++#else
++# define machine_is_nxdkn()   (0)
++#endif
++
++#ifdef CONFIG_MACH_MIO8390
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MIO8390
++# endif
++# define machine_is_mio8390() (machine_arch_type == MACH_TYPE_MIO8390)
++#else
++# define machine_is_mio8390() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMI_BOARD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMI_BOARD
++# endif
++# define machine_is_omi_board()       (machine_arch_type == MACH_TYPE_OMI_BOARD)
++#else
++# define machine_is_omi_board()       (0)
++#endif
++
++#ifdef CONFIG_MACH_MX21CIV
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MX21CIV
++# endif
++# define machine_is_mx21civ() (machine_arch_type == MACH_TYPE_MX21CIV)
++#else
++# define machine_is_mx21civ() (0)
++#endif
++
++#ifdef CONFIG_MACH_MAHI_CDAC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MAHI_CDAC
++# endif
++# define machine_is_mahi_cdac()       (machine_arch_type == MACH_TYPE_MAHI_CDAC)
++#else
++# define machine_is_mahi_cdac()       (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XSCALE_PALMTX
++# endif
++# define machine_is_xscale_palmtx()   (machine_arch_type == MACH_TYPE_XSCALE_PALMTX)
++#else
++# define machine_is_xscale_palmtx()   (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2413
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_S3C2413
++# endif
++# define machine_is_s3c2413() (machine_arch_type == MACH_TYPE_S3C2413)
++#else
++# define machine_is_s3c2413() (0)
++#endif
++
++#ifdef CONFIG_MACH_SAMSYS_EP0
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SAMSYS_EP0
++# endif
++# define machine_is_samsys_ep0()      (machine_arch_type == MACH_TYPE_SAMSYS_EP0)
++#else
++# define machine_is_samsys_ep0()      (0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_WG302V1
++# endif
++# define machine_is_wg302v1() (machine_arch_type == MACH_TYPE_WG302V1)
++#else
++# define machine_is_wg302v1() (0)
++#endif
++
++#ifdef CONFIG_MACH_WG302V2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_WG302V2
++# endif
++# define machine_is_wg302v2() (machine_arch_type == MACH_TYPE_WG302V2)
++#else
++# define machine_is_wg302v2() (0)
++#endif
++
++#ifdef CONFIG_MACH_EB42X
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EB42X
++# endif
++# define machine_is_eb42x()   (machine_arch_type == MACH_TYPE_EB42X)
++#else
++# define machine_is_eb42x()   (0)
++#endif
++
++#ifdef CONFIG_MACH_IQ331ES
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IQ331ES
++# endif
++# define machine_is_iq331es() (machine_arch_type == MACH_TYPE_IQ331ES)
++#else
++# define machine_is_iq331es() (0)
++#endif
++
++#ifdef CONFIG_MACH_COSYDSP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_COSYDSP
++# endif
++# define machine_is_cosydsp() (machine_arch_type == MACH_TYPE_COSYDSP)
++#else
++# define machine_is_cosydsp() (0)
++#endif
++
++#ifdef CONFIG_MACH_UPLAT7D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_UPLAT7D
++# endif
++# define machine_is_uplat7d_proto()   (machine_arch_type == MACH_TYPE_UPLAT7D)
++#else
++# define machine_is_uplat7d_proto()   (0)
++#endif
++
++#ifdef CONFIG_MACH_PTDAVINCI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PTDAVINCI
++# endif
++# define machine_is_ptdavinci()       (machine_arch_type == MACH_TYPE_PTDAVINCI)
++#else
++# define machine_is_ptdavinci()       (0)
++#endif
++
++#ifdef CONFIG_MACH_MBUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MBUS
++# endif
++# define machine_is_mbus()    (machine_arch_type == MACH_TYPE_MBUS)
++#else
++# define machine_is_mbus()    (0)
++#endif
++
++#ifdef CONFIG_MACH_NADIA2VB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NADIA2VB
++# endif
++# define machine_is_nadia2vb()        (machine_arch_type == MACH_TYPE_NADIA2VB)
++#else
++# define machine_is_nadia2vb()        (0)
++#endif
++
++#ifdef CONFIG_MACH_R1000
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_R1000
++# endif
++# define machine_is_r1000()   (machine_arch_type == MACH_TYPE_R1000)
++#else
++# define machine_is_r1000()   (0)
++#endif
++
++#ifdef CONFIG_MACH_HW90250
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HW90250
++# endif
++# define machine_is_hw90250() (machine_arch_type == MACH_TYPE_HW90250)
++#else
++# define machine_is_hw90250() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_2430SDP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_2430SDP
++# endif
++# define machine_is_omap_2430sdp()    (machine_arch_type == MACH_TYPE_OMAP_2430SDP)
++#else
++# define machine_is_omap_2430sdp()    (0)
++#endif
++
++#ifdef CONFIG_MACH_DAVINCI_EVM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DAVINCI_EVM
++# endif
++# define machine_is_davinci_evm()     (machine_arch_type == MACH_TYPE_DAVINCI_EVM)
++#else
++# define machine_is_davinci_evm()     (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TORNADO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_TORNADO
++# endif
++# define machine_is_omap_tornado()    (machine_arch_type == MACH_TYPE_OMAP_TORNADO)
++#else
++# define machine_is_omap_tornado()    (0)
++#endif
++
++#ifdef CONFIG_MACH_OLOCREEK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OLOCREEK
++# endif
++# define machine_is_olocreek()        (machine_arch_type == MACH_TYPE_OLOCREEK)
++#else
++# define machine_is_olocreek()        (0)
++#endif
++
++#ifdef CONFIG_MACH_PALMZ72
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PALMZ72
++# endif
++# define machine_is_palmz72() (machine_arch_type == MACH_TYPE_PALMZ72)
++#else
++# define machine_is_palmz72() (0)
++#endif
++
++#ifdef CONFIG_MACH_NXDB500
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NXDB500
++# endif
++# define machine_is_nxdb500() (machine_arch_type == MACH_TYPE_NXDB500)
++#else
++# define machine_is_nxdb500() (0)
++#endif
++
++#ifdef CONFIG_MACH_APF9328
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_APF9328
++# endif
++# define machine_is_apf9328() (machine_arch_type == MACH_TYPE_APF9328)
++#else
++# define machine_is_apf9328() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_WIPOQ
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_WIPOQ
++# endif
++# define machine_is_omap_wipoq()      (machine_arch_type == MACH_TYPE_OMAP_WIPOQ)
++#else
++# define machine_is_omap_wipoq()      (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_TWIP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_TWIP
++# endif
++# define machine_is_omap_twip()       (machine_arch_type == MACH_TYPE_OMAP_TWIP)
++#else
++# define machine_is_omap_twip()       (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTREO650
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XSCALE_PALMTREO650
++# endif
++# define machine_is_xscale_treo650()  (machine_arch_type == MACH_TYPE_XSCALE_PALMTREO650)
++#else
++# define machine_is_xscale_treo650()  (0)
++#endif
++
++#ifdef CONFIG_MACH_ACUMEN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ACUMEN
++# endif
++# define machine_is_acumen()  (machine_arch_type == MACH_TYPE_ACUMEN)
++#else
++# define machine_is_acumen()  (0)
++#endif
++
++#ifdef CONFIG_MACH_XP100
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XP100
++# endif
++# define machine_is_xp100()   (machine_arch_type == MACH_TYPE_XP100)
++#else
++# define machine_is_xp100()   (0)
++#endif
++
++#ifdef CONFIG_MACH_FS2410
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FS2410
++# endif
++# define machine_is_fs2410()  (machine_arch_type == MACH_TYPE_FS2410)
++#else
++# define machine_is_fs2410()  (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA270_CERF
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PXA270_CERF
++# endif
++# define machine_is_pxa270_cerf()     (machine_arch_type == MACH_TYPE_PXA270_CERF)
++#else
++# define machine_is_pxa270_cerf()     (0)
++#endif
++
++#ifdef CONFIG_MACH_SQ2FTLPALM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SQ2FTLPALM
++# endif
++# define machine_is_sq2ftlpalm()      (machine_arch_type == MACH_TYPE_SQ2FTLPALM)
++#else
++# define machine_is_sq2ftlpalm()      (0)
++#endif
++
++#ifdef CONFIG_MACH_BSEMSERVER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BSEMSERVER
++# endif
++# define machine_is_bsemserver()      (machine_arch_type == MACH_TYPE_BSEMSERVER)
++#else
++# define machine_is_bsemserver()      (0)
++#endif
++
++#ifdef CONFIG_MACH_NETCLIENT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NETCLIENT
++# endif
++# define machine_is_netclient()       (machine_arch_type == MACH_TYPE_NETCLIENT)
++#else
++# define machine_is_netclient()       (0)
++#endif
++
++#ifdef CONFIG_MACH_XSCALE_PALMTT5
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XSCALE_PALMTT5
++# endif
++# define machine_is_xscale_palmtt5()  (machine_arch_type == MACH_TYPE_XSCALE_PALMTT5)
++#else
++# define machine_is_xscale_palmtt5()  (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMTC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_PALMTC
++# endif
++# define machine_is_xscale_palmtc()   (machine_arch_type == MACH_TYPE_OMAP_PALMTC)
++#else
++# define machine_is_xscale_palmtc()   (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_APOLLON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_APOLLON
++# endif
++# define machine_is_omap_apollon()    (machine_arch_type == MACH_TYPE_OMAP_APOLLON)
++#else
++# define machine_is_omap_apollon()    (0)
++#endif
++
++#ifdef CONFIG_MACH_MXC30030EVB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MXC30030EVB
++# endif
++# define machine_is_mxc30030evb()     (machine_arch_type == MACH_TYPE_MXC30030EVB)
++#else
++# define machine_is_mxc30030evb()     (0)
++#endif
++
++#ifdef CONFIG_MACH_REA_2D
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_REA_2D
++# endif
++# define machine_is_rea_2d()  (machine_arch_type == MACH_TYPE_REA_2D)
++#else
++# define machine_is_rea_2d()  (0)
++#endif
++
++#ifdef CONFIG_MACH_TI3E524
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TI3E524
++# endif
++# define machine_is_eti3e524()        (machine_arch_type == MACH_TYPE_TI3E524)
++#else
++# define machine_is_eti3e524()        (0)
++#endif
++
++#ifdef CONFIG_MACH_ATEB9200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ATEB9200
++# endif
++# define machine_is_ateb9200()        (machine_arch_type == MACH_TYPE_ATEB9200)
++#else
++# define machine_is_ateb9200()        (0)
++#endif
++
++#ifdef CONFIG_MACH_AUCKLAND
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AUCKLAND
++# endif
++# define machine_is_auckland()        (machine_arch_type == MACH_TYPE_AUCKLAND)
++#else
++# define machine_is_auckland()        (0)
++#endif
++
++#ifdef CONFIG_MACH_AK3320M
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AK3320M
++# endif
++# define machine_is_ak3220m() (machine_arch_type == MACH_TYPE_AK3320M)
++#else
++# define machine_is_ak3220m() (0)
++#endif
++
++#ifdef CONFIG_MACH_DURAMAX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DURAMAX
++# endif
++# define machine_is_duramax() (machine_arch_type == MACH_TYPE_DURAMAX)
++#else
++# define machine_is_duramax() (0)
++#endif
++
++#ifdef CONFIG_MACH_N35
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_N35
++# endif
++# define machine_is_n35()     (machine_arch_type == MACH_TYPE_N35)
++#else
++# define machine_is_n35()     (0)
++#endif
++
++#ifdef CONFIG_MACH_PRONGHORN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PRONGHORN
++# endif
++# define machine_is_pronghorn()       (machine_arch_type == MACH_TYPE_PRONGHORN)
++#else
++# define machine_is_pronghorn()       (0)
++#endif
++
++#ifdef CONFIG_MACH_FUNDY
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FUNDY
++# endif
++# define machine_is_fundy()   (machine_arch_type == MACH_TYPE_FUNDY)
++#else
++# define machine_is_fundy()   (0)
++#endif
++
++#ifdef CONFIG_MACH_LOGICPD_PXA270
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_LOGICPD_PXA270
++# endif
++# define machine_is_logicpd_pxa270()  (machine_arch_type == MACH_TYPE_LOGICPD_PXA270)
++#else
++# define machine_is_logicpd_pxa270()  (0)
++#endif
++
++#ifdef CONFIG_MACH_CPU777
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CPU777
++# endif
++# define machine_is_cpu777()  (machine_arch_type == MACH_TYPE_CPU777)
++#else
++# define machine_is_cpu777()  (0)
++#endif
++
++#ifdef CONFIG_MACH_SIMICON9201
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SIMICON9201
++# endif
++# define machine_is_simicon9201()     (machine_arch_type == MACH_TYPE_SIMICON9201)
++#else
++# define machine_is_simicon9201()     (0)
++#endif
++
++#ifdef CONFIG_MACH_LEAP2_HPM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_LEAP2_HPM
++# endif
++# define machine_is_leap2_hpm()       (machine_arch_type == MACH_TYPE_LEAP2_HPM)
++#else
++# define machine_is_leap2_hpm()       (0)
++#endif
++
++#ifdef CONFIG_MACH_CM922TXA10
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CM922TXA10
++# endif
++# define machine_is_cm922txa10()      (machine_arch_type == MACH_TYPE_CM922TXA10)
++#else
++# define machine_is_cm922txa10()      (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PXA
++# endif
++# define machine_is_sandgate()        (machine_arch_type == MACH_TYPE_PXA)
++#else
++# define machine_is_sandgate()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SANDGATE2
++# endif
++# define machine_is_sandgate2()       (machine_arch_type == MACH_TYPE_SANDGATE2)
++#else
++# define machine_is_sandgate2()       (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2G
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SANDGATE2G
++# endif
++# define machine_is_sandgate2g()      (machine_arch_type == MACH_TYPE_SANDGATE2G)
++#else
++# define machine_is_sandgate2g()      (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE2P
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SANDGATE2P
++# endif
++# define machine_is_sandgate2p()      (machine_arch_type == MACH_TYPE_SANDGATE2P)
++#else
++# define machine_is_sandgate2p()      (0)
++#endif
++
++#ifdef CONFIG_MACH_FRED_JACK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FRED_JACK
++# endif
++# define machine_is_fred_jack()       (machine_arch_type == MACH_TYPE_FRED_JACK)
++#else
++# define machine_is_fred_jack()       (0)
++#endif
++
++#ifdef CONFIG_MACH_TTG_COLOR1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TTG_COLOR1
++# endif
++# define machine_is_ttg_color1()      (machine_arch_type == MACH_TYPE_TTG_COLOR1)
++#else
++# define machine_is_ttg_color1()      (0)
++#endif
++
++#ifdef CONFIG_MACH_NXEB500HMI
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NXEB500HMI
++# endif
++# define machine_is_nxeb500hmi()      (machine_arch_type == MACH_TYPE_NXEB500HMI)
++#else
++# define machine_is_nxeb500hmi()      (0)
++#endif
++
++#ifdef CONFIG_MACH_NETDCU8
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NETDCU8
++# endif
++# define machine_is_netdcu8() (machine_arch_type == MACH_TYPE_NETDCU8)
++#else
++# define machine_is_netdcu8() (0)
++#endif
++
++#ifdef CONFIG_MACH_ML675050_CPU_BOA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ML675050_CPU_BOA
++# endif
++# define machine_is_ml675050_cpu_boa()        (machine_arch_type == MACH_TYPE_ML675050_CPU_BOA)
++#else
++# define machine_is_ml675050_cpu_boa()        (0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVX538
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NG_FVX538
++# endif
++# define machine_is_ng_fvx538()       (machine_arch_type == MACH_TYPE_NG_FVX538)
++#else
++# define machine_is_ng_fvx538()       (0)
++#endif
++
++#ifdef CONFIG_MACH_NG_FVS338
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NG_FVS338
++# endif
++# define machine_is_ng_fvs338()       (machine_arch_type == MACH_TYPE_NG_FVS338)
++#else
++# define machine_is_ng_fvs338()       (0)
++#endif
++
++#ifdef CONFIG_MACH_PNX4103
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PNX4103
++# endif
++# define machine_is_pnx4103() (machine_arch_type == MACH_TYPE_PNX4103)
++#else
++# define machine_is_pnx4103() (0)
++#endif
++
++#ifdef CONFIG_MACH_HESDB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HESDB
++# endif
++# define machine_is_hesdb()   (machine_arch_type == MACH_TYPE_HESDB)
++#else
++# define machine_is_hesdb()   (0)
++#endif
++
++#ifdef CONFIG_MACH_XSILO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_XSILO
++# endif
++# define machine_is_xsilo()   (machine_arch_type == MACH_TYPE_XSILO)
++#else
++# define machine_is_xsilo()   (0)
++#endif
++
++#ifdef CONFIG_MACH_ESPRESSO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ESPRESSO
++# endif
++# define machine_is_espresso()        (machine_arch_type == MACH_TYPE_ESPRESSO)
++#else
++# define machine_is_espresso()        (0)
++#endif
++
++#ifdef CONFIG_MACH_EMLC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EMLC
++# endif
++# define machine_is_emlc()    (machine_arch_type == MACH_TYPE_EMLC)
++#else
++# define machine_is_emlc()    (0)
++#endif
++
++#ifdef CONFIG_MACH_SISTERON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SISTERON
++# endif
++# define machine_is_sisteron()        (machine_arch_type == MACH_TYPE_SISTERON)
++#else
++# define machine_is_sisteron()        (0)
++#endif
++
++#ifdef CONFIG_MACH_RX1950
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_RX1950
++# endif
++# define machine_is_rx1950()  (machine_arch_type == MACH_TYPE_RX1950)
++#else
++# define machine_is_rx1950()  (0)
++#endif
++
++#ifdef CONFIG_MACH_TSC_VENUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TSC_VENUS
++# endif
++# define machine_is_tsc_venus()       (machine_arch_type == MACH_TYPE_TSC_VENUS)
++#else
++# define machine_is_tsc_venus()       (0)
++#endif
++
++#ifdef CONFIG_MACH_DS101J
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DS101J
++# endif
++# define machine_is_ds101j()  (machine_arch_type == MACH_TYPE_DS101J)
++#else
++# define machine_is_ds101j()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MXC30030ADS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MXC30030ADS
++# endif
++# define machine_is_mxc30030ads()     (machine_arch_type == MACH_TYPE_MXC30030ADS)
++#else
++# define machine_is_mxc30030ads()     (0)
++#endif
++
++#ifdef CONFIG_MACH_FUJITSU_WIMAXSOC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FUJITSU_WIMAXSOC
++# endif
++# define machine_is_fujitsu_wimaxsoc()        (machine_arch_type == MACH_TYPE_FUJITSU_WIMAXSOC)
++#else
++# define machine_is_fujitsu_wimaxsoc()        (0)
++#endif
++
++#ifdef CONFIG_MACH_DUALPCMODEM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DUALPCMODEM
++# endif
++# define machine_is_dualpcmodem()     (machine_arch_type == MACH_TYPE_DUALPCMODEM)
++#else
++# define machine_is_dualpcmodem()     (0)
++#endif
++
++#ifdef CONFIG_MACH_GESBC9312
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_GESBC9312
++# endif
++# define machine_is_gesbc9312()       (machine_arch_type == MACH_TYPE_GESBC9312)
++#else
++# define machine_is_gesbc9312()       (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCAPACHE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HTCAPACHE
++# endif
++# define machine_is_htcapache()       (machine_arch_type == MACH_TYPE_HTCAPACHE)
++#else
++# define machine_is_htcapache()       (0)
++#endif
++
++#ifdef CONFIG_MACH_IXDP435
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IXDP435
++# endif
++# define machine_is_ixdp435() (machine_arch_type == MACH_TYPE_IXDP435)
++#else
++# define machine_is_ixdp435() (0)
++#endif
++
++#ifdef CONFIG_MACH_CATPROVT100
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CATPROVT100
++# endif
++# define machine_is_catprovt100()     (machine_arch_type == MACH_TYPE_CATPROVT100)
++#else
++# define machine_is_catprovt100()     (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX1XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PICOTUX1XX
++# endif
++# define machine_is_picotux1xx()      (machine_arch_type == MACH_TYPE_PICOTUX1XX)
++#else
++# define machine_is_picotux1xx()      (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOTUX2XX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PICOTUX2XX
++# endif
++# define machine_is_picotux2xx()      (machine_arch_type == MACH_TYPE_PICOTUX2XX)
++#else
++# define machine_is_picotux2xx()      (0)
++#endif
++
++#ifdef CONFIG_MACH_DSMG600
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DSMG600
++# endif
++# define machine_is_dsmg600() (machine_arch_type == MACH_TYPE_DSMG600)
++#else
++# define machine_is_dsmg600() (0)
++#endif
++
++#ifdef CONFIG_MACH_EMPC2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EMPC2
++# endif
++# define machine_is_empc2()   (machine_arch_type == MACH_TYPE_EMPC2)
++#else
++# define machine_is_empc2()   (0)
++#endif
++
++#ifdef CONFIG_MACH_VENTURA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_VENTURA
++# endif
++# define machine_is_ventura() (machine_arch_type == MACH_TYPE_VENTURA)
++#else
++# define machine_is_ventura() (0)
++#endif
++
++#ifdef CONFIG_MACH_PHIDGET_SBC
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PHIDGET_SBC
++# endif
++# define machine_is_phidget_sbc()     (machine_arch_type == MACH_TYPE_PHIDGET_SBC)
++#else
++# define machine_is_phidget_sbc()     (0)
++#endif
++
++#ifdef CONFIG_MACH_IJ3K
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IJ3K
++# endif
++# define machine_is_ij3k()    (machine_arch_type == MACH_TYPE_IJ3K)
++#else
++# define machine_is_ij3k()    (0)
++#endif
++
++#ifdef CONFIG_MACH_PISGAH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PISGAH
++# endif
++# define machine_is_pisgah()  (machine_arch_type == MACH_TYPE_PISGAH)
++#else
++# define machine_is_pisgah()  (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_FSAMPLE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_FSAMPLE
++# endif
++# define machine_is_omap_fsample()    (machine_arch_type == MACH_TYPE_OMAP_FSAMPLE)
++#else
++# define machine_is_omap_fsample()    (0)
++#endif
++
++#ifdef CONFIG_MACH_SG720
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SG720
++# endif
++# define machine_is_sg720()   (machine_arch_type == MACH_TYPE_SG720)
++#else
++# define machine_is_sg720()   (0)
++#endif
++
++#ifdef CONFIG_MACH_REDFOX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_REDFOX
++# endif
++# define machine_is_redfox()  (machine_arch_type == MACH_TYPE_REDFOX)
++#else
++# define machine_is_redfox()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MYSH_EP9315_1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MYSH_EP9315_1
++# endif
++# define machine_is_mysh_ep9315_1()   (machine_arch_type == MACH_TYPE_MYSH_EP9315_1)
++#else
++# define machine_is_mysh_ep9315_1()   (0)
++#endif
++
++#ifdef CONFIG_MACH_TPF106
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TPF106
++# endif
++# define machine_is_tpf106()  (machine_arch_type == MACH_TYPE_TPF106)
++#else
++# define machine_is_tpf106()  (0)
++#endif
++
++#ifdef CONFIG_MACH_AT91RM9200KG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AT91RM9200KG
++# endif
++# define machine_is_at91rm9200kg()    (machine_arch_type == MACH_TYPE_AT91RM9200KG)
++#else
++# define machine_is_at91rm9200kg()    (0)
++#endif
++
++#ifdef CONFIG_MACH_SLEDB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SLEDB
++# endif
++# define machine_is_racemt2() (machine_arch_type == MACH_TYPE_SLEDB)
++#else
++# define machine_is_racemt2() (0)
++#endif
++
++#ifdef CONFIG_MACH_ONTRACK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ONTRACK
++# endif
++# define machine_is_ontrack() (machine_arch_type == MACH_TYPE_ONTRACK)
++#else
++# define machine_is_ontrack() (0)
++#endif
++
++#ifdef CONFIG_MACH_PM1200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PM1200
++# endif
++# define machine_is_pm1200()  (machine_arch_type == MACH_TYPE_PM1200)
++#else
++# define machine_is_pm1200()  (0)
++#endif
++
++#ifdef CONFIG_MACH_ESS24XXX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ESS24XXX
++# endif
++# define machine_is_ess24562()        (machine_arch_type == MACH_TYPE_ESS24XXX)
++#else
++# define machine_is_ess24562()        (0)
++#endif
++
++#ifdef CONFIG_MACH_COREMP7
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_COREMP7
++# endif
++# define machine_is_coremp7() (machine_arch_type == MACH_TYPE_COREMP7)
++#else
++# define machine_is_coremp7() (0)
++#endif
++
++#ifdef CONFIG_MACH_NEXCODER_6446
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NEXCODER_6446
++# endif
++# define machine_is_nexcoder_6446()   (machine_arch_type == MACH_TYPE_NEXCODER_6446)
++#else
++# define machine_is_nexcoder_6446()   (0)
++#endif
++
++#ifdef CONFIG_MACH_STVC8380
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_STVC8380
++# endif
++# define machine_is_stvc8380()        (machine_arch_type == MACH_TYPE_STVC8380)
++#else
++# define machine_is_stvc8380()        (0)
++#endif
++
++#ifdef CONFIG_MACH_TEKLYNX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_TEKLYNX
++# endif
++# define machine_is_teklynx() (machine_arch_type == MACH_TYPE_TEKLYNX)
++#else
++# define machine_is_teklynx() (0)
++#endif
++
++#ifdef CONFIG_MACH_CARBONADO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CARBONADO
++# endif
++# define machine_is_carbonado()       (machine_arch_type == MACH_TYPE_CARBONADO)
++#else
++# define machine_is_carbonado()       (0)
++#endif
++
++#ifdef CONFIG_MACH_SYSMOS_MP730
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SYSMOS_MP730
++# endif
++# define machine_is_sysmos_mp730()    (machine_arch_type == MACH_TYPE_SYSMOS_MP730)
++#else
++# define machine_is_sysmos_mp730()    (0)
++#endif
++
++#ifdef CONFIG_MACH_SNAPPER_CL15
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SNAPPER_CL15
++# endif
++# define machine_is_snapper_cl15()    (machine_arch_type == MACH_TYPE_SNAPPER_CL15)
++#else
++# define machine_is_snapper_cl15()    (0)
++#endif
++
++#ifdef CONFIG_MACH_PGIGIM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PGIGIM
++# endif
++# define machine_is_pgigim()  (machine_arch_type == MACH_TYPE_PGIGIM)
++#else
++# define machine_is_pgigim()  (0)
++#endif
++
++#ifdef CONFIG_MACH_PTX9160P2
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PTX9160P2
++# endif
++# define machine_is_ptx9160p2()       (machine_arch_type == MACH_TYPE_PTX9160P2)
++#else
++# define machine_is_ptx9160p2()       (0)
++#endif
++
++#ifdef CONFIG_MACH_DCORE1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DCORE1
++# endif
++# define machine_is_dcore1()  (machine_arch_type == MACH_TYPE_DCORE1)
++#else
++# define machine_is_dcore1()  (0)
++#endif
++
++#ifdef CONFIG_MACH_VICTORPXA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_VICTORPXA
++# endif
++# define machine_is_victorpxa()       (machine_arch_type == MACH_TYPE_VICTORPXA)
++#else
++# define machine_is_victorpxa()       (0)
++#endif
++
++#ifdef CONFIG_MACH_MX2DTB
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MX2DTB
++# endif
++# define machine_is_mx2dtb()  (machine_arch_type == MACH_TYPE_MX2DTB)
++#else
++# define machine_is_mx2dtb()  (0)
++#endif
++
++#ifdef CONFIG_MACH_PXA_IREX_ER0100
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PXA_IREX_ER0100
++# endif
++# define machine_is_pxa_irex_er0100() (machine_arch_type == MACH_TYPE_PXA_IREX_ER0100)
++#else
++# define machine_is_pxa_irex_er0100() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_PALMZ71
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_PALMZ71
++# endif
++# define machine_is_omap_palmz71()    (machine_arch_type == MACH_TYPE_OMAP_PALMZ71)
++#else
++# define machine_is_omap_palmz71()    (0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_DEG
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BARTEC_DEG
++# endif
++# define machine_is_bartec_deg()      (machine_arch_type == MACH_TYPE_BARTEC_DEG)
++#else
++# define machine_is_bartec_deg()      (0)
++#endif
++
++#ifdef CONFIG_MACH_HW50251
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HW50251
++# endif
++# define machine_is_hw50251() (machine_arch_type == MACH_TYPE_HW50251)
++#else
++# define machine_is_hw50251() (0)
++#endif
++
++#ifdef CONFIG_MACH_IBOX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IBOX
++# endif
++# define machine_is_ibox()    (machine_arch_type == MACH_TYPE_IBOX)
++#else
++# define machine_is_ibox()    (0)
++#endif
++
++#ifdef CONFIG_MACH_ATLASLH7A404
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ATLASLH7A404
++# endif
++# define machine_is_atlaslh7a404()    (machine_arch_type == MACH_TYPE_ATLASLH7A404)
++#else
++# define machine_is_atlaslh7a404()    (0)
++#endif
++
++#ifdef CONFIG_MACH_PT2026
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PT2026
++# endif
++# define machine_is_pt2026()  (machine_arch_type == MACH_TYPE_PT2026)
++#else
++# define machine_is_pt2026()  (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCALPINE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HTCALPINE
++# endif
++# define machine_is_htcalpine()       (machine_arch_type == MACH_TYPE_HTCALPINE)
++#else
++# define machine_is_htcalpine()       (0)
++#endif
++
++#ifdef CONFIG_MACH_BARTEC_VTU
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BARTEC_VTU
++# endif
++# define machine_is_bartec_vtu()      (machine_arch_type == MACH_TYPE_BARTEC_VTU)
++#else
++# define machine_is_bartec_vtu()      (0)
++#endif
++
++#ifdef CONFIG_MACH_VCOREII
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_VCOREII
++# endif
++# define machine_is_vcoreii() (machine_arch_type == MACH_TYPE_VCOREII)
++#else
++# define machine_is_vcoreii() (0)
++#endif
++
++#ifdef CONFIG_MACH_PDNB3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PDNB3
++# endif
++# define machine_is_pdnb3()   (machine_arch_type == MACH_TYPE_PDNB3)
++#else
++# define machine_is_pdnb3()   (0)
++#endif
++
++#ifdef CONFIG_MACH_HTCBEETLES
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HTCBEETLES
++# endif
++# define machine_is_htcbeetles()      (machine_arch_type == MACH_TYPE_HTCBEETLES)
++#else
++# define machine_is_htcbeetles()      (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C6400
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_S3C6400
++# endif
++# define machine_is_s3c6400() (machine_arch_type == MACH_TYPE_S3C6400)
++#else
++# define machine_is_s3c6400() (0)
++#endif
++
++#ifdef CONFIG_MACH_S3C2443
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_S3C2443
++# endif
++# define machine_is_s3c2443() (machine_arch_type == MACH_TYPE_S3C2443)
++#else
++# define machine_is_s3c2443() (0)
++#endif
++
++#ifdef CONFIG_MACH_OMAP_LDK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OMAP_LDK
++# endif
++# define machine_is_omap_ldk()        (machine_arch_type == MACH_TYPE_OMAP_LDK)
++#else
++# define machine_is_omap_ldk()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2460
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SMDK2460
++# endif
++# define machine_is_smdk2460()        (machine_arch_type == MACH_TYPE_SMDK2460)
++#else
++# define machine_is_smdk2460()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2440
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SMDK2440
++# endif
++# define machine_is_smdk2440()        (machine_arch_type == MACH_TYPE_SMDK2440)
++#else
++# define machine_is_smdk2440()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2412
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SMDK2412
++# endif
++# define machine_is_smdk2412()        (machine_arch_type == MACH_TYPE_SMDK2412)
++#else
++# define machine_is_smdk2412()        (0)
++#endif
++
++#ifdef CONFIG_MACH_WEBBOX
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_WEBBOX
++# endif
++# define machine_is_webbox()  (machine_arch_type == MACH_TYPE_WEBBOX)
++#else
++# define machine_is_webbox()  (0)
++#endif
++
++#ifdef CONFIG_MACH_CWWNDP
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CWWNDP
++# endif
++# define machine_is_cwwndp()  (machine_arch_type == MACH_TYPE_CWWNDP)
++#else
++# define machine_is_cwwndp()  (0)
++#endif
++
++#ifdef CONFIG_MACH_DRAGON
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DRAGON
++# endif
++# define machine_is_dragon()  (machine_arch_type == MACH_TYPE_DRAGON)
++#else
++# define machine_is_dragon()  (0)
++#endif
++
++#ifdef CONFIG_MACH_OPENDO_CPU_BOARD
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_OPENDO_CPU_BOARD
++# endif
++# define machine_is_opendo_cpu_board()        (machine_arch_type == MACH_TYPE_OPENDO_CPU_BOARD)
++#else
++# define machine_is_opendo_cpu_board()        (0)
++#endif
++
++#ifdef CONFIG_MACH_CCM2200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CCM2200
++# endif
++# define machine_is_ccm2200() (machine_arch_type == MACH_TYPE_CCM2200)
++#else
++# define machine_is_ccm2200() (0)
++#endif
++
++#ifdef CONFIG_MACH_ETWARM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ETWARM
++# endif
++# define machine_is_etwarm()  (machine_arch_type == MACH_TYPE_ETWARM)
++#else
++# define machine_is_etwarm()  (0)
++#endif
++
++#ifdef CONFIG_MACH_M93030
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_M93030
++# endif
++# define machine_is_m93030()  (machine_arch_type == MACH_TYPE_M93030)
++#else
++# define machine_is_m93030()  (0)
++#endif
++
++#ifdef CONFIG_MACH_CC7U
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CC7U
++# endif
++# define machine_is_cc7u()    (machine_arch_type == MACH_TYPE_CC7U)
++#else
++# define machine_is_cc7u()    (0)
++#endif
++
++#ifdef CONFIG_MACH_MTT_RANGER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MTT_RANGER
++# endif
++# define machine_is_mtt_ranger()      (machine_arch_type == MACH_TYPE_MTT_RANGER)
++#else
++# define machine_is_mtt_ranger()      (0)
++#endif
++
++#ifdef CONFIG_MACH_NEXUS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_NEXUS
++# endif
++# define machine_is_nexus()   (machine_arch_type == MACH_TYPE_NEXUS)
++#else
++# define machine_is_nexus()   (0)
++#endif
++
++#ifdef CONFIG_MACH_DESMAN
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_DESMAN
++# endif
++# define machine_is_desman()  (machine_arch_type == MACH_TYPE_DESMAN)
++#else
++# define machine_is_desman()  (0)
++#endif
++
++#ifdef CONFIG_MACH_BKDE303
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BKDE303
++# endif
++# define machine_is_bkde303() (machine_arch_type == MACH_TYPE_BKDE303)
++#else
++# define machine_is_bkde303() (0)
++#endif
++
++#ifdef CONFIG_MACH_SMDK2413
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SMDK2413
++# endif
++# define machine_is_smdk2413()        (machine_arch_type == MACH_TYPE_SMDK2413)
++#else
++# define machine_is_smdk2413()        (0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M7200
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AML_M7200
++# endif
++# define machine_is_aml_m7200()       (machine_arch_type == MACH_TYPE_AML_M7200)
++#else
++# define machine_is_aml_m7200()       (0)
++#endif
++
++#ifdef CONFIG_MACH_AML_M5900
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AML_M5900
++# endif
++# define machine_is_aml_m5900()       (machine_arch_type == MACH_TYPE_AML_M5900)
++#else
++# define machine_is_aml_m5900()       (0)
++#endif
++
++#ifdef CONFIG_MACH_SG640
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SG640
++# endif
++# define machine_is_sg640()   (machine_arch_type == MACH_TYPE_SG640)
++#else
++# define machine_is_sg640()   (0)
++#endif
++
++#ifdef CONFIG_MACH_EDG79524
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_EDG79524
++# endif
++# define machine_is_edg79524()        (machine_arch_type == MACH_TYPE_EDG79524)
++#else
++# define machine_is_edg79524()        (0)
++#endif
++
++#ifdef CONFIG_MACH_AI2410
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AI2410
++# endif
++# define machine_is_ai2410()  (machine_arch_type == MACH_TYPE_AI2410)
++#else
++# define machine_is_ai2410()  (0)
++#endif
++
++#ifdef CONFIG_MACH_IXP465
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_IXP465
++# endif
++# define machine_is_ixp465()  (machine_arch_type == MACH_TYPE_IXP465)
++#else
++# define machine_is_ixp465()  (0)
++#endif
++
++#ifdef CONFIG_MACH_BALLOON3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_BALLOON3
++# endif
++# define machine_is_balloon3()        (machine_arch_type == MACH_TYPE_BALLOON3)
++#else
++# define machine_is_balloon3()        (0)
++#endif
++
++#ifdef CONFIG_MACH_HEINS
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_HEINS
++# endif
++# define machine_is_heins()   (machine_arch_type == MACH_TYPE_HEINS)
++#else
++# define machine_is_heins()   (0)
++#endif
++
++#ifdef CONFIG_MACH_MPLUSEVA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MPLUSEVA
++# endif
++# define machine_is_mpluseva()        (machine_arch_type == MACH_TYPE_MPLUSEVA)
++#else
++# define machine_is_mpluseva()        (0)
++#endif
++
++#ifdef CONFIG_MACH_RT042
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_RT042
++# endif
++# define machine_is_rt042()   (machine_arch_type == MACH_TYPE_RT042)
++#else
++# define machine_is_rt042()   (0)
++#endif
++
++#ifdef CONFIG_MACH_CWIEM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CWIEM
++# endif
++# define machine_is_cwiem()   (machine_arch_type == MACH_TYPE_CWIEM)
++#else
++# define machine_is_cwiem()   (0)
++#endif
++
++#ifdef CONFIG_MACH_CM_X270
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CM_X270
++# endif
++# define machine_is_cm_x270() (machine_arch_type == MACH_TYPE_CM_X270)
++#else
++# define machine_is_cm_x270() (0)
++#endif
++
++#ifdef CONFIG_MACH_CM_X255
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_CM_X255
++# endif
++# define machine_is_cm_x255() (machine_arch_type == MACH_TYPE_CM_X255)
++#else
++# define machine_is_cm_x255() (0)
++#endif
++
++#ifdef CONFIG_MACH_ESH_AT91
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ESH_AT91
++# endif
++# define machine_is_esh_at91()        (machine_arch_type == MACH_TYPE_ESH_AT91)
++#else
++# define machine_is_esh_at91()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SANDGATE3
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SANDGATE3
++# endif
++# define machine_is_sandgate3()       (machine_arch_type == MACH_TYPE_SANDGATE3)
++#else
++# define machine_is_sandgate3()       (0)
++#endif
++
++#ifdef CONFIG_MACH_PRIMO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PRIMO
++# endif
++# define machine_is_primo()   (machine_arch_type == MACH_TYPE_PRIMO)
++#else
++# define machine_is_primo()   (0)
++#endif
++
++#ifdef CONFIG_MACH_GEMSTONE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_GEMSTONE
++# endif
++# define machine_is_gemstone()        (machine_arch_type == MACH_TYPE_GEMSTONE)
++#else
++# define machine_is_gemstone()        (0)
++#endif
++
++#ifdef CONFIG_MACH_PRONGHORNMETRO
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PRONGHORNMETRO
++# endif
++# define machine_is_pronghorn_metro() (machine_arch_type == MACH_TYPE_PRONGHORNMETRO)
++#else
++# define machine_is_pronghorn_metro() (0)
++#endif
++
++#ifdef CONFIG_MACH_SIDEWINDER
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SIDEWINDER
++# endif
++# define machine_is_sidewinder()      (machine_arch_type == MACH_TYPE_SIDEWINDER)
++#else
++# define machine_is_sidewinder()      (0)
++#endif
++
++#ifdef CONFIG_MACH_PICOMOD1
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_PICOMOD1
++# endif
++# define machine_is_picomod1()        (machine_arch_type == MACH_TYPE_PICOMOD1)
++#else
++# define machine_is_picomod1()        (0)
++#endif
++
++#ifdef CONFIG_MACH_SG590
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_SG590
++# endif
++# define machine_is_sg590()   (machine_arch_type == MACH_TYPE_SG590)
++#else
++# define machine_is_sg590()   (0)
++#endif
++
++#ifdef CONFIG_MACH_AKAI9307
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AKAI9307
++# endif
++# define machine_is_akai9307()        (machine_arch_type == MACH_TYPE_AKAI9307)
++#else
++# define machine_is_akai9307()        (0)
++#endif
++
++#ifdef CONFIG_MACH_FONTAINE
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_FONTAINE
++# endif
++# define machine_is_fontaine()        (machine_arch_type == MACH_TYPE_FONTAINE)
++#else
++# define machine_is_fontaine()        (0)
++#endif
++
++#ifdef CONFIG_MACH_WOMBAT
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_WOMBAT
++# endif
++# define machine_is_wombat()  (machine_arch_type == MACH_TYPE_WOMBAT)
++#else
++# define machine_is_wombat()  (0)
++#endif
++
++#ifdef CONFIG_MACH_ACQ300
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ACQ300
++# endif
++# define machine_is_acq300()  (machine_arch_type == MACH_TYPE_ACQ300)
++#else
++# define machine_is_acq300()  (0)
++#endif
++
++#ifdef CONFIG_MACH_MOD_270
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_MOD_270
++# endif
++# define machine_is_mod_270() (machine_arch_type == MACH_TYPE_MOD_270)
++#else
++# define machine_is_mod_270() (0)
++#endif
++
++#ifdef CONFIG_MACH_VC0820
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_VC0820
++# endif
++# define machine_is_vmc_vc0820()      (machine_arch_type == MACH_TYPE_VC0820)
++#else
++# define machine_is_vmc_vc0820()      (0)
++#endif
++
++#ifdef CONFIG_MACH_ANI_AIM
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_ANI_AIM
++# endif
++# define machine_is_ani_aim() (machine_arch_type == MACH_TYPE_ANI_AIM)
++#else
++# define machine_is_ani_aim() (0)
++#endif
++
++#ifdef CONFIG_MACH_JELLYFISH
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_JELLYFISH
++# endif
++# define machine_is_jellyfish()       (machine_arch_type == MACH_TYPE_JELLYFISH)
++#else
++# define machine_is_jellyfish()       (0)
++#endif
++
++#ifdef CONFIG_MACH_AMANITA
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_AMANITA
++# endif
++# define machine_is_amanita() (machine_arch_type == MACH_TYPE_AMANITA)
++#else
++# define machine_is_amanita() (0)
++#endif
++
++#ifdef CONFIG_MACH_VLINK
++# ifdef machine_arch_type
++#  undef machine_arch_type
++#  define machine_arch_type   __machine_arch_type
++# else
++#  define machine_arch_type   MACH_TYPE_VLINK
++# endif
++# define machine_is_vlink()   (machine_arch_type == MACH_TYPE_VLINK)
++#else
++# define machine_is_vlink()   (0)
++#endif
++
+ /*
+  * These have not yet been registered
+  */
+diff -Naur u-boot-1.1.4.org/include/config.h u-boot-1.1.4.tmp/include/config.h
+--- u-boot-1.1.4.org/include/config.h  2006-06-05 05:04:25.000000000 +0200
++++ u-boot-1.1.4.tmp/include/config.h  2006-06-05 05:03:47.000000000 +0200
+@@ -1,2 +1,2 @@
+ /* Automatically generated - do not edit */
+-#include <configs/at91rm9200dk.h>
++#include <configs/vlink.h>
+diff -Naur u-boot-1.1.4.org/include/config.mk u-boot-1.1.4.tmp/include/config.mk
+--- u-boot-1.1.4.org/include/config.mk 2006-06-05 05:04:25.000000000 +0200
++++ u-boot-1.1.4.tmp/include/config.mk 2006-06-05 05:03:47.000000000 +0200
+@@ -1,4 +1,4 @@
+ ARCH   = arm
+ CPU    = arm920t
+-BOARD  = at91rm9200dk
++BOARD  = vlink
+ SOC    = at91rm9200
+diff -Naur u-boot-1.1.4.org/include/configs/vlink.h u-boot-1.1.4.tmp/include/configs/vlink.h
+--- u-boot-1.1.4.org/include/configs/vlink.h   1970-01-01 01:00:00.000000000 +0100
++++ u-boot-1.1.4.tmp/include/configs/vlink.h   2006-06-05 03:37:15.000000000 +0200
+@@ -0,0 +1,244 @@
++/*
++ * Hamish Guthrie <hamish@prodigi.ch>
++ *
++ * Configuation settings for the Figment Designs Versalink 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
++
++// Added 2 defines to skip re-init lowlevel and relocate HCG HLH
++//
++#define CONFIG_SKIP_LOWLEVEL_INIT
++#define CONFIG_SKIP_RELOCATE_UBOOT
++
++/* ARM asynchronous clock */
++#define AT91C_MAIN_CLOCK      179712000       /* from 18.432 MHz crystal (18432000 / 4 * 39) */
++#define AT91C_MASTER_CLOCK    59904000        /* peripheral clock (AT91C_MASTER_CLOCK / 3) */
++/* #define AT91C_MASTER_CLOCK 44928000 */     /* peripheral clock (AT91C_MASTER_CLOCK / 4) */
++
++#define AT91_SLOW_CLOCK               32768   /* slow clock */
++
++#define CONFIG_ARM920T                1       /* This is an ARM920T Core      */
++#define CONFIG_AT91RM9200     1       /* It's an Atmel AT91RM9200 SoC */
++#define CONFIG_VLINK          1       /* on a Versalink Board         */
++#define CONFIG_IDENT_STRING   " FDL Versalink"
++#undef  CONFIG_USE_IRQ                        /* we don't need IRQ/FIQ stuff  */
++#define USE_920T_MMU          1
++
++#define CONFIG_CMDLINE_TAG    1       /* enable passing of ATAGs      */
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_INITRD_TAG     1
++
++#ifndef CONFIG_SKIP_LOWLEVEL_INIT
++#define CFG_USE_MAIN_OSCILLATOR               1
++/* flash */
++#define MC_PUIA_VAL   0x00000000
++#define MC_PUP_VAL    0x00000000
++#define MC_PUER_VAL   0x00000000
++#define MC_ASR_VAL    0x00000000
++#define MC_AASR_VAL   0x00000000
++#define EBI_CFGR_VAL  0x00000000
++#define SMC2_CSR_VAL  0x00003284 /* 16bit, 2 TDF, 4 WS */
++
++/* clocks */
++#define PLLAR_VAL     0x20263E04 /* 179.712000 MHz for PCK */
++#define PLLBR_VAL     0x10483E0E /* 48.054857 MHz (divider by 2 for USB) */
++#define MCKR_VAL      0x00000202 /* PCK/3 = MCK Master Clock = 59.904000MHz from PLLA */
++
++/* sdram */
++#define PIOC_ASR_VAL  0xFFFF0000 /* Configure PIOC as peripheral (D16/D31) */
++#define PIOC_BSR_VAL  0x00000000
++#define PIOC_PDR_VAL  0xFFFF0000
++#define EBI_CSA_VAL   0x00000002 /* CS1=SDRAM */
++#define SDRC_CR_VAL   0x2188c155 /* set up the SDRAM */
++#define SDRAM         0x20000000 /* address of the SDRAM */
++#define SDRAM1                0x20000080 /* address of the SDRAM */
++#define SDRAM_VAL     0x00000000 /* value written to SDRAM */
++#define SDRC_MR_VAL   0x00000002 /* Precharge All */
++#define SDRC_MR_VAL1  0x00000004 /* refresh */
++#define SDRC_MR_VAL2  0x00000003 /* Load Mode Register */
++#define SDRC_MR_VAL3  0x00000000 /* Normal Mode */
++#define SDRC_TR_VAL   0x000002E0 /* Write refresh rate */
++#endif        /* CONFIG_SKIP_LOWLEVEL_INIT */
++/*
++ * 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 */
++
++#define CONFIG_BAUDRATE 115200
++
++/*
++ * Hardware drivers
++ */
++
++/* define one of these to choose the DBGU, USART0  or USART1 as console */
++#define CONFIG_DBGU
++#undef CONFIG_USART0
++#undef CONFIG_USART1
++
++#undef        CONFIG_HWFLOW                   /* don't include RTS/CTS flow control support   */
++
++#undef        CONFIG_MODEM_SUPPORT            /* disable modem initialization stuff */
++
++#define CONFIG_BOOTDELAY      3
++/* #define CONFIG_ENV_OVERWRITE       1 */
++
++#define CONFIG_COMMANDS               \
++                     ((CONFIG_CMD_DFL | CFG_CMD_MII |\
++                      CFG_CMD_DHCP ) & \
++                    ~(CFG_CMD_BDI | \
++                      CFG_CMD_IMI | \
++                      CFG_CMD_AUTOSCRIPT | \
++                      CFG_CMD_FPGA | \
++                      CFG_CMD_MISC | \
++                      CFG_CMD_LOADS ))
++
++/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
++#include <cmd_confdefs.h>
++
++#ifndef CONFIG_VLINK
++#define CFG_MAX_NAND_DEVICE   1       /* Max number of NAND devices           */
++#define SECTORSIZE 512
++
++#define ADDR_COLUMN 1
++#define ADDR_PAGE 2
++#define ADDR_COLUMN_PAGE 3
++
++#define NAND_ChipID_UNKNOWN   0x00
++#define NAND_MAX_FLOORS 1
++#define NAND_MAX_CHIPS 1
++
++#define AT91_SMART_MEDIA_ALE (1 << 22)        /* our ALE is AD22 */
++#define AT91_SMART_MEDIA_CLE (1 << 21)        /* our CLE is AD21 */
++
++#define NAND_DISABLE_CE(nand) do { *AT91C_PIOC_SODR = AT91C_PIO_PC0;} while(0)
++#define NAND_ENABLE_CE(nand) do { *AT91C_PIOC_CODR = AT91C_PIO_PC0;} while(0)
++
++#define NAND_WAIT_READY(nand) while (!(*AT91C_PIOC_PDSR & AT91C_PIO_PC2))
++
++#define WRITE_NAND_COMMAND(d, adr) do{ *(volatile __u8 *)((unsigned long)adr | AT91_SMART_MEDIA_CLE) = (__u8)(d); } while(0)
++#define WRITE_NAND_ADDRESS(d, adr) do{ *(volatile __u8 *)((unsigned long)adr | AT91_SMART_MEDIA_ALE) = (__u8)(d); } while(0)
++#define WRITE_NAND(d, adr) do{ *(volatile __u8 *)((unsigned long)adr) = (__u8)d; } while(0)
++#define READ_NAND(adr) ((volatile unsigned char)(*(volatile __u8 *)(unsigned long)adr))
++/* the following are NOP's in our implementation */
++#define NAND_CTL_CLRALE(nandptr)
++#define NAND_CTL_SETALE(nandptr)
++#define NAND_CTL_CLRCLE(nandptr)
++#define NAND_CTL_SETCLE(nandptr)
++#endif
++
++#define CONFIG_NR_DRAM_BANKS 1
++#define PHYS_SDRAM 0x20000000
++#define PHYS_SDRAM_SIZE 0x2000000  /* 32 megs */
++
++#define CFG_MEMTEST_START             PHYS_SDRAM
++#define CFG_MEMTEST_END                       CFG_MEMTEST_START + PHYS_SDRAM_SIZE - 262144
++
++#define CONFIG_DRIVER_ETHER
++#define CONFIG_NET_RETRY_COUNT                20
++#define CONFIG_AT91C_USE_RMII
++
++#define CONFIG_HAS_DATAFLASH          1
++#define CFG_SPI_WRITE_TOUT            (5*CFG_HZ)
++#define CFG_MAX_DATAFLASH_BANKS       2
++#define CFG_MAX_DATAFLASH_PAGES       16384
++#define CFG_DATAFLASH_LOGIC_ADDR_CS0  0xC0000000      /* Logical adress for CS0 */
++#define CFG_DATAFLASH_LOGIC_ADDR_CS3  0xD0000000      /* Logical adress for CS3 */
++
++#ifdef CONFIG_VLINK
++#define PHYS_FLASH_1                  0x10000000
++#define PHYS_FLASH_SIZE                       0x200000  /* 2 megs main flash */
++#define CFG_FLASH_BASE                        PHYS_FLASH_1
++#define CFG_MAX_FLASH_BANKS           1
++#define CFG_MAX_FLASH_SECT            256
++#define CFG_FLASH_ERASE_TOUT          (2*CFG_HZ) /* Timeout for Flash Erase */
++#define CFG_FLASH_WRITE_TOUT          (2*CFG_HZ) /* Timeout for Flash Write */
++#endif
++
++#define       CFG_ENV_IS_IN_DATAFLASH
++
++#ifdef CFG_ENV_IS_IN_DATAFLASH
++#define CFG_ENV_OFFSET                        0x21000
++#define CFG_ENV_ADDR                  (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CFG_ENV_OFFSET)
++#define CFG_ENV_SIZE                  0x8400  /* 0x8000 */
++#else
++#define CFG_ENV_IS_IN_FLASH           1
++#ifdef CONFIG_SKIP_LOWLEVEL_INIT
++#define CFG_ENV_ADDR                  (PHYS_FLASH_1 + 0x60000)  /* after u-boot.bin */
++#define CFG_ENV_SIZE                  0x10000 /* sectors are 64K here */
++#else
++#define CFG_ENV_ADDR                  (PHYS_FLASH_1 + 0xe000)  /* between boot.bin and u-boot.bin.gz */
++#define CFG_ENV_SIZE                  0x2000  /* 0x8000 */
++#endif        /* CONFIG_SKIP_LOWLEVEL_INIT */
++#endif        /* CFG_ENV_IS_IN_DATAFLASH */
++
++
++#define CFG_LOAD_ADDR         0x21000000  /* default load address */
++
++#ifdef CONFIG_SKIP_LOWLEVEL_INIT
++#define CFG_BOOT_SIZE         0x00 /* 0 KBytes */
++#define CFG_U_BOOT_BASE               PHYS_FLASH_1
++#define CFG_U_BOOT_SIZE               0x60000 /* 384 KBytes */
++#else
++#define CFG_BOOT_SIZE         0x6000 /* 24 KBytes */
++#define CFG_U_BOOT_BASE               (PHYS_FLASH_1 + 0x10000)
++#define CFG_U_BOOT_SIZE               0x10000 /* 64 KBytes */
++#endif        /* CONFIG_SKIP_LOWLEVEL_INIT */
++
++#define CFG_BAUDRATE_TABLE    {115200 , 19200, 38400, 57600, 9600 }
++
++#define CFG_PROMPT            "U-Boot> "      /* Monitor Command Prompt */
++#define CFG_CBSIZE            256             /* Console I/O Buffer Size */
++#define CFG_MAXARGS           16              /* max number of command args */
++#define CFG_PBSIZE            (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
++
++#ifndef __ASSEMBLY__
++/*-----------------------------------------------------------------------
++ * Board specific extension for bd_info
++ *
++ * This structure is embedded in the global bd_info (bd_t) structure
++ * and can be used by the board specific code (eg board/...)
++ */
++
++struct bd_info_ext {
++      /* helper variable for board environment handling
++       *
++       * env_crc_valid == 0    =>   uninitialised
++       * env_crc_valid  > 0    =>   environment crc in flash is valid
++       * env_crc_valid  < 0    =>   environment crc in flash is invalid
++       */
++      int env_crc_valid;
++};
++#endif
++
++#define CFG_HZ 1000
++#define CFG_HZ_CLOCK AT91C_MASTER_CLOCK/2     /* AT91C_TC0_CMR is implicitly set to */
++                                      /* AT91C_TC_TIMER_DIV1_CLOCK */
++
++#define CONFIG_STACKSIZE      (32*1024)       /* regular stack */
++
++#ifdef CONFIG_USE_IRQ
++#error CONFIG_USE_IRQ not supported
++#endif
++
++#endif
+diff -Naur u-boot-1.1.4.org/MAKEALL u-boot-1.1.4.tmp/MAKEALL
+--- u-boot-1.1.4.org/MAKEALL   2005-12-16 17:39:27.000000000 +0100
++++ u-boot-1.1.4.tmp/MAKEALL   2006-06-05 02:44:24.000000000 +0200
+@@ -180,7 +180,7 @@
+       mx1ads          mx1fs2          omap1510inn     omap1610h2      \
+       omap1610inn     omap730p2       scb9328         smdk2400        \
+       smdk2410        trab            VCMA9           versatile       \
+-      versatileab     versatilepb     voiceblue
++      versatileab     versatilepb     voiceblue       vlink
+ "
+ #########################################################################
+diff -Naur u-boot-1.1.4.org/Makefile u-boot-1.1.4.tmp/Makefile
+--- u-boot-1.1.4.org/Makefile  2006-06-02 15:58:57.000000000 +0200
++++ u-boot-1.1.4.tmp/Makefile  2006-06-05 04:40:45.000000000 +0200
+@@ -1419,6 +1419,9 @@
+ mp2usb_config :       unconfig
+       @./mkconfig $(@:_config=) arm arm920t mp2usb NULL at91rm9200
++vlink_config  :       unconfig
++      @./mkconfig $(@:_config=) arm arm920t vlink NULL at91rm9200
++
+ ########################################################################
+ ## ARM Integrator boards - see doc/README-integrator for more info.
diff --git a/target/linux/at91-2.6/image/u-boot/patches/003-mac_init.patch b/target/linux/at91-2.6/image/u-boot/patches/003-mac_init.patch
new file mode 100644 (file)
index 0000000..ec5dffa
--- /dev/null
@@ -0,0 +1,14 @@
+--- u-boot-1.1.4.org/lib_arm/board.c   2006-06-05 12:36:22.000000000 +0200
++++ u-boot-1.1.4.tmp/lib_arm/board.c   2006-06-05 12:36:44.000000000 +0200
+@@ -332,6 +332,11 @@
+       }
+ #endif /* CONFIG_DRIVER_SMC91111 || CONFIG_DRIVER_LAN91C96 */
++#ifdef CONFIG_MACH_VLINK
++      printf("Initialising MAC address\n\r");
++      eth_init(gd->bd);
++#endif
++
+       /* Initialize from environment */
+       if ((s = getenv ("loadaddr")) != NULL) {
+               load_addr = simple_strtoul (s, NULL, 16);
diff --git a/target/linux/at91-2.6/image/u-boot/patches/004-mac_config.patch b/target/linux/at91-2.6/image/u-boot/patches/004-mac_config.patch
new file mode 100644 (file)
index 0000000..73a8260
--- /dev/null
@@ -0,0 +1,15 @@
+--- u-boot-1.1.4.ttt/include/configs/vlink.h   2006-06-05 15:57:37.000000000 +0200
++++ u-boot-1.1.4/include/configs/vlink.h       2006-06-07 13:11:01.000000000 +0200
+@@ -105,9 +105,9 @@
+ #define CONFIG_COMMANDS               \
+                      ((CONFIG_CMD_DFL | CFG_CMD_MII |\
+-                      CFG_CMD_DHCP ) & \
+-                    ~(CFG_CMD_BDI | \
+-                      CFG_CMD_IMI | \
++                      CFG_CMD_DHCP | \
++                      CFG_CMD_BDI ) & \
++                    ~(CFG_CMD_IMI | \
+                       CFG_CMD_AUTOSCRIPT | \
+                       CFG_CMD_FPGA | \
+                       CFG_CMD_MISC | \
diff --git a/target/linux/at91-2.6/image/u-boot/patches/005-remove_float.patch b/target/linux/at91-2.6/image/u-boot/patches/005-remove_float.patch
new file mode 100644 (file)
index 0000000..802c963
--- /dev/null
@@ -0,0 +1,13 @@
+diff -urN u-boot-1.1.4.old/cpu/arm920t/config.mk u-boot-1.1.4/cpu/arm920t/config.mk
+--- u-boot-1.1.4.old/cpu/arm920t/config.mk     2007-03-19 12:44:39.000000000 +0100
++++ u-boot-1.1.4/cpu/arm920t/config.mk 2007-03-20 09:23:54.000000000 +0100
+@@ -21,8 +21,7 @@
+ # MA 02111-1307 USA
+ #
+-PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 \
+-      -msoft-float
++PLATFORM_RELFLAGS += -fno-strict-aliasing  -fno-common -ffixed-r8 
+ PLATFORM_CPPFLAGS += -march=armv4
+ # =========================================================================