129f3e3f2STom Warren /* 229f3e3f2STom Warren * (C) Copyright 2010-2012 329f3e3f2STom Warren * NVIDIA Corporation <www.nvidia.com> 429f3e3f2STom Warren * 529f3e3f2STom Warren * See file CREDITS for list of people who contributed to this 629f3e3f2STom Warren * project. 729f3e3f2STom Warren * 829f3e3f2STom Warren * This program is free software; you can redistribute it and/or 929f3e3f2STom Warren * modify it under the terms of the GNU General Public License as 1029f3e3f2STom Warren * published by the Free Software Foundation; either version 2 of 1129f3e3f2STom Warren * the License, or (at your option) any later version. 1229f3e3f2STom Warren * 1329f3e3f2STom Warren * This program is distributed in the hope that it will be useful, 1429f3e3f2STom Warren * but WITHOUT ANY WARRANTY; without even the implied warranty of 1529f3e3f2STom Warren * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1629f3e3f2STom Warren * GNU General Public License for more details. 1729f3e3f2STom Warren * 1829f3e3f2STom Warren * You should have received a copy of the GNU General Public License 1929f3e3f2STom Warren * along with this program; if not, write to the Free Software 2029f3e3f2STom Warren * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 2129f3e3f2STom Warren * MA 02111-1307 USA 2229f3e3f2STom Warren */ 2329f3e3f2STom Warren 2429f3e3f2STom Warren #ifndef __TEGRA_COMMON_POST_H 2529f3e3f2STom Warren #define __TEGRA_COMMON_POST_H 2629f3e3f2STom Warren 2729f3e3f2STom Warren #ifdef CONFIG_BOOTCOMMAND 2829f3e3f2STom Warren 2929f3e3f2STom Warren #define BOOTCMDS_COMMON "" 3029f3e3f2STom Warren 3129f3e3f2STom Warren #else 3229f3e3f2STom Warren 3329f3e3f2STom Warren #ifdef CONFIG_CMD_EXT2 3429f3e3f2STom Warren #define BOOT_FSTYPE_EXT2 "ext2 " 3529f3e3f2STom Warren #else 3629f3e3f2STom Warren #define BOOT_FSTYPE_EXT2 "" 3729f3e3f2STom Warren #endif 3829f3e3f2STom Warren 3929f3e3f2STom Warren #ifdef CONFIG_CMD_FAT 4029f3e3f2STom Warren #define BOOT_FSTYPE_FAT "fat" 4129f3e3f2STom Warren #else 4229f3e3f2STom Warren #define BOOT_FSTYPE_FAT "" 4329f3e3f2STom Warren #endif 4429f3e3f2STom Warren 4529f3e3f2STom Warren #ifdef CONFIG_CMD_MMC 4629f3e3f2STom Warren #define BOOTCMDS_MMC \ 4729f3e3f2STom Warren "mmc_boot=" \ 4829f3e3f2STom Warren "setenv devtype mmc; " \ 4929f3e3f2STom Warren "if mmc dev ${devnum}; then " \ 5029f3e3f2STom Warren "run scan_boot; " \ 5129f3e3f2STom Warren "fi\0" \ 5229f3e3f2STom Warren "bootcmd_mmc0=setenv devnum 0; run mmc_boot;\0" \ 5329f3e3f2STom Warren "bootcmd_mmc1=setenv devnum 1; run mmc_boot;\0" 5429f3e3f2STom Warren #define BOOT_TARGETS_MMC "mmc1 mmc0" 5529f3e3f2STom Warren #else 5629f3e3f2STom Warren #define BOOTCMDS_MMC "" 5729f3e3f2STom Warren #define BOOT_TARGETS_MMC "" 5829f3e3f2STom Warren #endif 5929f3e3f2STom Warren 6029f3e3f2STom Warren #ifdef CONFIG_CMD_USB 6129f3e3f2STom Warren #define BOOTCMD_INIT_USB "run usb_init; " 6229f3e3f2STom Warren #define BOOTCMDS_USB \ 6329f3e3f2STom Warren "usb_init=" \ 6429f3e3f2STom Warren "if ${usb_need_init}; then " \ 6529f3e3f2STom Warren "set usb_need_init false; " \ 6629f3e3f2STom Warren "usb start 0; " \ 6729f3e3f2STom Warren "fi\0" \ 6829f3e3f2STom Warren \ 6929f3e3f2STom Warren "usb_boot=" \ 7029f3e3f2STom Warren "setenv devtype usb; " \ 7129f3e3f2STom Warren BOOTCMD_INIT_USB \ 7229f3e3f2STom Warren "if usb dev ${devnum}; then " \ 7329f3e3f2STom Warren "run scan_boot; " \ 7429f3e3f2STom Warren "fi\0" \ 7529f3e3f2STom Warren \ 7629f3e3f2STom Warren "bootcmd_usb0=setenv devnum 0; run usb_boot;\0" 7729f3e3f2STom Warren #define BOOT_TARGETS_USB "usb0" 7829f3e3f2STom Warren #else 7929f3e3f2STom Warren #define BOOTCMD_INIT_USB "" 8029f3e3f2STom Warren #define BOOTCMDS_USB "" 8129f3e3f2STom Warren #define BOOT_TARGETS_USB "" 8229f3e3f2STom Warren #endif 8329f3e3f2STom Warren 8429f3e3f2STom Warren #ifdef CONFIG_CMD_DHCP 8529f3e3f2STom Warren #define BOOTCMDS_DHCP \ 8629f3e3f2STom Warren "bootcmd_dhcp=" \ 8729f3e3f2STom Warren BOOTCMD_INIT_USB \ 8829f3e3f2STom Warren "if dhcp ${scriptaddr} boot.scr.uimg; then "\ 8929f3e3f2STom Warren "source ${scriptaddr}; " \ 9029f3e3f2STom Warren "fi\0" 9129f3e3f2STom Warren #define BOOT_TARGETS_DHCP "dhcp" 9229f3e3f2STom Warren #else 9329f3e3f2STom Warren #define BOOTCMDS_DHCP "" 9429f3e3f2STom Warren #define BOOT_TARGETS_DHCP "" 9529f3e3f2STom Warren #endif 9629f3e3f2STom Warren 9729f3e3f2STom Warren #define BOOTCMDS_COMMON \ 9829f3e3f2STom Warren "rootpart=1\0" \ 9929f3e3f2STom Warren \ 10029f3e3f2STom Warren "script_boot=" \ 10129f3e3f2STom Warren "if ${fs}load ${devtype} ${devnum}:${rootpart} " \ 10229f3e3f2STom Warren "${scriptaddr} ${prefix}${script}; then " \ 10329f3e3f2STom Warren "echo ${script} found! Executing ...;" \ 10429f3e3f2STom Warren "source ${scriptaddr};" \ 10529f3e3f2STom Warren "fi;\0" \ 10629f3e3f2STom Warren \ 10729f3e3f2STom Warren "scan_boot=" \ 10829f3e3f2STom Warren "echo Scanning ${devtype} ${devnum}...; " \ 10929f3e3f2STom Warren "for fs in ${boot_fstypes}; do " \ 11029f3e3f2STom Warren "for prefix in ${boot_prefixes}; do " \ 11129f3e3f2STom Warren "for script in ${boot_scripts}; do " \ 11229f3e3f2STom Warren "run script_boot; " \ 11329f3e3f2STom Warren "done; " \ 11429f3e3f2STom Warren "done; " \ 11529f3e3f2STom Warren "done;\0" \ 11629f3e3f2STom Warren \ 11729f3e3f2STom Warren "boot_targets=" \ 11829f3e3f2STom Warren BOOT_TARGETS_MMC " " \ 11929f3e3f2STom Warren BOOT_TARGETS_USB " " \ 12029f3e3f2STom Warren BOOT_TARGETS_DHCP " " \ 12129f3e3f2STom Warren "\0" \ 12229f3e3f2STom Warren \ 12329f3e3f2STom Warren "boot_fstypes=" \ 12429f3e3f2STom Warren BOOT_FSTYPE_EXT2 " " \ 12529f3e3f2STom Warren BOOT_FSTYPE_FAT " " \ 12629f3e3f2STom Warren "\0" \ 12729f3e3f2STom Warren \ 12829f3e3f2STom Warren "boot_prefixes=/ /boot/\0" \ 12929f3e3f2STom Warren \ 13029f3e3f2STom Warren "boot_scripts=boot.scr.uimg boot.scr\0" \ 13129f3e3f2STom Warren \ 13229f3e3f2STom Warren BOOTCMDS_MMC \ 13329f3e3f2STom Warren BOOTCMDS_USB \ 13429f3e3f2STom Warren BOOTCMDS_DHCP 13529f3e3f2STom Warren 13629f3e3f2STom Warren #define CONFIG_BOOTCOMMAND \ 13729f3e3f2STom Warren "for target in ${boot_targets}; do run bootcmd_${target}; done" 13829f3e3f2STom Warren 13929f3e3f2STom Warren #endif 14029f3e3f2STom Warren 141938176a4SStephen Warren /* 142938176a4SStephen Warren * Memory layout for where various images get loaded by boot scripts: 143938176a4SStephen Warren * 144938176a4SStephen Warren * scriptaddr can be pretty much anywhere that doesn't conflict with something 145938176a4SStephen Warren * else. Put it above BOOTMAPSZ to eliminate conflicts. 146938176a4SStephen Warren * 147938176a4SStephen Warren * kernel_addr_r must be within the first 128M of RAM in order for the 148938176a4SStephen Warren * kernel's CONFIG_AUTO_ZRELADDR option to work. Since the kernel will 149938176a4SStephen Warren * decompress itself to 0x8000 after the start of RAM, kernel_addr_r 150938176a4SStephen Warren * should not overlap that area, or the kernel will have to copy itself 151938176a4SStephen Warren * somewhere else before decompression. Similarly, the address of any other 152938176a4SStephen Warren * data passed to the kernel shouldn't overlap the start of RAM. Pushing 153938176a4SStephen Warren * this up to 16M allows for a sizable kernel to be decompressed below the 154938176a4SStephen Warren * compressed load address. 155938176a4SStephen Warren * 156938176a4SStephen Warren * fdt_addr_r simply shouldn't overlap anything else. Choosing 32M allows for 157938176a4SStephen Warren * the compressed kernel to be up to 16M too. 158938176a4SStephen Warren * 159938176a4SStephen Warren * ramdisk_addr_r simply shouldn't overlap anything else. Choosing 33M allows 160938176a4SStephen Warren * for the FDT/DTB to be up to 1M, which is hopefully plenty. 161938176a4SStephen Warren */ 162938176a4SStephen Warren #define MEM_LAYOUT_ENV_SETTINGS \ 163938176a4SStephen Warren "scriptaddr=0x10000000\0" \ 164938176a4SStephen Warren "kernel_addr_r=0x01000000\0" \ 165938176a4SStephen Warren "fdt_addr_r=0x02000000\0" \ 166938176a4SStephen Warren "ramdisk_addr_r=0x02100000\0" \ 167938176a4SStephen Warren 168*7992bfbfSAllen Martin #ifdef CONFIG_TEGRA_KEYBOARD 169*7992bfbfSAllen Martin #define STDIN_KBD_KBC ",tegra-kbc" 170*7992bfbfSAllen Martin #else 171*7992bfbfSAllen Martin #define STDIN_KBD_KBC "" 172*7992bfbfSAllen Martin #endif 173*7992bfbfSAllen Martin 174*7992bfbfSAllen Martin #ifdef CONFIG_USB_KEYBOARD 175*7992bfbfSAllen Martin #define STDIN_KBD_USB ",usbkbd" 176*7992bfbfSAllen Martin #define CONFIG_SYS_USB_EVENT_POLL 177*7992bfbfSAllen Martin #define CONFIG_PREBOOT "usb start" 178*7992bfbfSAllen Martin #else 179*7992bfbfSAllen Martin #define STDIN_KBD_USB "" 180*7992bfbfSAllen Martin #endif 181*7992bfbfSAllen Martin 182*7992bfbfSAllen Martin #define TEGRA_DEVICE_SETTINGS \ 183*7992bfbfSAllen Martin "stdin=serial" STDIN_KBD_KBC STDIN_KBD_USB "\0" \ 184*7992bfbfSAllen Martin "stdout=serial\0" \ 185*7992bfbfSAllen Martin "stderr=serial\0" \ 186*7992bfbfSAllen Martin 18729f3e3f2STom Warren #define CONFIG_EXTRA_ENV_SETTINGS \ 18829f3e3f2STom Warren TEGRA_DEVICE_SETTINGS \ 189938176a4SStephen Warren MEM_LAYOUT_ENV_SETTINGS \ 19029f3e3f2STom Warren BOOTCMDS_COMMON 19129f3e3f2STom Warren 19229f3e3f2STom Warren /* overrides for SPL build here */ 19329f3e3f2STom Warren #ifdef CONFIG_SPL_BUILD 19429f3e3f2STom Warren 19529f3e3f2STom Warren /* remove devicetree support */ 19629f3e3f2STom Warren #ifdef CONFIG_OF_CONTROL 19729f3e3f2STom Warren #undef CONFIG_OF_CONTROL 19829f3e3f2STom Warren #endif 19929f3e3f2STom Warren 20029f3e3f2STom Warren /* remove I2C support */ 20129f3e3f2STom Warren #ifdef CONFIG_TEGRA_I2C 20229f3e3f2STom Warren #undef CONFIG_TEGRA_I2C 20329f3e3f2STom Warren #endif 20429f3e3f2STom Warren #ifdef CONFIG_CMD_I2C 20529f3e3f2STom Warren #undef CONFIG_CMD_I2C 20629f3e3f2STom Warren #endif 20729f3e3f2STom Warren 20829f3e3f2STom Warren /* remove MMC support */ 20929f3e3f2STom Warren #ifdef CONFIG_MMC 21029f3e3f2STom Warren #undef CONFIG_MMC 21129f3e3f2STom Warren #endif 21229f3e3f2STom Warren #ifdef CONFIG_GENERIC_MMC 21329f3e3f2STom Warren #undef CONFIG_GENERIC_MMC 21429f3e3f2STom Warren #endif 21529f3e3f2STom Warren #ifdef CONFIG_TEGRA_MMC 21629f3e3f2STom Warren #undef CONFIG_TEGRA_MMC 21729f3e3f2STom Warren #endif 21829f3e3f2STom Warren #ifdef CONFIG_CMD_MMC 21929f3e3f2STom Warren #undef CONFIG_CMD_MMC 22029f3e3f2STom Warren #endif 22129f3e3f2STom Warren 22229f3e3f2STom Warren /* remove partitions/filesystems */ 22329f3e3f2STom Warren #ifdef CONFIG_DOS_PARTITION 22429f3e3f2STom Warren #undef CONFIG_DOS_PARTITION 22529f3e3f2STom Warren #endif 22629f3e3f2STom Warren #ifdef CONFIG_EFI_PARTITION 22729f3e3f2STom Warren #undef CONFIG_EFI_PARTITION 22829f3e3f2STom Warren #endif 22929f3e3f2STom Warren #ifdef CONFIG_CMD_EXT2 23029f3e3f2STom Warren #undef CONFIG_CMD_EXT2 23129f3e3f2STom Warren #endif 23229f3e3f2STom Warren #ifdef CONFIG_CMD_FAT 23329f3e3f2STom Warren #undef CONFIG_CMD_FAT 23429f3e3f2STom Warren #endif 23529f3e3f2STom Warren 23629f3e3f2STom Warren /* remove USB */ 23729f3e3f2STom Warren #ifdef CONFIG_USB_EHCI 23829f3e3f2STom Warren #undef CONFIG_USB_EHCI 23929f3e3f2STom Warren #endif 24029f3e3f2STom Warren #ifdef CONFIG_USB_EHCI_TEGRA 24129f3e3f2STom Warren #undef CONFIG_USB_EHCI_TEGRA 24229f3e3f2STom Warren #endif 24329f3e3f2STom Warren #ifdef CONFIG_USB_STORAGE 24429f3e3f2STom Warren #undef CONFIG_USB_STORAGE 24529f3e3f2STom Warren #endif 24629f3e3f2STom Warren #ifdef CONFIG_CMD_USB 24729f3e3f2STom Warren #undef CONFIG_CMD_USB 24829f3e3f2STom Warren #endif 24929f3e3f2STom Warren 25001ca2865SStephen Warren /* remove part command support */ 25101ca2865SStephen Warren #ifdef CONFIG_PARTITION_UUIDS 25201ca2865SStephen Warren #undef CONFIG_PARTITION_UUIDS 25301ca2865SStephen Warren #endif 25401ca2865SStephen Warren 25501ca2865SStephen Warren #ifdef CONFIG_CMD_PART 25601ca2865SStephen Warren #undef CONFIG_CMD_PART 25701ca2865SStephen Warren #endif 25801ca2865SStephen Warren 25929f3e3f2STom Warren #endif /* CONFIG_SPL_BUILD */ 26029f3e3f2STom Warren 26129f3e3f2STom Warren #endif /* __TEGRA_COMMON_POST_H */ 262