From d118bc314f2889c52686951165576181b6a4adc8 Mon Sep 17 00:00:00 2001 From: Marcel Ziswiler Date: Thu, 23 Oct 2014 00:40:28 +0200 Subject: apalis/colibri_t30: migrate and integrate new update concept Migrate Apalis/Colibri T30 to U-Boot 2014.10 and integrate new update concept based on Apalis/Colibri iMX6 and Colibri VF50/VF61. --- board/toradex/apalis_t30/MAINTAINERS | 1 + board/toradex/apalis_t30/Makefile | 3 +- board/toradex/apalis_t30/apalis_t30.c | 35 +++++- .../toradex/apalis_t30/pinmux-config-apalis_t30.h | 2 +- board/toradex/colibri_t30/MAINTAINERS | 1 + board/toradex/colibri_t30/Makefile | 3 +- board/toradex/colibri_t30/colibri_t30.c | 22 +++- .../colibri_t30/pinmux-config-colibri_t30.h | 2 +- include/configs/apalis_t30.h | 136 +++++++++++++++++++- include/configs/colibri_t30.h | 137 ++++++++++++++++++++- 10 files changed, 325 insertions(+), 17 deletions(-) diff --git a/board/toradex/apalis_t30/MAINTAINERS b/board/toradex/apalis_t30/MAINTAINERS index 01bc73e46d..a1e707d4f4 100644 --- a/board/toradex/apalis_t30/MAINTAINERS +++ b/board/toradex/apalis_t30/MAINTAINERS @@ -1,5 +1,6 @@ Apalis T30 M: Marcel Ziswiler +M: Toradex ARM Support S: Maintained F: board/toradex/apalis_t30/ F: include/configs/apalis_t30.h diff --git a/board/toradex/apalis_t30/Makefile b/board/toradex/apalis_t30/Makefile index a968e6b79e..95cdf16980 100644 --- a/board/toradex/apalis_t30/Makefile +++ b/board/toradex/apalis_t30/Makefile @@ -1,6 +1,7 @@ -# Copyright (c) 2014 Marcel Ziswiler +# Copyright (c) 2012-2014 Toradex, Inc. # SPDX-License-Identifier: GPL-2.0+ include $(srctree)/board/nvidia/common/common.mk obj-y += apalis_t30.o +obj-y += ../common/configblock.o diff --git a/board/toradex/apalis_t30/apalis_t30.c b/board/toradex/apalis_t30/apalis_t30.c index b9d694a268..dde1b63952 100644 --- a/board/toradex/apalis_t30/apalis_t30.c +++ b/board/toradex/apalis_t30/apalis_t30.c @@ -1,6 +1,5 @@ /* - * (C) Copyright 2014 - * Marcel Ziswiler + * Copyright (c) 2012-2014 Toradex, Inc. * * SPDX-License-Identifier: GPL-2.0+ */ @@ -14,10 +13,42 @@ #include #include "pinmux-config-apalis_t30.h" +#include "../common/configblock.h" + +DECLARE_GLOBAL_DATA_PTR; #define PMU_I2C_ADDRESS 0x2D #define MAX_I2C_RETRY 3 +int arch_misc_init(void) +{ + /* Default memory arguments */ + if (!getenv("memargs")) { + switch (gd->ram_size) { + case 0x40000000: + /* 1 GB */ + setenv("memargs", "vmalloc=128M mem=1012M@2048M " + "fbmem=12M@3060M"); + break; + case 0x7ff00000: + case 0x80000000: + /* 2 GB */ + setenv("memargs", "vmalloc=256M mem=2035M@2048M " + "fbmem=12M@4083M"); + break; + default: + printf("Failed detecting RAM size.\n"); + } + } + +#ifdef CONFIG_TRDX_CFG_BLOCK + if (read_trdx_cfg_block()) + printf("Missing Apalis config block\n"); +#endif + + return 0; +} + /* * Routine: pinmux_init * Description: Do individual peripheral pinmux configs diff --git a/board/toradex/apalis_t30/pinmux-config-apalis_t30.h b/board/toradex/apalis_t30/pinmux-config-apalis_t30.h index c988d395c1..f672d7ae54 100644 --- a/board/toradex/apalis_t30/pinmux-config-apalis_t30.h +++ b/board/toradex/apalis_t30/pinmux-config-apalis_t30.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Marcel Ziswiler + * Copyright (c) 2012-2014, Toradex, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, diff --git a/board/toradex/colibri_t30/MAINTAINERS b/board/toradex/colibri_t30/MAINTAINERS index 73b8e5d099..21e235a25e 100644 --- a/board/toradex/colibri_t30/MAINTAINERS +++ b/board/toradex/colibri_t30/MAINTAINERS @@ -1,5 +1,6 @@ Colibri T30 M: Stefan Agner +M: Toradex ARM Support S: Maintained F: board/toradex/colibri_t30/ F: include/configs/colibri_t30.h diff --git a/board/toradex/colibri_t30/Makefile b/board/toradex/colibri_t30/Makefile index 3d58a4b2c1..c69af289ca 100644 --- a/board/toradex/colibri_t30/Makefile +++ b/board/toradex/colibri_t30/Makefile @@ -1,6 +1,7 @@ -# Copyright (c) 2013-2014 Stefan Agner +# Copyright (c) 2012-2014 Toradex, Inc. # SPDX-License-Identifier: GPL-2.0+ include $(srctree)/board/nvidia/common/common.mk obj-y += colibri_t30.o +obj-y += ../common/configblock.o diff --git a/board/toradex/colibri_t30/colibri_t30.c b/board/toradex/colibri_t30/colibri_t30.c index f4bc7d8728..cef795773b 100644 --- a/board/toradex/colibri_t30/colibri_t30.c +++ b/board/toradex/colibri_t30/colibri_t30.c @@ -1,16 +1,28 @@ /* - * (C) Copyright 2014 - * Stefan Agner + * Copyright (c) 2012-2014 Toradex, Inc. * * SPDX-License-Identifier: GPL-2.0+ */ #include -#include + #include -#include "pinmux-config-colibri_t30.h" -#include +#include #include +#include + +#include "pinmux-config-colibri_t30.h" +#include "../common/configblock.h" + +int arch_misc_init(void) +{ +#ifdef CONFIG_TRDX_CFG_BLOCK + if (read_trdx_cfg_block()) + printf("Missing Colibri config block\n"); +#endif + + return 0; +} /* * Routine: pinmux_init diff --git a/board/toradex/colibri_t30/pinmux-config-colibri_t30.h b/board/toradex/colibri_t30/pinmux-config-colibri_t30.h index 4e73c0762e..20bb42f785 100644 --- a/board/toradex/colibri_t30/pinmux-config-colibri_t30.h +++ b/board/toradex/colibri_t30/pinmux-config-colibri_t30.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014, Stefan Agner + * Copyright (c) 2012-2014, Toradex, Inc. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, diff --git a/include/configs/apalis_t30.h b/include/configs/apalis_t30.h index a63db5cf92..17dbad006c 100644 --- a/include/configs/apalis_t30.h +++ b/include/configs/apalis_t30.h @@ -1,5 +1,7 @@ /* - * Copyright (c) 2014 Marcel Ziswiler + * Copyright (c) 2012-2014 Toradex, Inc. + * + * Configuration settings for the Toradex Apalis T30 modules. * * SPDX-License-Identifier: GPL-2.0+ */ @@ -11,6 +13,8 @@ #include "tegra30-common.h" +#define CONFIG_ARCH_MISC_INIT + /* High-level configuration options */ #define V_PROMPT "Apalis T30 # " #define CONFIG_TEGRA_BOARD_STRING "Toradex Apalis T30" @@ -22,7 +26,17 @@ #define CONFIG_MACH_TYPE MACH_TYPE_APALIS_T30 +#define CONFIG_INITRD_TAG +#define CONFIG_REVISION_TAG +#define CONFIG_SERIAL_TAG + #define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_BOARD_LATE_INIT /* board/nvidia/common/board.c */ + +/* Make the HW version stuff available in u-boot env */ +#define CONFIG_VERSION_VARIABLE /* ver environment variable */ +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG +#define CONFIG_CMD_ASKENV /* I2C */ #define CONFIG_SYS_I2C_TEGRA @@ -36,6 +50,10 @@ #define CONFIG_GENERIC_MMC #define CONFIG_TEGRA_MMC #define CONFIG_CMD_MMC +#define CONFIG_CMD_EXT3 +#define CONFIG_CMD_EXT4 +#define CONFIG_CMD_FAT +#define CONFIG_DOS_PARTITION /* Environment in eMMC, at the end of 2nd "boot sector" */ #define CONFIG_ENV_IS_IN_MMC @@ -50,9 +68,7 @@ #define CONFIG_USB_STORAGE #define CONFIG_CMD_USB -/* USB networking support */ -#define CONFIG_USB_HOST_ETHER -#define CONFIG_USB_ETHER_ASIX +#define CONFIG_USE_ARCH_MEMCPY /* PCI host support */ #define CONFIG_PCI @@ -70,7 +86,119 @@ #define CONFIG_CMD_NET #define CONFIG_CMD_DHCP +/* Miscellaneous commands */ +#define CONFIG_CMD_SETEXPR +#define CONFIG_FAT_WRITE + +#undef CONFIG_BOOTDELAY +#define CONFIG_BOOTDELAY 1 +#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 emmcboot; echo; echo emmcboot failed; " \ + "run nfsboot; echo; echo nfsboot failed" + +#define EMMC_BOOTCMD \ + "emmcargs=ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "emmcboot=run setup; setenv bootargs ${defargs} ${emmcargs} " \ + "${setupargs} ${vidargs}; echo Booting from internal eMMC " \ + "chip...; run emmcdtbload; load mmc 0:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${kernel_addr_r} - ${dtbparam}\0" \ + "emmcdtbload=setenv dtbparam; load mmc 0:1 ${fdt_addr_r} " \ + "${soc}-apalis-${fdt_board}.dtb && " \ + "setenv dtbparam ${fdt_addr_r}\0" + +#define NFS_BOOTCMD \ + "nfsargs=ip=:::::eth0:on root=/dev/nfs rw netdevwait\0" \ + "nfsboot=run setup; setenv bootargs ${defargs} ${nfsargs} " \ + "${setupargs} ${vidargs}; echo Booting via DHCP/TFTP/NFS...; " \ + "run nfsdtbload; dhcp ${kernel_addr_r} " \ + "&& bootm ${kernel_addr_r} - ${dtbparam}\0" \ + "nfsdtbload=setenv dtbparam; tftp ${fdt_addr_r} " \ + "${soc}-apalis-${fdt_board}.dtb " \ + "&& setenv dtbparam ${fdt_addr_r}\0" + +#define SD_BOOTCMD \ + "sdargs=ip=off root=/dev/mmcblk1p2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "sdboot=run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} " \ + "${vidargs}; echo Booting from SD card in 8bit slot...; " \ + "run sddtbload; load mmc 1:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${kernel_addr_r} - ${dtbparam}\0" \ + "sddtbload=setenv dtbparam; load mmc 1:1 ${fdt_addr_r} " \ + "${soc}-apalis-${fdt_board}.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} ${setupargs} " \ + "${usbargs} ${vidargs}; echo Booting from USB stick...; " \ + "usb start && run usbdtbload; load usb 0:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${kernel_addr_r} - ${dtbparam}\0" \ + "usbdtbload=setenv dtbparam; load usb 0:1 ${fdt_addr_r} " \ + "${soc}-apalis-${fdt_board}.dtb " \ + "&& setenv dtbparam ${fdt_addr_r}\0" + +/* Miscellaneous configurable options */ +#define CONFIG_SYS_LONGHELP +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_AUTO_COMPLETE +#undef CONFIG_SYS_CBSIZE +#define CONFIG_SYS_CBSIZE 1024 + +/* Print Buffer Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) +#undef CONFIG_SYS_MAXARGS +#define CONFIG_SYS_MAXARGS 32 +#undef CONFIG_SYS_BARGSIZE +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE + +#define CONFIG_CMDLINE_EDITING + +/* Toradex Configblock in eMMC, at the end of 1st "boot sector" */ +#define CONFIG_TRDX_CFG_BLOCK +#define CONFIG_TRDX_CFG_BLOCK_DEV 0 +#define CONFIG_TRDX_CFG_BLOCK_IS_IN_MMC +#define CONFIG_TRDX_CFG_BLOCK_OFFSET (-512) +#define CONFIG_TRDX_CFG_BLOCK_PART 1 +#define CONFIG_TRDX_CFG_BLOCK_SIZE 4096 + +#define CONFIG_OF_LIBFDT +#define CONFIG_CMD_BOOTZ + +#define CONFIG_CMD_TIME +#define CONFIG_CMD_MEMTEST +#define CONFIG_SYS_ALT_MEMTEST + +#define CONFIG_CMD_FS_GENERIC + #include "tegra-common-usb-gadget.h" #include "tegra-common-post.h" +#undef CONFIG_EXTRA_ENV_SETTINGS +#define CONFIG_EXTRA_ENV_SETTINGS \ + "boot_file=uImage\0" \ + "console=ttyS0\0" \ + "defargs=core_edp_mv=1300 usb_high_speed=1\0" \ + EMMC_BOOTCMD \ + "fdt_board=eval\0" \ + MEM_LAYOUT_ENV_SETTINGS \ + NFS_BOOTCMD \ + SD_BOOTCMD \ + "setup=setenv setupargs igb_mac=${ethaddr} " \ + "consoleblank=0 no_console_suspend=1 console=tty1 " \ + "console=${console},${baudrate}n8 debug_uartport=lsport,0 " \ + "${memargs}\0" \ + "setupdate=setenv drive 1; load mmc ${drive}:1 ${kernel_addr_r} " \ + "flash_mmc.img || setenv drive 2; load mmc ${drive}:1 " \ + "${kernel_addr_r} flash_mmc.img && source ${kernel_addr_r}\0" \ + USB_BOOTCMD \ + "vidargs=video=tegrafb0:640x480-16@60 fbcon=map:1\0" + #endif /* __CONFIG_H */ diff --git a/include/configs/colibri_t30.h b/include/configs/colibri_t30.h index a582e25516..ffcf88f699 100644 --- a/include/configs/colibri_t30.h +++ b/include/configs/colibri_t30.h @@ -1,5 +1,7 @@ /* - * Copyright (c) 2013-2014 Stefan Agner + * Copyright (c) 2012-2014 Toradex, Inc. + * + * Configuration settings for the Toradex Colibri T30 modules. * * SPDX-License-Identifier: GPL-2.0+ */ @@ -11,17 +13,30 @@ #include "tegra30-common.h" +#define CONFIG_ARCH_MISC_INIT + +/* High-level configuration options */ #define V_PROMPT "Colibri T30 # " #define CONFIG_TEGRA_BOARD_STRING "Toradex Colibri T30" -/* Board-specific config */ +/* Board-specific serial config */ #define CONFIG_SERIAL_MULTI #define CONFIG_TEGRA_ENABLE_UARTA #define CONFIG_SYS_NS16550_COM1 NV_PA_APB_UARTA_BASE #define CONFIG_MACH_TYPE MACH_TYPE_COLIBRI_T30 +#define CONFIG_INITRD_TAG +#define CONFIG_REVISION_TAG +#define CONFIG_SERIAL_TAG + #define CONFIG_BOARD_EARLY_INIT_F +#define CONFIG_BOARD_LATE_INIT /* board/nvidia/common/board.c */ + +/* Make the HW version stuff available in u-boot env */ +#define CONFIG_VERSION_VARIABLE /* ver environment variable */ +#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG +#define CONFIG_CMD_ASKENV /* I2C */ #define CONFIG_SYS_I2C_TEGRA @@ -35,6 +50,10 @@ #define CONFIG_GENERIC_MMC #define CONFIG_TEGRA_MMC #define CONFIG_CMD_MMC +#define CONFIG_CMD_EXT3 +#define CONFIG_CMD_EXT4 +#define CONFIG_CMD_FAT +#define CONFIG_DOS_PARTITION /* Environment in eMMC, at the end of 2nd "boot sector" */ #define CONFIG_ENV_IS_IN_MMC @@ -53,11 +72,125 @@ #define CONFIG_USB_HOST_ETHER #define CONFIG_USB_ETHER_ASIX +#define CONFIG_USE_ARCH_MEMCPY + /* General networking support */ #define CONFIG_CMD_NET #define CONFIG_CMD_DHCP +/* Miscellaneous commands */ +#define CONFIG_CMD_SETEXPR +#define CONFIG_FAT_WRITE + +#undef CONFIG_BOOTDELAY +#define CONFIG_BOOTDELAY 1 +#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 emmcboot; echo; echo emmcboot failed; " \ + "run nfsboot; echo; echo nfsboot failed" + +#define EMMC_BOOTCMD \ + "emmcargs=ip=off root=/dev/mmcblk0p2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "emmcboot=run setup; setenv bootargs ${defargs} ${emmcargs} " \ + "${setupargs} ${vidargs}; echo Booting from internal eMMC " \ + "chip...; run emmcdtbload; load mmc 0:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${kernel_addr_r} - ${dtbparam}\0" \ + "emmcdtbload=setenv dtbparam; load mmc 0:1 ${fdt_addr_r} " \ + "${soc}-colibri-${fdt_board}.dtb && " \ + "setenv dtbparam ${fdt_addr_r}\0" + +#define NFS_BOOTCMD \ + "nfsargs=ip=:::::eth0:on root=/dev/nfs rw netdevwait\0" \ + "nfsboot=run setup; setenv bootargs ${defargs} ${nfsargs} " \ + "${setupargs} ${vidargs}; echo Booting via DHCP/TFTP/NFS...; " \ + "usb start; run nfsdtbload; dhcp ${kernel_addr_r} " \ + "&& bootm ${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/mmcblk1p2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "sdboot=run setup; setenv bootargs ${defargs} ${sdargs} ${setupargs} " \ + "${vidargs}; echo Booting from SD card in 8bit slot...; " \ + "run sddtbload; load mmc 1:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${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 USB_BOOTCMD \ + "usbargs=ip=off root=/dev/sda2 rw,noatime rootfstype=ext3 " \ + "rootwait\0" \ + "usbboot=run setup; setenv bootargs ${defargs} ${setupargs} " \ + "${usbargs} ${vidargs}; echo Booting from USB stick...; " \ + "usb start && run usbdtbload; load usb 0:1 ${kernel_addr_r} " \ + "${boot_file} && bootm ${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" + +/* Miscellaneous configurable options */ +#define CONFIG_SYS_LONGHELP +#define CONFIG_SYS_HUSH_PARSER +#define CONFIG_AUTO_COMPLETE +#undef CONFIG_SYS_CBSIZE +#define CONFIG_SYS_CBSIZE 1024 + +/* Print Buffer Size */ +#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16) +#undef CONFIG_SYS_MAXARGS +#define CONFIG_SYS_MAXARGS 32 +#undef CONFIG_SYS_BARGSIZE +#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE + +#define CONFIG_CMDLINE_EDITING + +/* Toradex Configblock in eMMC, at the end of 1st "boot sector" */ +#define CONFIG_TRDX_CFG_BLOCK +#define CONFIG_TRDX_CFG_BLOCK_DEV 0 +#define CONFIG_TRDX_CFG_BLOCK_IS_IN_MMC +#define CONFIG_TRDX_CFG_BLOCK_OFFSET (-512) +#define CONFIG_TRDX_CFG_BLOCK_PART 1 +#define CONFIG_TRDX_CFG_BLOCK_SIZE 4096 + +#define CONFIG_OF_LIBFDT +#define CONFIG_CMD_BOOTZ + +#define CONFIG_CMD_TIME +#define CONFIG_CMD_MEMTEST +#define CONFIG_SYS_ALT_MEMTEST + +#define CONFIG_CMD_FS_GENERIC + #include "tegra-common-usb-gadget.h" #include "tegra-common-post.h" +#undef CONFIG_EXTRA_ENV_SETTINGS +#define CONFIG_EXTRA_ENV_SETTINGS \ + "boot_file=uImage\0" \ + "console=ttyS0\0" \ + "defargs=core_edp_mv=1300 usb_high_speed=1\0" \ + EMMC_BOOTCMD \ + "fdt_board=eval-v3\0" \ + MEM_LAYOUT_ENV_SETTINGS \ + "memargs=vmalloc=128M mem=1012M@2048M fbmem=12M@3060M\0" \ + NFS_BOOTCMD \ + SD_BOOTCMD \ + "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=load mmc 1:1 ${kernel_addr_r} flash_mmc.img " \ + "&& source ${kernel_addr_r}\0" \ + USB_BOOTCMD \ + "vidargs=video=tegrafb0:640x480-16@60\0" + #endif /* __CONFIG_H */ -- cgit v1.2.3