1*d8ccbe93SHeiko Schocher /* 2*d8ccbe93SHeiko Schocher * (C) Copyright 2016 3*d8ccbe93SHeiko Schocher * Heiko Schocher, DENX Software Engineering, hs@denx.de. 4*d8ccbe93SHeiko Schocher * 5*d8ccbe93SHeiko Schocher * Based on: 6*d8ccbe93SHeiko Schocher * am335x_evm.h 7*d8ccbe93SHeiko Schocher * 8*d8ccbe93SHeiko Schocher * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 9*d8ccbe93SHeiko Schocher * 10*d8ccbe93SHeiko Schocher * SPDX-License-Identifier: GPL-2.0+ 11*d8ccbe93SHeiko Schocher */ 12*d8ccbe93SHeiko Schocher 13*d8ccbe93SHeiko Schocher #ifndef __CONFIG_AM335X_SHC_H 14*d8ccbe93SHeiko Schocher #define __CONFIG_AM335X_SHC_H 15*d8ccbe93SHeiko Schocher 16*d8ccbe93SHeiko Schocher #include <configs/ti_am335x_common.h> 17*d8ccbe93SHeiko Schocher 18*d8ccbe93SHeiko Schocher /* settings we don;t want on this board */ 19*d8ccbe93SHeiko Schocher #undef CONFIG_SPL_AM33XX_ENABLE_RTC32K_OSC 20*d8ccbe93SHeiko Schocher #undef CONFIG_CMD_EXT4 21*d8ccbe93SHeiko Schocher #undef CONFIG_CMD_EXT4_WRITE 22*d8ccbe93SHeiko Schocher #undef CONFIG_CMD_SPI 23*d8ccbe93SHeiko Schocher 24*d8ccbe93SHeiko Schocher #define CONFIG_CMD_CACHE 25*d8ccbe93SHeiko Schocher 26*d8ccbe93SHeiko Schocher #ifndef CONFIG_SPL_BUILD 27*d8ccbe93SHeiko Schocher # define CONFIG_TIMESTAMP 28*d8ccbe93SHeiko Schocher #endif 29*d8ccbe93SHeiko Schocher 30*d8ccbe93SHeiko Schocher #define CONFIG_SYS_BOOTM_LEN (16 << 20) 31*d8ccbe93SHeiko Schocher 32*d8ccbe93SHeiko Schocher /* Clock Defines */ 33*d8ccbe93SHeiko Schocher #define V_OSCK 24000000 /* Clock output from T2 */ 34*d8ccbe93SHeiko Schocher #define V_SCLK (V_OSCK) 35*d8ccbe93SHeiko Schocher 36*d8ccbe93SHeiko Schocher /* 37*d8ccbe93SHeiko Schocher * in case of SD Card or Network boot we want to have a possibility to 38*d8ccbe93SHeiko Schocher * debrick the shc, therefore do not read environment from eMMC 39*d8ccbe93SHeiko Schocher */ 40*d8ccbe93SHeiko Schocher #if defined(CONFIG_SHC_SDBOOT) || defined(CONFIG_SHC_NETBOOT) 41*d8ccbe93SHeiko Schocher #define CONFIG_SYS_MMC_ENV_DEV 0 42*d8ccbe93SHeiko Schocher #else 43*d8ccbe93SHeiko Schocher #define CONFIG_SYS_MMC_ENV_DEV 1 44*d8ccbe93SHeiko Schocher #endif 45*d8ccbe93SHeiko Schocher 46*d8ccbe93SHeiko Schocher /* 47*d8ccbe93SHeiko Schocher * Info when using boot partitions: As environment resides within first 48*d8ccbe93SHeiko Schocher * 128 kB, MLO must start at 128 kB == 0x20000 49*d8ccbe93SHeiko Schocher * ENV at MMC Boot0 Partition - 0/Undefined=user, 1=boot0, 2=boot1, 50*d8ccbe93SHeiko Schocher * 4..7=general0..3 51*d8ccbe93SHeiko Schocher */ 52*d8ccbe93SHeiko Schocher #define CONFIG_ENV_SIZE 0x1000 /* 4 KB */ 53*d8ccbe93SHeiko Schocher #define CONFIG_ENV_OFFSET 0x7000 /* 28 kB */ 54*d8ccbe93SHeiko Schocher 55*d8ccbe93SHeiko Schocher #define CONFIG_HSMMC2_8BIT 56*d8ccbe93SHeiko Schocher 57*d8ccbe93SHeiko Schocher #define CONFIG_ENV_OFFSET_REDUND 0x9000 /* 36 kB */ 58*d8ccbe93SHeiko Schocher #define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE 59*d8ccbe93SHeiko Schocher 60*d8ccbe93SHeiko Schocher #ifndef CONFIG_SHC_ICT 61*d8ccbe93SHeiko Schocher /* 62*d8ccbe93SHeiko Schocher * In builds other than ICT, reset to retry after timeout 63*d8ccbe93SHeiko Schocher * Define a timeout after which a stopped bootloader continues autoboot 64*d8ccbe93SHeiko Schocher * (only works with CONFIG_RESET_TO_RETRY) 65*d8ccbe93SHeiko Schocher */ 66*d8ccbe93SHeiko Schocher # define CONFIG_BOOT_RETRY_TIME 30 67*d8ccbe93SHeiko Schocher # define CONFIG_RESET_TO_RETRY 68*d8ccbe93SHeiko Schocher #endif 69*d8ccbe93SHeiko Schocher 70*d8ccbe93SHeiko Schocher #define CONFIG_ENV_VARS_UBOOT_CONFIG 71*d8ccbe93SHeiko Schocher #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG 72*d8ccbe93SHeiko Schocher 73*d8ccbe93SHeiko Schocher #ifndef CONFIG_SPL_BUILD 74*d8ccbe93SHeiko Schocher #define CONFIG_EXTRA_ENV_SETTINGS \ 75*d8ccbe93SHeiko Schocher "loadaddr=0x80200000\0" \ 76*d8ccbe93SHeiko Schocher "kloadaddr=0x84000000\0" \ 77*d8ccbe93SHeiko Schocher "fdtaddr=0x85000000\0" \ 78*d8ccbe93SHeiko Schocher "fdt_high=0xffffffff\0" \ 79*d8ccbe93SHeiko Schocher "rdaddr=0x81000000\0" \ 80*d8ccbe93SHeiko Schocher "bootfile=uImage\0" \ 81*d8ccbe93SHeiko Schocher "fdtfile=am335x-shc.dtb\0" \ 82*d8ccbe93SHeiko Schocher "verify=no\0" \ 83*d8ccbe93SHeiko Schocher "serverip=10.55.152.184\0" \ 84*d8ccbe93SHeiko Schocher "rootpath=/srv/nfs/shc-rootfs\0" \ 85*d8ccbe93SHeiko Schocher "console=ttyO0,115200n8\0" \ 86*d8ccbe93SHeiko Schocher "optargs=quiet\0" \ 87*d8ccbe93SHeiko Schocher "mmcdev=1\0" \ 88*d8ccbe93SHeiko Schocher "harakiri=0\0" \ 89*d8ccbe93SHeiko Schocher "mmcpart=2\0" \ 90*d8ccbe93SHeiko Schocher "active_root=root1\0" \ 91*d8ccbe93SHeiko Schocher "inactive_root=root2\0" \ 92*d8ccbe93SHeiko Schocher "mmcrootfstype=ext4 rootwait\0" \ 93*d8ccbe93SHeiko Schocher "nfsopts=nolock\0" \ 94*d8ccbe93SHeiko Schocher "static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \ 95*d8ccbe93SHeiko Schocher "::off\0" \ 96*d8ccbe93SHeiko Schocher "ip_method=none\0" \ 97*d8ccbe93SHeiko Schocher "bootargs_defaults=setenv bootargs " \ 98*d8ccbe93SHeiko Schocher "console=${console} " \ 99*d8ccbe93SHeiko Schocher "${optargs}\0" \ 100*d8ccbe93SHeiko Schocher "mmcargs=run bootargs_defaults;" \ 101*d8ccbe93SHeiko Schocher "setenv bootargs ${bootargs} " \ 102*d8ccbe93SHeiko Schocher "root=${mmcroot} " \ 103*d8ccbe93SHeiko Schocher "rootfstype=${mmcrootfstype} ip=${ip_method}\0" \ 104*d8ccbe93SHeiko Schocher "netargs=setenv bootargs console=${console} " \ 105*d8ccbe93SHeiko Schocher "${optargs} " \ 106*d8ccbe93SHeiko Schocher "root=/dev/nfs " \ 107*d8ccbe93SHeiko Schocher "nfsroot=${serverip}:${rootpath},${nfsopts} rw " \ 108*d8ccbe93SHeiko Schocher "ip=dhcp\0" \ 109*d8ccbe93SHeiko Schocher "bootenv=uEnv.txt\0" \ 110*d8ccbe93SHeiko Schocher "loadbootenv=if fatload mmc ${mmcdev} ${loadaddr} ${bootenv}; then " \ 111*d8ccbe93SHeiko Schocher "echo Loaded environment from ${bootenv}; " \ 112*d8ccbe93SHeiko Schocher "run importbootenv; " \ 113*d8ccbe93SHeiko Schocher "fi;\0" \ 114*d8ccbe93SHeiko Schocher "importbootenv=echo Importing environment variables from uEnv.txt ...; " \ 115*d8ccbe93SHeiko Schocher "env import -t $loadaddr $filesize\0" \ 116*d8ccbe93SHeiko Schocher "loaduimagefat=fatload mmc ${mmcdev} ${kloadaddr} ${bootfile}\0" \ 117*d8ccbe93SHeiko Schocher "loaduimage=ext2load mmc ${mmcdev}:${mmcpart} ${kloadaddr} /boot/${bootfile}\0" \ 118*d8ccbe93SHeiko Schocher "loadfdt=ext2load mmc ${mmcdev}:${mmcpart} ${fdtaddr} /boot/${fdtfile}\0" \ 119*d8ccbe93SHeiko Schocher "netloaduimage=tftp ${loadaddr} ${bootfile}\0" \ 120*d8ccbe93SHeiko Schocher "netloadfdt=tftp ${fdtaddr} ${fdtfile}\0" \ 121*d8ccbe93SHeiko Schocher "mmcboot=echo Booting Linux from ${mmcdevice} ...; " \ 122*d8ccbe93SHeiko Schocher "run mmcargs; " \ 123*d8ccbe93SHeiko Schocher "if run loadfdt; then " \ 124*d8ccbe93SHeiko Schocher "echo device tree detected; " \ 125*d8ccbe93SHeiko Schocher "bootm ${kloadaddr} - ${fdtaddr}; " \ 126*d8ccbe93SHeiko Schocher "else " \ 127*d8ccbe93SHeiko Schocher "bootm ${kloadaddr}; " \ 128*d8ccbe93SHeiko Schocher "fi; \0" \ 129*d8ccbe93SHeiko Schocher "netboot=echo Booting from network ...; " \ 130*d8ccbe93SHeiko Schocher "setenv autoload no; " \ 131*d8ccbe93SHeiko Schocher "dhcp; " \ 132*d8ccbe93SHeiko Schocher "run netloaduimage; " \ 133*d8ccbe93SHeiko Schocher "run netargs; " \ 134*d8ccbe93SHeiko Schocher "echo NFS path: ${serverip}:${rootpath};" \ 135*d8ccbe93SHeiko Schocher "if run netloadfdt; then " \ 136*d8ccbe93SHeiko Schocher "echo device tree detected; " \ 137*d8ccbe93SHeiko Schocher "bootm ${loadaddr} - ${fdtaddr}; " \ 138*d8ccbe93SHeiko Schocher "else " \ 139*d8ccbe93SHeiko Schocher "bootm ${loadaddr}; " \ 140*d8ccbe93SHeiko Schocher "fi; \0" \ 141*d8ccbe93SHeiko Schocher "emmc_erase=if test ${harakiri} = 1 ; then echo erase emmc ...; setenv mmcdev 1; mmc erase 0 200; reset; fi; \0" \ 142*d8ccbe93SHeiko Schocher "mmcpart_gp=mmcpart gp 1 40; \0" \ 143*d8ccbe93SHeiko Schocher "mmcpart_enhance=mmcpart enhance 0 64; \0" \ 144*d8ccbe93SHeiko Schocher "mmcpart_rel_write=mmcpart rel_write 1f; \0" \ 145*d8ccbe93SHeiko Schocher "mmcpart_commit=mmcpart commit 1; \0" \ 146*d8ccbe93SHeiko Schocher "mmc_hw_part=run mmcpart_gp; run mmcpart_enhance; run mmcpart_rel_write; run mmcpart_commit; \0" \ 147*d8ccbe93SHeiko Schocher "led_success=gpio set 22; \0" \ 148*d8ccbe93SHeiko Schocher "fusecmd=mmc dev 1; if mmcpart iscommitted; then echo HW Partitioning already committed; mmcpart list; else run mmc_hw_part; fi; run led_success; \0" \ 149*d8ccbe93SHeiko Schocher "uenv_exec=if test -n $uenvcmd; then " \ 150*d8ccbe93SHeiko Schocher "echo Running uenvcmd ...; " \ 151*d8ccbe93SHeiko Schocher "run uenvcmd; " \ 152*d8ccbe93SHeiko Schocher "fi;\0" \ 153*d8ccbe93SHeiko Schocher "sd_setup=echo SD/MMC-Card detected on device 0; " \ 154*d8ccbe93SHeiko Schocher "setenv mmcdevice SD; " \ 155*d8ccbe93SHeiko Schocher "setenv mmcdev 0; " \ 156*d8ccbe93SHeiko Schocher "setenv mmcpart 2; " \ 157*d8ccbe93SHeiko Schocher "setenv mmcroot /dev/mmcblk${mmcdev}p${mmcpart};\0" \ 158*d8ccbe93SHeiko Schocher "emmc_setup=echo eMMC detected on device 1; " \ 159*d8ccbe93SHeiko Schocher "setenv mmcdevice eMMC; " \ 160*d8ccbe93SHeiko Schocher "setenv mmcdev 1; " \ 161*d8ccbe93SHeiko Schocher "run emmc_erase; " \ 162*d8ccbe93SHeiko Schocher "if test ${active_root} = root2; then " \ 163*d8ccbe93SHeiko Schocher "echo Active root is partition 6 (root2); " \ 164*d8ccbe93SHeiko Schocher "setenv mmcpart 6; " \ 165*d8ccbe93SHeiko Schocher "else " \ 166*d8ccbe93SHeiko Schocher "echo Active root is partition 5 (root1); " \ 167*d8ccbe93SHeiko Schocher "setenv mmcpart 5; " \ 168*d8ccbe93SHeiko Schocher "fi; " \ 169*d8ccbe93SHeiko Schocher "setenv mmcroot /dev/mmcblk${mmcdev}p${mmcpart};\0" 170*d8ccbe93SHeiko Schocher #endif /* #ifndef CONFIG_SPL_BUILD */ 171*d8ccbe93SHeiko Schocher 172*d8ccbe93SHeiko Schocher #if defined CONFIG_SHC_NETBOOT 173*d8ccbe93SHeiko Schocher /* Network Boot */ 174*d8ccbe93SHeiko Schocher # define CONFIG_BOOTCOMMAND \ 175*d8ccbe93SHeiko Schocher "run fusecmd; " \ 176*d8ccbe93SHeiko Schocher "if run netboot; then " \ 177*d8ccbe93SHeiko Schocher "echo Booting from network; " \ 178*d8ccbe93SHeiko Schocher "else " \ 179*d8ccbe93SHeiko Schocher "echo ERROR: Cannot boot from network!; " \ 180*d8ccbe93SHeiko Schocher "panic; " \ 181*d8ccbe93SHeiko Schocher "fi; " 182*d8ccbe93SHeiko Schocher 183*d8ccbe93SHeiko Schocher #elif defined CONFIG_SHC_SDBOOT /* !defined CONFIG_SHC_NETBOOT */ 184*d8ccbe93SHeiko Schocher /* SD-Card Boot */ 185*d8ccbe93SHeiko Schocher # define CONFIG_BOOTCOMMAND \ 186*d8ccbe93SHeiko Schocher "if mmc dev 0; mmc rescan; then " \ 187*d8ccbe93SHeiko Schocher "run sd_setup; " \ 188*d8ccbe93SHeiko Schocher "else " \ 189*d8ccbe93SHeiko Schocher "echo ERROR: SD/MMC-Card not detected!; " \ 190*d8ccbe93SHeiko Schocher "panic; " \ 191*d8ccbe93SHeiko Schocher "fi; " \ 192*d8ccbe93SHeiko Schocher "if run loaduimage; then " \ 193*d8ccbe93SHeiko Schocher "echo Bootable SD/MMC-Card inserted, booting from it!; " \ 194*d8ccbe93SHeiko Schocher "run mmcboot; " \ 195*d8ccbe93SHeiko Schocher "else " \ 196*d8ccbe93SHeiko Schocher "echo ERROR: Unable to load uImage from SD/MMC-Card!; " \ 197*d8ccbe93SHeiko Schocher "panic; " \ 198*d8ccbe93SHeiko Schocher "fi; " 199*d8ccbe93SHeiko Schocher 200*d8ccbe93SHeiko Schocher #elif defined CONFIG_SHC_ICT 201*d8ccbe93SHeiko Schocher /* ICT adapter boots only u-boot and does HW partitioning */ 202*d8ccbe93SHeiko Schocher # define CONFIG_BOOTCOMMAND \ 203*d8ccbe93SHeiko Schocher "if mmc dev 0; mmc rescan; then " \ 204*d8ccbe93SHeiko Schocher "run sd_setup; " \ 205*d8ccbe93SHeiko Schocher "else " \ 206*d8ccbe93SHeiko Schocher "echo ERROR: SD/MMC-Card not detected!; " \ 207*d8ccbe93SHeiko Schocher "panic; " \ 208*d8ccbe93SHeiko Schocher "fi; " \ 209*d8ccbe93SHeiko Schocher "run fusecmd; " 210*d8ccbe93SHeiko Schocher 211*d8ccbe93SHeiko Schocher #else /* !defined CONFIG_SHC_NETBOOT, !defined CONFIG_SHC_SDBOOT */ 212*d8ccbe93SHeiko Schocher /* Regular Boot from internal eMMC */ 213*d8ccbe93SHeiko Schocher # define CONFIG_BOOTCOMMAND \ 214*d8ccbe93SHeiko Schocher "if mmc dev 1; mmc rescan; then " \ 215*d8ccbe93SHeiko Schocher "run emmc_setup; " \ 216*d8ccbe93SHeiko Schocher "else " \ 217*d8ccbe93SHeiko Schocher "echo ERROR: eMMC device not detected!; " \ 218*d8ccbe93SHeiko Schocher "panic; " \ 219*d8ccbe93SHeiko Schocher "fi; " \ 220*d8ccbe93SHeiko Schocher "if run loaduimage; then " \ 221*d8ccbe93SHeiko Schocher "run mmcboot; " \ 222*d8ccbe93SHeiko Schocher "else " \ 223*d8ccbe93SHeiko Schocher "echo ERROR Unable to load uImage from eMMC!; " \ 224*d8ccbe93SHeiko Schocher "echo Performing Rollback!; " \ 225*d8ccbe93SHeiko Schocher "setenv _active_ ${active_root}; " \ 226*d8ccbe93SHeiko Schocher "setenv _inactive_ ${inactive_root}; " \ 227*d8ccbe93SHeiko Schocher "setenv active_root ${_inactive_}; " \ 228*d8ccbe93SHeiko Schocher "setenv inactive_root ${_active_}; " \ 229*d8ccbe93SHeiko Schocher "saveenv; " \ 230*d8ccbe93SHeiko Schocher "reset; " \ 231*d8ccbe93SHeiko Schocher "fi; " 232*d8ccbe93SHeiko Schocher 233*d8ccbe93SHeiko Schocher #endif /* Regular Boot */ 234*d8ccbe93SHeiko Schocher 235*d8ccbe93SHeiko Schocher /* NS16550 Configuration */ 236*d8ccbe93SHeiko Schocher #define CONFIG_SYS_NS16550_COM1 0x44e09000 /* UART0 */ 237*d8ccbe93SHeiko Schocher #define CONFIG_SYS_NS16550_COM2 0x48022000 /* UART1 */ 238*d8ccbe93SHeiko Schocher #define CONFIG_SYS_NS16550_COM3 0x48024000 /* UART2 */ 239*d8ccbe93SHeiko Schocher #define CONFIG_SYS_NS16550_COM4 0x481a6000 /* UART3 */ 240*d8ccbe93SHeiko Schocher #define CONFIG_SYS_NS16550_COM5 0x481a8000 /* UART4 */ 241*d8ccbe93SHeiko Schocher #define CONFIG_SYS_NS16550_COM6 0x481aa000 /* UART5 */ 242*d8ccbe93SHeiko Schocher #define CONFIG_CONS_INDEX 1 243*d8ccbe93SHeiko Schocher 244*d8ccbe93SHeiko Schocher /* PMIC support */ 245*d8ccbe93SHeiko Schocher #define CONFIG_POWER_TPS65217 246*d8ccbe93SHeiko Schocher 247*d8ccbe93SHeiko Schocher /* SPL */ 248*d8ccbe93SHeiko Schocher 249*d8ccbe93SHeiko Schocher /* 250*d8ccbe93SHeiko Schocher * Disable MMC DM for SPL build and can be re-enabled after adding 251*d8ccbe93SHeiko Schocher * DM support in SPL 252*d8ccbe93SHeiko Schocher */ 253*d8ccbe93SHeiko Schocher #ifdef CONFIG_SPL_BUILD 254*d8ccbe93SHeiko Schocher #undef CONFIG_DM_MMC 255*d8ccbe93SHeiko Schocher #undef CONFIG_TIMER 256*d8ccbe93SHeiko Schocher #endif 257*d8ccbe93SHeiko Schocher 258*d8ccbe93SHeiko Schocher #define CONFIG_CMD_DHCP 259*d8ccbe93SHeiko Schocher #define CONFIG_CMD_PING 260*d8ccbe93SHeiko Schocher #define CONFIG_DRIVER_TI_CPSW 261*d8ccbe93SHeiko Schocher #define CONFIG_MII 262*d8ccbe93SHeiko Schocher #define CONFIG_BOOTP_DEFAULT 263*d8ccbe93SHeiko Schocher #define CONFIG_BOOTP_DNS 264*d8ccbe93SHeiko Schocher #define CONFIG_BOOTP_DNS2 265*d8ccbe93SHeiko Schocher #define CONFIG_BOOTP_SEND_HOSTNAME 266*d8ccbe93SHeiko Schocher #define CONFIG_BOOTP_GATEWAY 267*d8ccbe93SHeiko Schocher #define CONFIG_BOOTP_SUBNETMASK 268*d8ccbe93SHeiko Schocher #define CONFIG_NET_RETRY_COUNT 10 269*d8ccbe93SHeiko Schocher #define CONFIG_NET_MULTI 270*d8ccbe93SHeiko Schocher #define CONFIG_PHY_ADDR 0 271*d8ccbe93SHeiko Schocher #define CONFIG_PHY_SMSC 272*d8ccbe93SHeiko Schocher 273*d8ccbe93SHeiko Schocher /* I2C configuration */ 274*d8ccbe93SHeiko Schocher #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* Main EEPROM */ 275*d8ccbe93SHeiko Schocher #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2 276*d8ccbe93SHeiko Schocher #define CONFIG_SYS_I2C_SPEED 400000 277*d8ccbe93SHeiko Schocher #define CONFIG_SYS_I2C_SLAVE 1 278*d8ccbe93SHeiko Schocher 279*d8ccbe93SHeiko Schocher #define CONFIG_SHOW_BOOT_PROGRESS 280*d8ccbe93SHeiko Schocher #endif /* ! __CONFIG_AM335X_SHC_H */ 281