Signed-off-by: Graeme Russ <gr...@tss-engineering.com>
---

 arch/arm/Kconfig                 |  13 ++
 board/reachtech/g2c1/Kconfig     |  15 ++
 board/reachtech/g2c1/MAINTAINERS |   9 +
 board/reachtech/g2c1/Makefile    |  12 ++
 board/reachtech/g2c1/README      |  58 +++++
 board/reachtech/g2c1/g2c1.c      |  79 +++++++
 board/reachtech/g2c1/spl_boot.c  | 452 +++++++++++++++++++++++++++++++++++++++
 configs/g2c1_defconfig           |   3 +
 include/configs/g2c1.h           | 303 ++++++++++++++++++++++++++
 9 files changed, 944 insertions(+)
 create mode 100644 board/reachtech/g2c1/Kconfig
 create mode 100644 board/reachtech/g2c1/MAINTAINERS
 create mode 100644 board/reachtech/g2c1/Makefile
 create mode 100644 board/reachtech/g2c1/README
 create mode 100644 board/reachtech/g2c1/g2c1.c
 create mode 100644 board/reachtech/g2c1/spl_boot.c
 create mode 100644 configs/g2c1_defconfig
 create mode 100644 include/configs/g2c1.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 5eb1d03..320041e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -278,6 +278,18 @@ config TARGET_XFI3
        select CPU_ARM926EJS
        select SUPPORT_SPL
 
+config TARGET_G2C1
+       bool "Support ReachTech G2C1"
+       select CPU_ARM926EJS
+       select SUPPORT_SPL
+       help
+         This is the Reachtech G2C1 development board. It contains a
+         Freescale MX28 SoC, 128MB DDR2 SDRAM, 128MB SLC NAND, 1x Ethernet
+         port, 2x USB Host ports, 1x USB OTG port, 1x RS-232 Debug port,
+         1x RS-232 User port, 2x RS485 ports, Onboard audio, LCD Touch
+         screen interface, SD Card slot, I2C and SPI (with 2x slave select
+         lines) interfaces, CAN interface, and 8 GPIO (I2C slave interface)
+
 config TARGET_M28EVK
        bool "Support m28evk"
        select CPU_ARM926EJS
@@ -940,6 +952,7 @@ source "board/phytec/pcm051/Kconfig"
 source "board/ppcag/bg0900/Kconfig"
 source "board/pxa255_idp/Kconfig"
 source "board/raspberrypi/rpi/Kconfig"
+source "board/reachtech/g2c1/Kconfig"
 source "board/ronetix/pm9261/Kconfig"
 source "board/ronetix/pm9263/Kconfig"
 source "board/ronetix/pm9g45/Kconfig"
diff --git a/board/reachtech/g2c1/Kconfig b/board/reachtech/g2c1/Kconfig
new file mode 100644
index 0000000..5ef821f
--- /dev/null
+++ b/board/reachtech/g2c1/Kconfig
@@ -0,0 +1,15 @@
+if TARGET_G2C1
+
+config SYS_BOARD
+       default "g2c1"
+
+config SYS_VENDOR
+       default "reachtech"
+
+config SYS_SOC
+       default "mxs"
+
+config SYS_CONFIG_NAME
+       default "g2c1"
+
+endif
diff --git a/board/reachtech/g2c1/MAINTAINERS b/board/reachtech/g2c1/MAINTAINERS
new file mode 100644
index 0000000..e4e948d
--- /dev/null
+++ b/board/reachtech/g2c1/MAINTAINERS
@@ -0,0 +1,9 @@
+G2C1 BOARD
+M:     Graeme Russ <gr...@tss-engineering.com>
+S:     Maintained
+F:     board/reachtech/g2c1/
+F:     include/configs/mx28evk.h
+F:     configs/g2c1_defconfig
+F:     configs/g2c1_auart_console_defconfig
+F:     configs/g2c1_nand_defconfig
+F:     configs/g2c1_spi_defconfig
diff --git a/board/reachtech/g2c1/Makefile b/board/reachtech/g2c1/Makefile
new file mode 100644
index 0000000..9bb55e8
--- /dev/null
+++ b/board/reachtech/g2c1/Makefile
@@ -0,0 +1,12 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, w...@denx.de.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifndef CONFIG_SPL_BUILD
+obj-y  := g2c1.o
+else
+obj-y  := spl_boot.o
+endif
diff --git a/board/reachtech/g2c1/README b/board/reachtech/g2c1/README
new file mode 100644
index 0000000..41c7984
--- /dev/null
+++ b/board/reachtech/g2c1/README
@@ -0,0 +1,58 @@
+ReachTech G2C1
+==================
+
+Supported hardware: ReachTech G2C1 is supported in U-boot.
+
+Files of the MX28EVK port
+--------------------------
+
+arch/arm/cpu/arm926ejs/mxs/    - The CPU support code for the Freescale i.MX28
+arch/arm/include/asm/arch-mxs/ - Header files for the Freescale i.MX28
+board/reachtech/g2c1/          - G2C1 board specific files
+include/configs/g2c1.h         - G2C1 configuration file
+
+Jumper configuration
+---------------------
+
+To boot G2C1 from an SD card, set the boot mode DIP switches as:
+
+   * Boot Mode Select: 1 0 0 1 (Boot from SD card Slot 0 - U42)
+   * JTAG PSWITCH RESET: To the right (reset disabled)
+   * Battery Source: Down
+   * Wall 5V: Up
+   * VDD 5V: To the left (off)
+   * Hold Button: Down (off)
+
+To boot MX28EVK from SPI NOR flash, set the boot mode DIP switches as:
+
+   * Boot Mode Select: 0 0 1 0 (Boot from SSP2)
+   * JTAG PSWITCH RESET: To the right (reset disabled)
+   * Battery Source: Down
+   * Wall 5V: Up
+   * VDD 5V: To the left (off)
+   * Hold Button: Down (off)
+
+Environment Storage
+-------------------
+
+There are three targets for mx28evk:
+
+"make mx28evk_config"          - store environment variables into MMC
+
+or
+
+"make mx28evk_nand_config"     - store environment variables into NAND flash
+
+or
+
+"make mx28evk_spi_config"       - store enviroment variables into SPI NOR flash
+
+Choose the target accordingly.
+
+mx28evk does not come with SPI NOR flash populated from the factory either.
+It is possible to solder a SOIC memory on U49 or use a DIP8 on J89.
+To get SPI communication to work R320, R321,R322 and C178 need to be populated.
+Look in the schematics for the proper component values.
+
+Follow the instructions from doc/README.mxs to generate a bootable SD card or
+to generate a binary to be flashed into SPI NOR.
diff --git a/board/reachtech/g2c1/g2c1.c b/board/reachtech/g2c1/g2c1.c
new file mode 100644
index 0000000..5bf437d
--- /dev/null
+++ b/board/reachtech/g2c1/g2c1.c
@@ -0,0 +1,79 @@
+/*
+ * Reachtech G2C1 board
+ *
+ * Copyright (C) 2015 Graeme Russ <gr...@tss-engineering.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Author: Graeme Russ <gr...@tss-engineering.com>
+ *
+ * Based on m28evk.c:
+ * Copyright (C) 2011 Marek Vasut <marek.va...@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux-mx28.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <linux/mii.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <errno.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Functions
+ */
+int board_early_init_f(void)
+{
+       /* IO0 clock at 480MHz */
+       mxs_set_ioclk(MXC_IOCLK0, 480000);
+       /* IO1 clock at 480MHz */
+       mxs_set_ioclk(MXC_IOCLK1, 480000);
+
+       /* SSP0 clock at 96MHz */
+       mxs_set_sspclk(MXC_SSPCLK0, 96000, 0);
+       /* SSP2 clock at 160MHz */
+       mxs_set_sspclk(MXC_SSPCLK2, 160000, 0);
+
+       /* Turn the Run LED On */
+       gpio_direction_output(MX28_PAD_SPDIF__GPIO_3_27, 0);
+
+       /* Write Protect NAND */
+       gpio_direction_output(MX28_PAD_GPMI_RESETN__GPIO_0_28, 0);
+
+       /* Power on LCD */
+       gpio_direction_output(MX28_PAD_LCD_RESET__GPIO_3_30, 1);
+
+       /* Turn on DEBUG port CTS */
+       gpio_direction_output(MX28_PAD_SSP0_DATA5__GPIO_2_5, 1);
+
+       return 0;
+}
+
+int dram_init(void)
+{
+       return mxs_dram_init();
+}
+
+int board_init(void)
+{
+       /* Adress of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
+
+       return 0;
+}
+
+#ifdef CONFIG_CMD_MMC
+
+int board_mmc_init(bd_t *bis)
+{
+       return mxsmmc_initialize(bis, 0, NULL /* g2c1_mmc_wp */, NULL);
+}
+#endif
diff --git a/board/reachtech/g2c1/spl_boot.c b/board/reachtech/g2c1/spl_boot.c
new file mode 100644
index 0000000..25ee0e2
--- /dev/null
+++ b/board/reachtech/g2c1/spl_boot.c
@@ -0,0 +1,452 @@
+/*
+ * DENX M28 Boot setup
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.va...@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <config.h>
+#include <asm/io.h>
+#include <asm/arch/iomux-mx28.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/sys_proto.h>
+
+/*
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     0.0     U8      GPMI_D0
+ *     0.1     T8      GPMI_D1
+ *     0.2     R8      GPMI_D2
+ *     0.3     U7      GPMI_D3
+ *     0.4     T7      GPMI_D4
+ *     0.5     R7      GPMI_D5
+ *     0.6     U6      GPMI_D6
+ *     0.7     T6      GPMI_D7
+ *     0.8     -       -               Reserved
+ *     0.9     -       -               Reserved
+ *     0.10    -       -               Reserved
+ *     0.11    -       -               Reserved
+ *     0.12    -       -               Reserved
+ *     0.13    -       -               Reserved
+ *     0.14    -       -               Reserved
+ *     0.15    -       -               Reserved
+ *     0.16    N7      GPMI_CE0N
+ *     0.17    N9      GPMI_CE1N
+ *     0.18    M7      GPIO_INTERUPT   TODO: GPIO, Input, 3V3, 4mA,
+ *                                           External Pullup
+ *     0.19    M9      DISP_ON         TODO: GPIO, (Input or Output?), ?V?,
+ *                                           ?mA
+ *     0.20    N6      GPMI_READY0
+ *     0.21    N8      GPMI_READY1
+ *     0.22    M8      CAN0_TX
+ *     0.23    L8      CAN0_RX
+ *     0.24    R6      GPMI_RDN
+ *     0.25    P8      GPMI_WRN
+ *     0.26    P6      GPMI_ALE
+ *     0.27    P7      GPMI_CLE
+ *     0.28    L9      NAND_WP         GPIO, 3V3, 4mA, External Pullup,
+ *                                     Active Low
+ *     0.29    -       -               Reserved
+ *     0.30    -       -               Reserved
+ *     0.31    -       -               Reserved
+ *
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     1.0     K2      LCD_D0
+ *     1.1     K3      LCD_D1
+ *     1.2     L2      LCD_D2
+ *     1.3     L3      LCD_D3
+ *     1.4     M2      LCD_D4
+ *     1.5     M3      LCD_D5
+ *     1.6     N2      LCD_D6
+ *     1.7     P1      LCD_D7
+ *     1.8     P2      LCD_D8
+ *     1.9     P3      LCD_D9
+ *     1.10    R1      LCD_D10
+ *     1.11    R2      LCD_D11
+ *     1.12    T1      LCD_D12
+ *     1.13    T2      LCD_D13
+ *     1.14    U2      LCD_D14
+ *     1.15    U3      LCD_D15
+ *     1.16    T3      LCD_D16
+ *     1.17    R3      LCD_D17
+ *     1.18    U4      LCD_D18
+ *     1.19    T4      LCD_D19
+ *     1.20    R4      LCD_D20
+ *     1.21    U5      LCD_D21
+ *     1.22    T5      LCD_D22
+ *     1.23    R5      LCD_D23
+ *     1.24    P4      LCD_VSYNC
+ *     1.25    K1      LCD_HSYNC
+ *     1.26    M4      LCD_DOTCLK
+ *     1.27    P5      LCD_ENABLE
+ *     1.28    L1      LCD_VSYNC       Not Connected
+ *     1.29    M1      LCD_HSYNC       Not Connected
+ *     1.30    N1      LCD_DOTCLK      Not Connected
+ *     1.31    N5      LCD_ENABLE      Not Connected
+ *
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     2.0     B6      SSP0_D0
+ *     2.1     C6      SSP0_D1
+ *     2.2     D6      SSP0_D2
+ *     2.3     A5      SSP0_D3
+ *     2.4     B5      USB_0_PWR_EN    GPIO, Output, 3V3, 4mA,
+ *                                     External Pulldown
+ *     2.5     C5      DUART_CTS       GPIO, Output, 3V3, 4mA,
+ *                                     External Pullup
+ *     2.6     D5      ENET_INTERUPT   TODO: GPIO, Input,  3V3, 4mA,
+ *                                           External Pullup
+ *     2.7     B4      USB_RESET_B     TODO: GPIO, Output, 3V3, 4mA,
+ *                                           External Pullup
+ *     2.8     A4      SSP0_CMD
+ *     2.9     D10     SSP0_CARD_DTCT
+ *     2.10    A6      SSP0_SCK
+ *     2.11    -       -               Reserved
+ *     2.12    B1      SSP1_SCK        Not Connected
+ *     2.13    C1      SSP1_CMD        Not Connected
+ *     2.14    D1      SSP1_DATA0      Not Connected
+ *     2.15    E1      SSP1_DATA3      Not Connected
+ *     2.16    A3      SSP2_SCK        TODO: SPI Clock
+ *     2.17    C3      SSP2_MOSI       TODO: SPI MOSI
+ *     2.18    B3      SSP2_MISO       TODO: SPI MISO
+ *     2.19    C4      SSP2_SS0        TODO: SPI Slave Select 0
+ *     2.20    D3      SSP2_SS1        TODO: SPI Slave Select 1
+ *     2.21    D4      USB0_OVRCURRENT TODO
+ *     2.22    -       -               Reserved
+ *     2.23    -       -               Reserved
+ *     2.24    A2      SSP3_SCK        Not Connected
+ *     2.25    C2      SSP3_MOSI       Not Connected
+ *     2.26    B2      SSP3_MISO       Not Connected
+ *     2.27    D2      SSP3_SS0        Not Connected
+ *     2.28    -       -               Reserved
+ *     2.29    -       -               Reserved
+ *     2.30    -       -               Reserved
+ *     2.31    -       -               Reserved
+ *
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     3.0     G5      AUART0_RX       TODO: RS485 hardware issue
+ *     3.1     H5      AUART0_TX       TODO: RS485 hardware issue
+ *     3.2     J6      BACKLIGHT_EN    GPIO, Output, 3V3, 4mA,
+ *                                     External Pulldown
+ *     3.3     J7      AUART0_RTS      TODO: RS485 hardware issue
+ *     3.4     L4      AUART1_RX
+ *     3.5     K4      AUART1_TX
+ *     3.6     K5      AUART1_CTS      Not Connected
+ *     3.7     J5      AUART1_RTS      Not Connected
+ *     3.8     F6      AUART2_RX       Not Connected
+ *     3.9     F5      AUART2_TX       Not Connected
+ *     3.10    H6      AUART2_CTS      Not Connected
+ *     3.11    H7      AUART2_RTS      Not Connected
+ *     3.12    M5      AUART3_RX       Not Connected
+ *     3.13    L5      AUART3_TX       Not Connected
+ *     3.14    L6      AUART3_CTS      Not Connected
+ *     3.15    K6      AUART3_RTS      Not Connected
+ *     3.16    K7      I2C1_SCL
+ *     3.17    L7      I2C1_SDA
+ *     3.18    K8      USB0_ID         TODO
+ *     3.19    -       -               Reserved
+ *     3.20    G7      ENET_FEC_RESET  GPIO, Output, 3V3, 4mA,
+ *                                     External Pullup, Active Low
+ *     3.21    G6      AUART4_RTS      TODO: RS485 hardware issue
+ *     3.22    F7      AUART4_RX       TODO: RS485 hardware issue
+ *     3.23    E7      AUART4_TX       TODO: RS485 hardware issue
+ *     3.24    C7      DUART_RX
+ *     3.25    D8      DUART_TX
+ *     3.26    E8      PWM7            TODO: Onboard Audio (Frequency or
+ *                                           Volume?)
+ *     3.27    D7      RUN_LED         GPIO, Output, 3V3, Active Low
+ *     3.28    E9      PWM_3           TODO: LCD Backlight Brightness
+ *     3.29    E10     PWM_4           TODO: Onboard Audio (Frequency or
+ *                                           Volume?)
+ *     3.30    M6      LCD_PWR_EN      GPIO, Output, 3V3, 4mA, External Pullup
+ *     3.31    -       -               Reserved
+ *
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     4.0     G4      ENET0_MDC       3V3, 4mA, Internal Pullup
+ *     4.1     H4      ENET0_MDIO      3V3, 4mA, Internal Pullup
+ *     4.2     E4      ENET0_RX_EN     3V3, 4mA, Internal Pullup
+ *     4.3     H1      ENET0_RXD0      3V3, 4mA, Internal Pullup
+ *     4.4     H2      ENET0_RXD1      3V3, 4mA, Internal Pullup
+ *     4.5     E3      ENET0_TX_CLK    Not Connected
+ *     4.6     F4      ENET0_TX_EN
+ *     4.7     F1      ENET0_TXD0
+ *     4.8     F2      ENET0_TXD1
+ *     4.9     J1      ENET0_RX_D2     Not Connected
+ *     4.10    J2      ENET0_RX_D3     Not Connected
+ *     4.11    G1      ENET0_TX_D2     Not Connected
+ *     4.12    G2      ENET0_TX_D2     Not Connected
+ *     4.13    F3      ENET0_RX_CLK    Not Connected
+ *     4.14    J4      ENET0_COL       Not Connected
+ *     4.15    J3      ENET0_CRS       Not Connected
+ *     4.16    E2      CLKCTRL_ENET
+ *     4.17    -       -               Reserved
+ *     4.18    -       -               Reserved
+ *     4.19    -       -               Reserved
+ *     4.20    E14     JTAG_RTCK       3V3, 4mA, External Pullup
+ *     4.21    -       -               Reserved
+ *     4.22    -       -               Reserved
+ *     4.23    -       -               Reserved
+ *     4.24    -       -               Reserved
+ *     4.25    -       -               Reserved
+ *     4.26    -       -               Reserved
+ *     4.27    -       -               Reserved
+ *     4.28    -       -               Reserved
+ *     4.29    -       -               Reserved
+ *     4.30    -       -               Reserved
+ *     4.31    -       -               Reserved
+ *
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     5.0     N16     EMI_DATA0
+ *     5.1     M13     EMI_DATA1
+ *     5.2     P15     EMI_DATA2
+ *     5.3     N14     EMI_DATA3
+ *     5.4     P13     EMI_DATA4
+ *     5.5     P17     EMI_DATA5
+ *     5.6     L14     EMI_DATA6
+ *     5.7     M17     EMI_DATA7
+ *     5.8     G16     EMI_DATA8
+ *     5.9     H15     EMI_DATA9
+ *     5.10    G14     EMI_DATA10
+ *     5.11    J14     EMI_DATA11
+ *     5.12    H13     EMI_DATA12
+ *     5.13    H17     EMI_DATA13
+ *     5.14    F13     EMI_DATA14
+ *     5.15    F17     EMI_DATA15
+ *     5.16    R17     EMI_ODT0
+ *     5.17    M15     EMI_DQM0
+ *     5.18    T17     EMI_ODT1        Not Connected
+ *     5.19    F15     EMI_DQM1
+ *     5.20    L15     EMI_DDR_OPEN_FB
+ *     5.21    L16/L17 EMI_CLK
+ *     5.22    K16/K17 EMI_DQS0
+ *     5.23    J16/J17 EMI_DQS1
+ *     5.24    -       -               Reserved
+ *     5.25    -       -               Reserved
+ *     5.26    K14     EMI_DDR_OPEN
+ *     5.27    -       -               Reserved
+ *     5.28    -       -               Reserved
+ *     5.29    -       -               Reserved
+ *     5.30    -       -               Reserved
+ *     5.31    -       -               Reserved
+ *
+ *     Bank.   SoC
+ *     Pin     Pin     Function        Comments
+ *  ----------------------------------------------------------------------
+ *     6.0     U15     EMI_ADDR0
+ *     6.1     U12     EMI_ADDR1
+ *     6.2     U14     EMI_ADDR2
+ *     6.3     T11     EMI_ADDR3
+ *     6.4     U10     EMI_ADDR4
+ *     6.5     R11     EMI_ADDR5
+ *     6.6     R9      EMI_ADDR6
+ *     6.7     N11     EMI_ADDR7
+ *     6.8     U9      EMI_ADDR8
+ *     6.9     P10     EMI_ADDR9
+ *     6.10    U13     EMI_ADDR10
+ *     6.11    T10     EMI_ADDR11
+ *     6.12    U11     EMI_ADDR12
+ *     6.13    T9      EMI_ADDR13
+ *     6.14    N10     EMI_ADDR14
+ *     6.15    -       -               Reserved
+ *     6.16    T16     EMI_BA0
+ *     6.17    T12     EMI_BA1
+ *     6.18    N12     EMI_BA2
+ *     6.19    U16     EMI_CASN
+ *     6.20    R16     EMI_RASN
+ *     6.21    T15     EMI_WEN
+ *     6.22    P12     EMI_CE0N
+ *     6.23    P9      EMI_CE1N        Not Connected
+ *     6.24    T13     EMI_CKE
+ *     6.25    -       -               Reserved
+ *     6.26    -       -               Reserved
+ *     6.27    -       -               Reserved
+ *     6.28    -       -               Reserved
+ *     6.29    -       -               Reserved
+ *     6.30    -       -               Reserved
+ *     6.31    -       -               Reserved
+ */
+#define        MUX_CONFIG_I2C  (MXS_PAD_1V8 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_CAN  (MXS_PAD_1V8 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_LED  (MXS_PAD_3V3 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_LCD  (MXS_PAD_3V3 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_SSP0 (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_PULLUP)
+#define        MUX_CONFIG_GPMI (MXS_PAD_3V3 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_ENET (MXS_PAD_3V3 | MXS_PAD_4MA  | MXS_PAD_PULLUP)
+#define        MUX_CONFIG_EMI  (MXS_PAD_3V3 | MXS_PAD_12MA | MXS_PAD_NOPULL)
+#define        MUX_CONFIG_JTAG (MXS_PAD_3V3 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+#define MUX_CONFIG_UART        (MXS_PAD_3V3 | MXS_PAD_4MA  | MXS_PAD_NOPULL)
+
+const iomux_cfg_t iomux_setup[] = {
+       /* Run LED */
+       MX28_PAD_SPDIF__GPIO_3_27               | MUX_CONFIG_LED,
+
+       /* JTAG */
+       MX28_PAD_JTAG_RTCK__JTAG_RTCK           | MUX_CONFIG_JTAG,
+
+       /* LCD Framebuffer */
+       MX28_PAD_LCD_D00__LCD_D0                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D01__LCD_D1                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D02__LCD_D2                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D03__LCD_D3                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D04__LCD_D4                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D05__LCD_D5                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D06__LCD_D6                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D07__LCD_D7                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D08__LCD_D8                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D09__LCD_D9                | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D10__LCD_D10               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D11__LCD_D11               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D12__LCD_D12               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D13__LCD_D13               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D14__LCD_D14               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D15__LCD_D15               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D16__LCD_D16               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D17__LCD_D17               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D18__LCD_D18               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D19__LCD_D19               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D20__LCD_D20               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D21__LCD_D21               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D22__LCD_D22               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_D23__LCD_D23               | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_RD_E__LCD_VSYNC            | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_WR_RWN__LCD_HSYNC          | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_RS__LCD_DOTCLK             | MUX_CONFIG_LCD,
+       MX28_PAD_LCD_CS__LCD_ENABLE             | MUX_CONFIG_LCD,
+
+       /* LCD Panel Power Enable */
+       MX28_PAD_LCD_RESET__GPIO_3_30           | (MXS_PAD_3V3 | MXS_PAD_4MA),
+
+       /* LCD Backlight Enable */
+       MX28_PAD_AUART0_CTS__GPIO_3_2           | (MXS_PAD_3V3 | MXS_PAD_4MA),
+
+       /* DEBUG Port - DUART with GPIO CTS Control */
+       MX28_PAD_I2C0_SDA__DUART_TX             | MUX_CONFIG_UART,
+       MX28_PAD_I2C0_SCL__DUART_RX             | MUX_CONFIG_UART,
+       MX28_PAD_SSP0_DATA5__GPIO_2_5           | MUX_CONFIG_UART,
+
+       /* RS232 Port - AUART1 */
+       MX28_PAD_AUART1_RX__AUART1_RX           | MUX_CONFIG_UART,
+       MX28_PAD_AUART1_TX__AUART1_TX           | MUX_CONFIG_UART,
+
+       /* I2C */
+       MX28_PAD_PWM0__I2C1_SCL                 | MUX_CONFIG_I2C,
+       MX28_PAD_PWM1__I2C1_SDA                 | MUX_CONFIG_I2C,
+
+       /* CAN */
+       MX28_PAD_GPMI_RDY2__CAN0_TX             | MUX_CONFIG_CAN,
+       MX28_PAD_GPMI_RDY3__CAN0_RX             | MUX_CONFIG_CAN,
+
+       /* MMC0 */
+       MX28_PAD_SSP0_DATA0__SSP0_D0            | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA1__SSP0_D1            | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA2__SSP0_D2            | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DATA3__SSP0_D3            | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_CMD__SSP0_CMD             | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT  | MUX_CONFIG_SSP0,
+       MX28_PAD_SSP0_SCK__SSP0_SCK             | MUX_CONFIG_SSP0,
+
+       /* GPMI NAND */
+       MX28_PAD_GPMI_D00__GPMI_D0              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D01__GPMI_D1              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D02__GPMI_D2              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D03__GPMI_D3              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D04__GPMI_D4              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D05__GPMI_D5              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D06__GPMI_D6              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_D07__GPMI_D7              | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_CE0N__GPMI_CE0N           | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_CE1N__GPMI_CE1N           | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_RDY0__GPMI_READY0         | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_RDY1__GPMI_READY1         | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_RDN__GPMI_RDN             | (MXS_PAD_3V3 |
+                                                  MXS_PAD_8MA |
+                                                  MXS_PAD_PULLUP),
+       MX28_PAD_GPMI_WRN__GPMI_WRN             | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_ALE__GPMI_ALE             | MUX_CONFIG_GPMI,
+       MX28_PAD_GPMI_CLE__GPMI_CLE             | MUX_CONFIG_GPMI,
+
+       /* NAND WP */
+       MX28_PAD_GPMI_RESETN__GPIO_0_28         | MUX_CONFIG_GPMI,
+
+       /* FEC Ethernet */
+       MX28_PAD_ENET0_MDC__ENET0_MDC           | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_MDIO__ENET0_MDIO         | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RX_EN__ENET0_RX_EN       | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TX_EN__ENET0_TX_EN       | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RXD0__ENET0_RXD0         | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_RXD1__ENET0_RXD1         | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TXD0__ENET0_TXD0         | MUX_CONFIG_ENET,
+       MX28_PAD_ENET0_TXD1__ENET0_TXD1         | MUX_CONFIG_ENET,
+       MX28_PAD_ENET_CLK__CLKCTRL_ENET         | MUX_CONFIG_ENET,
+
+       /* PHY reset */
+       MX28_PAD_SAIF0_MCLK__GPIO_3_20          | MUX_CONFIG_ENET,
+
+       /* EMI */
+       MX28_PAD_EMI_D00__EMI_DATA0             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D01__EMI_DATA1             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D02__EMI_DATA2             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D03__EMI_DATA3             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D04__EMI_DATA4             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D05__EMI_DATA5             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D06__EMI_DATA6             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D07__EMI_DATA7             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D08__EMI_DATA8             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D09__EMI_DATA9             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D10__EMI_DATA10            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D11__EMI_DATA11            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D12__EMI_DATA12            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D13__EMI_DATA13            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D14__EMI_DATA14            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_D15__EMI_DATA15            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_ODT0__EMI_ODT0             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQM0__EMI_DQM0             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQM1__EMI_DQM1             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CLK__EMI_CLK               | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQS0__EMI_DQS0             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DQS1__EMI_DQS1             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN     | MUX_CONFIG_EMI,
+
+       MX28_PAD_EMI_A00__EMI_ADDR0             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A01__EMI_ADDR1             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A02__EMI_ADDR2             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A03__EMI_ADDR3             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A04__EMI_ADDR4             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A05__EMI_ADDR5             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A06__EMI_ADDR6             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A07__EMI_ADDR7             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A08__EMI_ADDR8             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A09__EMI_ADDR9             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A10__EMI_ADDR10            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A11__EMI_ADDR11            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A12__EMI_ADDR12            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A13__EMI_ADDR13            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_A14__EMI_ADDR14            | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_BA0__EMI_BA0               | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_BA1__EMI_BA1               | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_BA2__EMI_BA2               | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CASN__EMI_CASN             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_RASN__EMI_RASN             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_WEN__EMI_WEN               | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CE0N__EMI_CE0N             | MUX_CONFIG_EMI,
+       MX28_PAD_EMI_CKE__EMI_CKE               | MUX_CONFIG_EMI,
+};
+
+void board_init_ll(const uint32_t arg, const uint32_t *resptr)
+{
+       mxs_common_spl_init(arg, resptr, iomux_setup, ARRAY_SIZE(iomux_setup));
+}
diff --git a/configs/g2c1_defconfig b/configs/g2c1_defconfig
new file mode 100644
index 0000000..926fcc2
--- /dev/null
+++ b/configs/g2c1_defconfig
@@ -0,0 +1,3 @@
+CONFIG_SPL=y
++S:CONFIG_ARM=y
++S:CONFIG_TARGET_G2C1=y
diff --git a/include/configs/g2c1.h b/include/configs/g2c1.h
new file mode 100644
index 0000000..65d16b8
--- /dev/null
+++ b/include/configs/g2c1.h
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2015 Graeme Russ <gr...@tss-engineering.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __CONFIGS_G2C1_H__
+#define __CONFIGS_G2C1_H__
+
+#ifdef DEBUG
+#define CONFIG_SPL_SERIAL_SUPPORT
+#endif
+
+/* System configurations */
+#define CONFIG_MX28                    /* i.MX28 SoC */
+#define CONFIG_SYS_MXS_VDD5V_ONLY      /* No Battery */
+
+/* TODO: Remove all references to MACH_TYPE
+#define MACH_TYPE_G2C1 3613
+#define CONFIG_MACH_TYPE       MACH_TYPE_G2C1
+*/
+
+#define CONFIG_FIT
+
+#define CONFIG_TIMESTAMP               /* Print image info with timestamp */
+
+/* U-Boot Commands */
+#define CONFIG_SYS_NO_FLASH
+#include <config_cmd_default.h>
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DOS_PARTITION
+#define CONFIG_FAT_WRITE
+
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_BMP
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DATE
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EEPROM
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_GPIO
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_I2C
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_NAND_TRIMFFS
+#define CONFIG_CMD_NET
+#define CONFIG_CMD_NFS
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SETEXPR
+#define CONFIG_CMD_SF
+#define CONFIG_CMD_SPI
+#define CONFIG_CMD_USB
+#define        CONFIG_VIDEO
+
+#define CONFIG_REGEX                   /* Enable regular expression support */
+
+/* Memory configuration */
+#define CONFIG_NR_DRAM_BANKS           1               /* 1 bank of DRAM */
+#define PHYS_SDRAM_1                   0x40000000      /* Base address */
+#define PHYS_SDRAM_1_SIZE              0x08000000      /* Max 128 MB RAM */
+#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
+
+/* Environment */
+#define CONFIG_ENV_SIZE                        (16 * 1024)
+#define CONFIG_ENV_IS_IN_NAND
+
+/* Environment is in NAND */
+#if defined(CONFIG_CMD_NAND) && defined(CONFIG_ENV_IS_IN_NAND)
+#define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
+#define CONFIG_ENV_SECT_SIZE           (128 * 1024)
+#define CONFIG_ENV_RANGE               (4 * CONFIG_ENV_SECT_SIZE)
+#define CONFIG_ENV_OFFSET              (24 * CONFIG_ENV_SECT_SIZE) /* 3 MiB */
+#define CONFIG_ENV_OFFSET_REDUND       \
+               (CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
+
+#define CONFIG_CMD_UBI
+#define CONFIG_CMD_UBIFS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_RBTREE
+#define CONFIG_LZO
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+#define MTDIDS_DEFAULT                 "nand0=gpmi-nand"
+#define MTDPARTS_DEFAULT                       \
+       "mtdparts=gpmi-nand:"                   \
+               "3m(u-boot),"                   \
+               "512k(env1),"                   \
+               "512k(env2),"                   \
+               "14m(boot),"                    \
+               "238m(data),"                   \
+               "-@4096k(UBI)"
+#else
+#define CONFIG_ENV_IS_NOWHERE
+#endif
+
+/* FEC Ethernet on SoC */
+#ifdef CONFIG_CMD_NET
+#define CONFIG_FEC_MXC
+#endif
+
+/* EEPROM */
+#ifdef CONFIG_CMD_EEPROM
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#endif
+
+/* RTC */
+#ifdef CONFIG_CMD_DATE
+/* Use the internal RTC in the MXS chip */
+#define CONFIG_RTC_INTERNAL
+#ifdef CONFIG_RTC_INTERNAL
+#define CONFIG_RTC_MXS
+#else
+#define CONFIG_RTC_M41T62
+#define CONFIG_SYS_I2C_RTC_ADDR                0x68
+#define CONFIG_SYS_M41T11_BASE_YEAR    2000
+#endif
+#endif
+
+/* USB */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_EHCI_MXS_PORT0
+#define CONFIG_EHCI_MXS_PORT1
+#define CONFIG_USB_MAX_CONTROLLER_COUNT        2
+#define CONFIG_USB_STORAGE
+#endif
+
+/* SPI */
+#ifdef CONFIG_CMD_SPI
+#define CONFIG_DEFAULT_SPI_BUS         2
+#define CONFIG_DEFAULT_SPI_CS          0
+#define CONFIG_DEFAULT_SPI_MODE                SPI_MODE_0
+
+/* SPI FLASH */
+#ifdef CONFIG_CMD_SF
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_STMICRO
+#define CONFIG_SF_DEFAULT_BUS          2
+#define CONFIG_SF_DEFAULT_CS           0
+#define CONFIG_SF_DEFAULT_SPEED                40000000
+#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
+
+#define CONFIG_ENV_SPI_BUS             2
+#define CONFIG_ENV_SPI_CS              0
+#define CONFIG_ENV_SPI_MAX_HZ          40000000
+#define CONFIG_ENV_SPI_MODE            SPI_MODE_0
+#endif
+
+#endif
+
+/* LCD */
+#ifdef CONFIG_VIDEO
+#define        CONFIG_VIDEO_LOGO
+#define        CONFIG_SPLASH_SCREEN
+#define        CONFIG_CMD_BMP
+#define        CONFIG_BMP_16BPP
+#define        CONFIG_VIDEO_BMP_RLE8
+#define        CONFIG_VIDEO_BMP_GZIP
+#define        CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (2 << 20)
+#endif
+
+/* Booting Linux */
+#define CONFIG_BOOTDELAY       3
+#define CONFIG_BOOTFILE                "fitImage"
+#define CONFIG_BOOTARGS                "console=ttyAMA0,115200n8 "
+#define CONFIG_BOOTCOMMAND     "run mmc_mmc"
+#define CONFIG_LOADADDR                0x42000000
+#define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
+
+/* Extra Environment */
+#define CONFIG_PREBOOT         "run try_bootscript"
+#define CONFIG_HOSTNAME                g2c1
+
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "consdev=ttyAMA0\0"                                             \
+       "baudrate=115200\0"                                             \
+       "bootscript=boot.scr\0"                                         \
+       "bootdev=/dev/mmcblk0p2\0"                                      \
+       "rootdev=/dev/mmcblk0p3\0"                                      \
+       "netdev=eth0\0"                                                 \
+       "hostname=g2c1\0"                                               \
+       "rootpath=/opt/eldk-5.5/armv5te/rootfs-qte-sdk\0"               \
+       "kernel_addr_r=0x42000000\0"                                    \
+       "videomode=video=ctfb:x:800,y:480,depth:18,mode:0,pclk:30066,"  \
+               "le:0,ri:256,up:0,lo:45,hs:1,vs:1,sync:100663296,"      \
+               "vmode:0\0"                                             \
+       "update_nand_full_filename=u-boot.nand\0"                       \
+       "update_nand_firmware_filename=u-boot.sb\0"                     \
+       "update_sd_firmware_filename=u-boot.sd\0"                       \
+       "update_nand_firmware_maxsz=0x100000\0"                         \
+       "update_nand_stride=0x40\0"     /* MX28 datasheet ch. 12.12 */  \
+       "update_nand_count=0x4\0"       /* MX28 datasheet ch. 12.12 */  \
+       "update_nand_get_fcb_size="     /* Get size of FCB blocks */    \
+               "nand device 0 ; "                                      \
+               "nand info ; "                                          \
+               "setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
+               "setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
+       "update_nand_full="             /* Update FCB, DBBT and FW */   \
+               "if tftp ${update_nand_full_filename} ; then "          \
+               "run update_nand_get_fcb_size ; "                       \
+               "nand scrub -y 0x0 ${filesize} ; "                      \
+               "nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; "           \
+               "setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
+               "setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
+               "nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
+               "fi\0"                                                  \
+       "update_nand_firmware="         /* Update only firmware */      \
+               "if tftp ${update_nand_firmware_filename} ; then "      \
+               "run update_nand_get_fcb_size ; "                       \
+               "setexpr fcb_sz ${update_nand_fcb} * 2 ; " /* FCB + DBBT */ \
+               "setexpr fw_sz ${update_nand_firmware_maxsz} * 2 ; "    \
+               "setexpr fw_off ${fcb_sz} + ${update_nand_firmware_maxsz};" \
+               "nand erase ${fcb_sz} ${fw_sz} ; "                      \
+               "nand write ${loadaddr} ${fcb_sz} ${filesize} ; "       \
+               "nand write ${loadaddr} ${fw_off} ${filesize} ; "       \
+               "fi\0"                                                  \
+       "update_sd_firmware="           /* Update the SD firmware partition */ \
+               "if mmc rescan ; then "                                 \
+               "if tftp ${update_sd_firmware_filename} ; then "        \
+               "setexpr fw_sz ${filesize} / 0x200 ; "  /* SD block size */ \
+               "setexpr fw_sz ${fw_sz} + 1 ; "                         \
+               "mmc write ${loadaddr} 0x800 ${fw_sz} ; "               \
+               "fi ; "                                                 \
+               "fi\0"                                                  \
+       "addcons="                                                      \
+               "setenv bootargs ${bootargs} "                          \
+               "console=${consdev},${baudrate}\0"                      \
+       "addip="                                                        \
+               "setenv bootargs ${bootargs} "                          \
+               "ip=${ipaddr}:${serverip}:${gatewayip}:"                \
+                       "${netmask}:${hostname}:${netdev}:off\0"        \
+       "addmisc="                                                      \
+               "setenv bootargs ${bootargs} ${miscargs}\0"             \
+       "adddfltmtd="                                                   \
+               "if test \"x${mtdparts}\" == \"x\" ; then "             \
+                       "mtdparts default ; "                           \
+               "fi\0"                                                  \
+       "addmtd="                                                       \
+               "run adddfltmtd ; "                                     \
+               "setenv bootargs ${bootargs} ${mtdparts}\0"             \
+       "addargs=run addcons addmtd addmisc\0"                          \
+       "mmcload="                                                      \
+               "mmc rescan ; "                                         \
+               "load mmc 0:2 ${kernel_addr_r} ${bootfile}\0"           \
+       "ubiload="                                                      \
+               "ubi part UBI ; ubifsmount ubi0:rootfs ; "              \
+               "ubifsload ${kernel_addr_r} /boot/${bootfile}\0"        \
+       "netload="                                                      \
+               "tftp ${kernel_addr_r} ${hostname}/${bootfile}\0"       \
+       "miscargs=nohlt panic=1\0"                                      \
+       "mmcargs=setenv bootargs root=${rootdev} rw rootwait\0"         \
+       "ubiargs="                                                      \
+               "setenv bootargs ubi.mtd=5 "                            \
+               "root=ubi0:rootfs rootfstype=ubifs\0"                   \
+       "nfsargs="                                                      \
+               "setenv bootargs root=/dev/nfs rw "                     \
+                       "nfsroot=${serverip}:${rootpath},v3,tcp\0"      \
+       "mmc_mmc="                                                      \
+               "run mmcload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "mmc_ubi="                                                      \
+               "run mmcload ubiargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "mmc_nfs="                                                      \
+               "run mmcload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "ubi_mmc="                                                      \
+               "run ubiload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "ubi_ubi="                                                      \
+               "run ubiload ubiargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "ubi_nfs="                                                      \
+               "run ubiload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_mmc="                                                      \
+               "run netload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_ubi="                                                      \
+               "run netload ubiargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_nfs="                                                      \
+               "run netload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "try_bootscript="                                               \
+               "mmc rescan;"                                           \
+               "if test -e mmc 0:2 ${bootscript} ; then "              \
+               "if load mmc 0:2 ${kernel_addr_r} ${bootscript};"       \
+               "then ; "                                               \
+                       "echo Running bootscript... ; "                 \
+                       "source ${kernel_addr_r} ; "                    \
+               "fi ; "                                                 \
+               "fi\0"
+
+/* The rest of the configuration is shared */
+#include <configs/mxs.h>
+
+#endif /* __CONFIGS_G2C1_H__ */
-- 
1.9.3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to