summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2015-04-28 02:07:36 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2017-01-11 21:27:14 +0100
commitff464e70471c7846bd9332c2899682233a5a07aa (patch)
tree896d9cf82e6f42f3a3cc7cd3d48adda40ead77b2
parent89a14c2f11e3f3eb4fcc028c6864ed5fa8bae74b (diff)
colibri_t20: migrate
Migrate Colibri T20 to U-Boot 2016.11. (cherry picked from commit 92d747bf338ceb8d6dbdd3e5e5f7f72226ce0792)
-rw-r--r--board/toradex/colibri_t20/Makefile7
-rw-r--r--board/toradex/colibri_t20/colibri_t20.c62
-rw-r--r--configs/colibri_t20_defconfig7
-rw-r--r--include/configs/colibri_t20.h105
4 files changed, 170 insertions, 11 deletions
diff --git a/board/toradex/colibri_t20/Makefile b/board/toradex/colibri_t20/Makefile
index e5e71ac466..e449e14e37 100644
--- a/board/toradex/colibri_t20/Makefile
+++ b/board/toradex/colibri_t20/Makefile
@@ -1,7 +1,4 @@
-#
-# (C) Copyright 2012 Lucas Stach
-#
-# SPDX-License-Identifier: GPL-2.0+
-#
+# Copyright (c) 2011-2016 Toradex, Inc.
+# SPDX-License-Identifier: GPL-2.0+
obj-y += colibri_t20.o
diff --git a/board/toradex/colibri_t20/colibri_t20.c b/board/toradex/colibri_t20/colibri_t20.c
index 4d298e69e6..14361a21dc 100644
--- a/board/toradex/colibri_t20/colibri_t20.c
+++ b/board/toradex/colibri_t20/colibri_t20.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Lucas Stach
+ * Copyright (c) 2011-2016 Toradex, Inc.
*
* SPDX-License-Identifier: GPL-2.0+
*/
@@ -25,6 +25,8 @@ DECLARE_GLOBAL_DATA_PTR;
#define PMU_SUPPLYENE_SYSINEN (1<<5)
#define PMU_SUPPLYENE_EXITSLREQ (1<<1)
+u32 get_board_rev(void);
+
int arch_misc_init(void)
{
/* Disable PMIC sleep mode on low supply voltage */
@@ -58,9 +60,63 @@ int arch_misc_init(void)
/* make sure SODIMM pin 87 nRESET_OUT is released properly */
pinmux_set_func(PMUX_PINGRP_ATA, PMUX_FUNC_GMI);
+ /* HW version */
+ if (!getenv("hw-version")) {
+ switch (get_board_rev()) {
+ case 0x011b:
+ case 0x011c:
+ setenv("hw-version", "v11");
+ break;
+ case 0x012a:
+ setenv("hw-version", "v12");
+ break;
+ default:
+ setenv("hw-version", (nand_info[0]->erasesize >> 10
+ == 512)?"v11":"v12");
+ }
+ }
+
+ /* Default memory arguments */
+ if (!getenv("memargs")) {
+ switch (gd->ram_size) {
+ case 0x10000000:
+ /* 256 MB */
+ setenv("memargs", "mem=148M@0M fbmem=12M@148M "
+ "nvmem=96M@160M");
+ setenv("ram-size", "256");
+ break;
+ case 0x20000000:
+ /* 512 MB */
+ setenv("memargs", "mem=372M@0M fbmem=12M@372M "
+ "nvmem=128M@384M");
+ setenv("ram-size", "512");
+ break;
+ default:
+ printf("Failed detecting RAM size.\n");
+ }
+ }
+
+ /* NAND parameters */
+ if (!getenv("leb-size")) {
+ switch (nand_info[0]->erasesize >> 10) {
+ case 256:
+ /* 256 KiB */
+ setenv("leb-size", "248KiB");
+ break;
+ case 512:
+ /* 512 KiB */
+ setenv("leb-size", "504KiB");
+ break;
+ default:
+ printf("Failed detecting NAND block erase size.\n");
+ }
+ }
+
if (readl(NV_PA_BASE_SRAM + NVBOOTINFOTABLE_BOOTTYPE) ==
- NVBOOTTYPE_RECOVERY)
- printf("USB recovery mode\n");
+ NVBOOTTYPE_RECOVERY) {
+ printf("USB recovery mode, disabled autoboot\n");
+ setenv("bootdelay", "-1");
+ }
return 0;
}
diff --git a/configs/colibri_t20_defconfig b/configs/colibri_t20_defconfig
index 9d0d99f732..162d2f5723 100644
--- a/configs/colibri_t20_defconfig
+++ b/configs/colibri_t20_defconfig
@@ -4,13 +4,18 @@ CONFIG_TEGRA20=y
CONFIG_TARGET_COLIBRI_T20=y
CONFIG_DEFAULT_DEVICE_TREE="tegra20-colibri"
CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_BOOTDELAY=1
+CONFIG_CONSOLE_MUX=y
CONFIG_SYS_STDIO_DEREGISTER=y
+CONFIG_VERSION_VARIABLE=y
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="Colibri T20 # "
CONFIG_CMD_BOOTZ=y
# CONFIG_CMD_IMI is not set
# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_MEMTEST=y
# CONFIG_CMD_FLASH is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_I2C=y
@@ -35,6 +40,7 @@ CONFIG_CMD_UBI=y
CONFIG_SPL_DM=y
# CONFIG_BLK is not set
CONFIG_DFU_MMC=y
+CONFIG_DFU_NAND=y
CONFIG_DFU_RAM=y
# CONFIG_DM_MMC_OPS is not set
CONFIG_TEGRA_MMC=y
@@ -59,3 +65,4 @@ CONFIG_DM_VIDEO=y
CONFIG_VIDEO_TEGRA20=y
CONFIG_CONSOLE_SCROLL_LINES=10
CONFIG_OF_LIBFDT_OVERLAY=y
+# CONFIG_EFI_LOADER is not set
diff --git a/include/configs/colibri_t20.h b/include/configs/colibri_t20.h
index 3c917b0150..d84850a28f 100644
--- a/include/configs/colibri_t20.h
+++ b/include/configs/colibri_t20.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Lucas Stach
+ * Copyright (c) 2011-2016 Toradex, Inc.
*
* Configuration settings for the Toradex Colibri T20 modules.
*
@@ -11,6 +11,7 @@
#include "tegra20-common.h"
+#undef CONFIG_SYS_DCACHE_OFF /* breaks L4T kernel boot */
#define CONFIG_ARCH_MISC_INIT
/* High-level configuration options */
@@ -23,6 +24,13 @@
#define CONFIG_MACH_TYPE MACH_TYPE_COLIBRI_T20
+#define CONFIG_INITRD_TAG
+#define CONFIG_REVISION_TAG
+#define CONFIG_SERIAL_TAG
+
+/* Make the HW version stuff available in U-Boot env */
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
/* I2C */
#define CONFIG_SYS_I2C_TEGRA
@@ -68,8 +76,9 @@
/* Environment in NAND, 64K is a bit excessive but erase block is 512K anyway */
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET (SZ_2M)
-#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */
+#undef CONFIG_ENV_SIZE /* undef size from tegra20-common.h */
#define CONFIG_ENV_SIZE (SZ_64K)
+#define CONFIG_ENV_RANGE (SZ_1M)
/* UBI */
#define CONFIG_CMD_UBIFS /* increases size by almost 60 KB */
@@ -81,8 +90,93 @@
/* Miscellaneous commands */
#define CONFIG_FAT_WRITE
+#undef CONFIG_IPADDR
+#define CONFIG_IPADDR 192.168.10.2
+#define CONFIG_NETMASK 255.255.255.0
+#undef CONFIG_SERVERIP
+#define CONFIG_SERVERIP 192.168.10.1
+
+#define CONFIG_BOOTCOMMAND \
+ "run ubiboot; echo; echo ubiboot failed; " \
+ "run sdboot; echo; echo sdboot failed; " \
+ "run usbboot; echo; echo usbboot failed; " \
+ "run nfsboot; echo; echo nfsboot failed"
+
+#define DFU_ALT_NAND_INFO "u-boot part 0,0;ubi part 0,3"
+
+#define NFS_BOOTCMD \
+ "nfsargs=ip=:::::eth0:on root=/dev/nfs rw\0" \
+ "nfsboot=usb start; run setup; setenv bootargs ${defargs} ${mtdparts}" \
+ " ${nfsargs} ${setupargs} ${vidargs}; echo Booting via DHCP/" \
+ "TFTP/NFS...; run nfsdtbload; dhcp ${kernel_addr_r} " \
+ "&& run fdt_fixup && bootz ${kernel_addr_r} - ${dtbparam}\0" \
+ "nfsdtbload=setenv dtbparam; tftp ${fdt_addr_r} " \
+ "${soc}-colibri-${fdt_board}.dtb " \
+ "&& setenv dtbparam ${fdt_addr_r}\0"
+
+#define SD_BOOTCMD \
+ "sdargs=ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 " \
+ "rootwait\0" \
+ "sdboot=run setup; setenv bootargs ${defargs} ${mtdparts} ${sdargs} " \
+ "${setupargs} ${vidargs}; echo Booting from SD card...; " \
+ "run sddtbload; load mmc 1:1 ${kernel_addr_r} ${boot_file} " \
+ "&& run fdt_fixup && bootz ${kernel_addr_r} - ${dtbparam}\0" \
+ "sddtbload=setenv dtbparam; load mmc 1:1 ${fdt_addr_r} " \
+ "${soc}-colibri-${fdt_board}.dtb " \
+ "&& setenv dtbparam ${fdt_addr_r}\0"
+
+#define UBI_BOOTCMD \
+ "ubiargs=ubi.mtd=ubi root=ubi0:rootfs rootfstype=ubifs " \
+ "ubi.fm_autoconvert=1\0" \
+ "ubiboot=run setup; setenv bootargs ${defargs} ${ubiargs} ${mtdparts}" \
+ " ${setupargs} ${vidargs}; echo Booting from NAND...; " \
+ "ubi part ubi && ubi read ${kernel_addr_r} kernel &&" \
+ "run ubidtbload && run fdt_fixup; " \
+ "bootz ${kernel_addr_r} - ${dtbparam}; " \
+ "bootz ${kernel_addr_r} - \0" \
+ "ubidtbload=setenv dtbparam; " \
+ "ubi read ${fdt_addr_r} dtb && " \
+ "setenv dtbparam ${fdt_addr_r}\0"
+
+#define USB_BOOTCMD \
+ "usbargs=ip=off root=/dev/sda2 rw,noatime rootfstype=ext3 " \
+ "rootwait\0" \
+ "usbboot=run setup; setenv bootargs ${defargs} ${mtdparts} " \
+ "${setupargs} ${usbargs} ${vidargs}; echo Booting from USB " \
+ "stick...; usb start && run usbdtbload; load usb 0:1 " \
+ "${kernel_addr_r} ${boot_file} && run fdt_fixup && " \
+ "bootz ${kernel_addr_r} - ${dtbparam}\0" \
+ "usbdtbload=setenv dtbparam; load usb 0:1 ${fdt_addr_r} " \
+ "${soc}-colibri-${fdt_board}.dtb " \
+ "&& setenv dtbparam ${fdt_addr_r}\0"
+
#define BOARD_EXTRA_ENV_SETTINGS \
- "mtdparts=" MTDPARTS_DEFAULT "\0"
+ "boot_file=zImage\0" \
+ "console=ttyS0\0" \
+ "defargs=vmalloc=128M usb_high_speed=1\0" \
+ "dfu_alt_info=" DFU_ALT_NAND_INFO "\0" \
+ "fdt_board=eval-v3\0" \
+ "fdt_fixup=;\0" \
+ "mtdparts=" MTDPARTS_DEFAULT "\0" \
+ NFS_BOOTCMD \
+ SD_BOOTCMD \
+ "setethupdate=if env exists ethaddr; then; else setenv ethaddr " \
+ "00:14:2d:00:00:00; fi; usb start && tftpboot ${loadaddr} " \
+ "flash_eth.img && source ${loadaddr}\0" \
+ "setsdupdate=setenv interface mmc; setenv drive 0; mmc rescan; " \
+ "load ${interface} ${drive}:1 ${loadaddr} flash_blk.img && " \
+ "source ${loadaddr}\0" \
+ "setup=setenv setupargs asix_mac=${ethaddr} " \
+ "consoleblank=0 no_console_suspend=1 console=tty1 " \
+ "console=${console},${baudrate}n8 debug_uartport=lsport,0 " \
+ "${memargs}\0" \
+ "setupdate=run setsdupdate || run setusbupdate || run setethupdate\0" \
+ "setusbupdate=usb start && setenv interface usb; setenv drive 0; " \
+ "load ${interface} ${drive}:1 ${loadaddr} flash_blk.img && " \
+ "source ${loadaddr}\0" \
+ UBI_BOOTCMD \
+ USB_BOOTCMD \
+ "vidargs=video=tegrafb0:640x480-16@60\0"
/* Increase console I/O buffer size */
#undef CONFIG_SYS_CBSIZE
@@ -99,6 +193,11 @@
#undef CONFIG_SYS_MAXARGS
#define CONFIG_SYS_MAXARGS 32
+#define CONFIG_CMD_TIME
+
+#define CONFIG_SUPPORT_RAW_INITRD
+#define CONFIG_SYS_BOOT_RAMDISK_HIGH
+
#include "tegra-common-usb-gadget.h"
#include "tegra-common-post.h"