With latest support for Marvell Dove SoC, add the SolidRun CuBox as
the very first board with that SoC.

Signed-off-by: Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
---
Changelog:
v1->v2:
- add MAINTAINERS entry and fix a typo

Cc: u-boot@lists.denx.de
Cc: Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
Cc: Rabeeh Khoury <rab...@solid-run.com>
Cc: Albert Aribaud <albert.u.b...@aribaud.net>
Cc: Prafulla Wadaskar <prafu...@marvell.com>
Cc: Andy Fleming <aflem...@gmail.com>
Cc: Joe Hershberger <joe.hershber...@gmail.com>
Cc: Daniel Stodden <daniel.stod...@gmail.com>
Cc: Luka Perkov <l...@openwrt.org>
---
 MAINTAINERS                       |    4 +
 board/solidrun/cubox/Makefile     |   45 ++++++++++
 board/solidrun/cubox/cubox.c      |  141 ++++++++++++++++++++++++++++++
 board/solidrun/cubox/kwbimage.cfg |   76 ++++++++++++++++
 boards.cfg                        |    1 +
 include/configs/cubox.h           |  175 +++++++++++++++++++++++++++++++++++++
 6 files changed, 442 insertions(+)
 create mode 100644 board/solidrun/cubox/Makefile
 create mode 100644 board/solidrun/cubox/cubox.c
 create mode 100644 board/solidrun/cubox/kwbimage.cfg
 create mode 100644 include/configs/cubox.h

diff --git a/MAINTAINERS b/MAINTAINERS
index c430574..d315cb6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -677,6 +677,10 @@ Stefan Herbrechtsmeier <ste...@code.herbrechtsmeier.net>
 
        dns325          ARM926EJS (Kirkwood SoC)
 
+Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
+
+       cubox           ARM ARMV7 (Dove SoC)
+
 Vaibhav Hiremath <hvaib...@ti.com>
 
        am3517_evm      ARM ARMV7 (AM35x SoC)
diff --git a/board/solidrun/cubox/Makefile b/board/solidrun/cubox/Makefile
new file mode 100644
index 0000000..c771d72
--- /dev/null
+++ b/board/solidrun/cubox/Makefile
@@ -0,0 +1,45 @@
+#
+# SolidRun CuBox Makefile
+#
+# Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301 USA
+#
+
+include $(TOPDIR)/config.mk
+
+LIB    = $(obj)lib$(BOARD).o
+
+COBJS  := cubox.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS))
+SOBJS  := $(addprefix $(obj),$(SOBJS))
+
+$(LIB):        $(obj).depend $(OBJS) $(SOBJS)
+       $(call cmd_link_o_target, $(OBJS) $(SOBJS))
+
+#########################################################################
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#########################################################################
diff --git a/board/solidrun/cubox/cubox.c b/board/solidrun/cubox/cubox.c
new file mode 100644
index 0000000..70c016f
--- /dev/null
+++ b/board/solidrun/cubox/cubox.c
@@ -0,0 +1,141 @@
+/*
+ * SolidRun CuBox board support
+ *
+ * Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+#include <common.h>
+#include <miiphy.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/dove.h>
+#include <asm/arch/mpp.h>
+#include <orion_gpio.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static u16 mpp_config[] = {
+       MPP0_GPIO,
+       MPP1_GPIO, /* USB power enable */
+       MPP2_GPIO, /* USB over-current indication */
+       MPP3_GPIO, /* micro button beneath eSATA port */
+       MPP4_GPIO,
+       MPP5_GPIO,
+       MPP6_GPIO,
+       MPP7_GPIO,
+
+       MPP8_GPIO,
+       MPP9_GPIO,
+       MPP10_GPIO,
+       MPP11_GPIO,
+       MPP12_GPIO, /* SDIO0 card detect */
+       MPP13_AUDIO1_EXTCLK, /* Si5351a audio clock output */
+       MPP14_GPIO,
+       MPP15_GPIO,
+
+       MPP16_GPIO,
+       MPP17_GPIO,
+       MPP18_GPIO, /* Red front LED */
+       MPP19_UART3_RXD, /* IR sensor */
+       MPP20_GPIO,
+       MPP21_GPIO,
+       MPP22_GPIO,
+       MPP23_GPIO,
+
+       MPP_CAMERA_GPIO,
+       MPP_SDIO0_SDIO, /* SDIO0 */
+       MPP_SDIO1_GPIO,
+       MPP_AUDIO1_I2S_SPDIFO, /* SPDIF and HDMI audio */
+       MPP_SPI_SPI, /* SPI */
+       MPP_UART1_GPIO,
+       MPP_NAND_GPO,
+
+       MPP_AUDIO0_I2S,
+       MPP_TWSI_OPTION1, /* TWSI on dedicated pins */
+       0 };
+
+int board_early_init_f(void)
+{
+       struct dove_gpio_init gpp = {
+               .val0  = 0x00010186,
+               .oe0_n = 0xffffffff,
+               .val1  = 0x018000c0,
+               .oe1_n = 0xffffffff,
+               .val2  = 0x00000000,
+               .oe2_n = 0xffffffff,
+       };
+
+       dove_init_gpio(&gpp);
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* adress of boot parameters */
+       gd->bd->bi_boot_params = dove_dram_start(0) + 0x100;
+
+       /* configure mpp */
+       dove_mpp_conf(mpp_config);
+
+       /* usb power enable */
+       orion_gpio_direction_output(MPP1, GPIO_HIGH);
+
+       /* blink led */
+       orion_gpio_direction_output(MPP18, GPIO_HIGH);
+       orion_gpio_set_blink(MPP18, 1);
+
+       return 0;
+}
+
+#ifdef CONFIG_MMC
+int board_mmc_init(bd_t *bis)
+{
+       dove_sdhci_init(0);
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_RESET_PHY_R
+void dove_eth_phy_init(char *name)
+{
+       u16 devadr;
+
+       if (miiphy_set_current_dev(name))
+               return;
+
+       /* command to read PHY dev address */
+       if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
+               printf("Err..%s could not read PHY dev address\n",
+                       __func__);
+               return;
+       }
+
+       /* reset the phy */
+       miiphy_reset(name, devadr);
+
+       printf("%s PHY initialized\n", name);
+}
+
+void reset_phy(void)
+{
+       dove_eth_phy_init("egiga0");
+}
+#endif /* CONFIG_RESET_PHY_R */
diff --git a/board/solidrun/cubox/kwbimage.cfg 
b/board/solidrun/cubox/kwbimage.cfg
new file mode 100644
index 0000000..c3f1ad9
--- /dev/null
+++ b/board/solidrun/cubox/kwbimage.cfg
@@ -0,0 +1,76 @@
+#
+# Marvell BootROM config for SolidRun CuBox
+#
+# Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301 USA
+#
+# Refer docs/README.kwimage for more details about how-to configure
+# and create kirkwood boot image
+#
+
+# Boot Media configurations
+BOOT_FROM      spi
+
+# SOC registers configuration using bootrom header extension
+# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
+
+DATA 0xd0020104 0x00000000     # CPU Control and Status register
+
+# SDRAM initalization
+DATA 0xd0800020 0x00022430     # SDRAM Configuration register 0
+DATA 0xd0800030 0x00022430     # SDRAM Configuration register 1
+DATA 0xd0800050 0x911500c3     # SDRAM Timing register 1
+DATA 0xd0800060 0x646602c4     # SDRAM Timing register 2
+DATA 0xd0800190 0xc2003053     # SDRAM Timing register 3
+DATA 0xd08001c0 0x34f4a187     # SDRAM Timing register 4
+DATA 0xd0800650 0x000f0121     # SDRAM Timing register 5
+DATA 0xd0800660 0x04040200     # SDRAM Timing register 6
+DATA 0xd0800080 0x00000000     # SDRAM Control register 1
+DATA 0xd0800090 0x00080000     # SDRAM Control register 2
+DATA 0xd08000f0 0xc0000000     # SDRAM Control register 3
+DATA 0xd08001a0 0x20c0c009     # SDRAM Control register 4
+DATA 0xd0800280 0x010e0202     # SDRAM Control register 5
+DATA 0xd0800760 0x00000000     # SDRAM Control register 6
+DATA 0xd0800770 0x0000000a     # SDRAM Control register 7
+DATA 0xd0800140 0x20004044     # SDRAM PHY control register 3
+DATA 0xd08001d0 0x133c2339     # SDRAM PHY control register 7
+DATA 0xd08001e0 0x07700330     # SDRAM PHY control register 8
+DATA 0xd08001f0 0x00000033     # SDRAM PHY control register 9
+DATA 0xd0800200 0x0011311c     # SDRAM PHY control register 10
+DATA 0xd0800210 0x00300000     # SDRAM PHY control register 11
+DATA 0xd0800240 0x80000000     # SDRAM PHY control register 14
+DATA 0xd0800510 0x010e0101     # SDRAM MCB control register 1
+DATA 0xd0800230 0x2028006a     # SDRAM PHY control register 13
+DATA 0xd0800e10 0x00280062     # SDRAM PHY DLL control registers 2
+DATA 0xd0800e20 0x00280062     # SDRAM PHY DLL control registers 3
+DATA 0xd0800e30 0x00280062     # SDRAM PHY DLL control registers 4
+
+# SDRAM memory map (2x512MB)
+DATA 0xd0800100 0x000d0001     # SDRAM Memory Address Map register 1
+DATA 0xd0800110 0x200d0001     # SDRAM Memory Address Map register 1
+
+DATA 0xd0020104 0x00000000     # CPU Control and Status register
+DATA 0xd0020104 0x00000000     # CPU Control and Status register
+DATA 0xd0020104 0x00000000     # CPU Control and Status register
+DATA 0xd0020104 0x00000000     # CPU Control and Status register
+DATA 0xd0020104 0x00000000     # CPU Control and Status register
+
+# End of Header extension
+DATA 0x0 0x0
diff --git a/boards.cfg b/boards.cfg
index ca9b12b..1bd734b 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -289,6 +289,7 @@ whistler                     arm         armv7:arm720t 
whistler          nvidia
 colibri_t20_iris             arm         armv7:arm720t colibri_t20_iris  
toradex        tegra20
 u8500_href                   arm         armv7       u8500               
st-ericsson    u8500
 snowball                     arm         armv7       snowball               
st-ericsson    u8500
+cubox                        arm         armv7       cubox               
solidrun       dove
 kzm9g                        arm         armv7       kzm9g               kmc   
         rmobile
 armadillo-800eva             arm         armv7       armadillo-800eva    
atmark-techno  rmobile
 zynq                         arm         armv7       zynq                
xilinx         zynq
diff --git a/include/configs/cubox.h b/include/configs/cubox.h
new file mode 100644
index 0000000..88a2fda
--- /dev/null
+++ b/include/configs/cubox.h
@@ -0,0 +1,175 @@
+/*
+ * SolidRun CuBox config
+ *
+ * Sebastian Hesselbarth <sebastian.hesselba...@gmail.com>
+ *
+ * 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., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+
+#ifndef _CONFIG_CUBOX_H
+#define _CONFIG_CUBOX_H
+#include <asm/sizes.h>
+
+/*
+ * Version number information
+ */
+#define CONFIG_IDENT_STRING    "\SolidRun CuBox"
+
+/*
+ * High Level Configuration Options
+ */
+#define CONFIG_MACH_SOLIDRUN_CUBOX     /* Machine type */
+#define CONFIG_SHOW_BOOT_PROGRESS
+#define CONFIG_ORION_GPIO               /* Orion GPIO driver */
+
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_SYS_CONSOLE_IS_IN_ENV
+
+/*
+ * Enable u-boot API for standalone programs.
+ */
+#define CONFIG_API
+
+/*
+ * Enable device tree support
+ */
+#define CONFIG_OF_LIBFDT
+
+/*
+ * Commands configuration
+ */
+#include <config_cmd_default.h>
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_ELF
+#define CONFIG_CMD_ENV
+#define CONFIG_CMD_IDE
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_SF
+#define CONFIG_CMD_SPI
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_MMC
+
+#define CONFIG_DOS_PARTITION
+#define CONFIG_EFT_PARTITION
+
+/*
+ * mv-common.h should be defined after CMD configs since it used them
+ * to enable certain macros
+ */
+#include "mv-common.h"
+
+/*
+ * redefine mv-common.h macros for armv7/cubox
+ */
+#undef CONFIG_SYS_PROMPT       /* previously defined in mv-common.h */
+#define CONFIG_SYS_PROMPT      "CuBox> "       /* Command Prompt */
+
+/* There is no arch_misc_init on armv7 */
+#undef CONFIG_ARCH_MISC_INIT
+
+#undef CONFIG_SYS_MALLOC_LEN
+#define CONFIG_SYS_MALLOC_LEN  (4 * 1024 * 1024) /* 4MiB for malloc() */
+
+/*
+ *  Environment variables configurations
+ */
+#if defined(CONFIG_CMD_SF)
+#define CONFIG_SPI_FLASH_WINBOND
+#define CONFIG_ENV_IS_IN_SPI_FLASH     1
+#define CONFIG_ENV_SECT_SIZE           0x1000  /* 4k */
+#define CONFIG_ENV_SIZE                        0x20000 /* 128k */
+#define CONFIG_ENV_OFFSET              0xc0000 /* env starts here */
+#else
+#define CONFIG_ENV_IS_NOWHERE          1       /* if env in SDRAM */
+#endif
+
+/*
+ * Default CuBox bootscript environment
+ */
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "bootscript=boot.scr\0"                                         \
+       "loadaddr=0x02000000\0"                                         \
+       "mmc_started=0\0"                                               \
+       "ide_started=0\0"                                               \
+       "usb_started=0\0"                                               \
+       
"mtdparts=mtdparts=spi0.0:768k(u-boot)ro,128k(uboot_env),128k(fdt),-(empty)\0"  
\
+       "ethaddr=00:50:43:15:17:17\0"
+
+#define CONFIG_BOOTCOMMAND                                             \
+       "for devn in usb mmc ide ; do "                                 \
+       "  for part in 0 1; do "                                        \
+       "    for dir  in / /boot/;do "                                  \
+       "      for fs in ext2 fat; do "                                 \
+       "        echo ===> Executing ${fs}load ${devn} 0:${part} ${loadaddr} 
${dir}${bootscript};" \
+       "        if itest.s $devn -eq mmc; then"                        \
+       "          if itest.s $mmc_started -ne 1; then"                 \
+       "            mmcinfo; setenv mmc_started '1';fi;fi;"            \
+       "        if itest.s $devn -eq usb; then"                        \
+       "          if itest.s $usb_started -ne 1; then"                 \
+       "            usb start; setenv usb_started '1';fi;fi;"          \
+       "        if itest.s $devn -eq ide; then"                        \
+       "          if itest.s $ide_started -ne 1; then"                 \
+       "            ide reset; setenv ide_started '1';fi;fi;"          \
+       "        if ${fs}load ${devn} 0:${part} ${loadaddr} 
${dir}${bootscript}; then" \
+       "          source ${loadaddr}; fi;"                             \
+       "        if itest.s $devn -eq usb; then"                        \
+       "          echo ===> Executing ${fs}load ${devn} 1:${part} ${loadaddr} 
${dir}${bootscript};" \
+       "          if ${fs}load ${devn} 1:${part} ${loadaddr} 
${dir}${bootscript}; then" \
+       "            source ${loadaddr}; fi;"                           \
+       "        fi;"                                                   \
+       "      done;"                                                   \
+       "    done;"                                                     \
+       "  done;"                                                       \
+       "done;"                                                         \
+       "tftp ${loadaddr} ${bootscript};"                               \
+       "source ${loadaddr};"
+
+/*
+ * Ethernet Driver configuration
+ */
+#ifdef CONFIG_CMD_NET
+#define CONFIG_MVGBE_PORTS     {1}     /* enable port 0 */
+#define CONFIG_PHY_BASE_ADR    1
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_MARVELL
+#endif /* CONFIG_CMD_NET */
+
+#ifdef CONFIG_CMD_IDE
+#undef CONFIG_IDE_LED
+#undef CONFIG_SYS_IDE_MAXBUS
+#define CONFIG_SYS_IDE_MAXBUS          1
+#undef CONFIG_SYS_IDE_MAXDEVICE
+#define CONFIG_SYS_IDE_MAXDEVICE       1
+#define CONFIG_SYS_ATA_IDE0_OFFSET     MV_SATA_PORT0_OFFSET
+#endif
+
+/*
+ * File system
+ */
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FAT
+#define CONFIG_RBTREE
+#define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
+#define CONFIG_MTD_PARTITIONS
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_LZO
+
+#endif /* _CONFIG_CUBOX_H */
-- 
1.7.10.4

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

Reply via email to