1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * am335x_evm.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or 7*4882a593Smuzhiyun * modify it under the terms of the GNU General Public License as 8*4882a593Smuzhiyun * published by the Free Software Foundation version 2. 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This program is distributed "as is" WITHOUT ANY WARRANTY of any 11*4882a593Smuzhiyun * kind, whether express or implied; without even the implied warranty 12*4882a593Smuzhiyun * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*4882a593Smuzhiyun * GNU General Public License for more details. 14*4882a593Smuzhiyun */ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #ifndef __CONFIG_BALTOS_H 17*4882a593Smuzhiyun #define __CONFIG_BALTOS_H 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun #include <linux/sizes.h> 20*4882a593Smuzhiyun #include <configs/ti_am335x_common.h> 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #define CONFIG_MACH_TYPE MACH_TYPE_AM335XEVM 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun /* Clock Defines */ 25*4882a593Smuzhiyun #define V_OSCK 24000000 /* Clock output from T2 */ 26*4882a593Smuzhiyun #define V_SCLK (V_OSCK) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun /* Custom script for NOR */ 29*4882a593Smuzhiyun #define CONFIG_SYS_LDSCRIPT "board/vscom/baltos/u-boot.lds" 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun /* Always 128 KiB env size */ 32*4882a593Smuzhiyun #define CONFIG_ENV_SIZE (128 << 10) 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun /* FIT support */ 35*4882a593Smuzhiyun #define CONFIG_SYS_BOOTM_LEN SZ_64M 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun /* UBI Support */ 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun /* I2C configuration */ 40*4882a593Smuzhiyun #undef CONFIG_SYS_OMAP24_I2C_SPEED 41*4882a593Smuzhiyun #define CONFIG_SYS_OMAP24_I2C_SPEED 1000 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #ifdef CONFIG_NAND 44*4882a593Smuzhiyun #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x00080000 45*4882a593Smuzhiyun #ifdef CONFIG_SPL_OS_BOOT 46*4882a593Smuzhiyun #define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x00200000 /* kernel offset */ 47*4882a593Smuzhiyun #endif 48*4882a593Smuzhiyun #define NANDARGS \ 49*4882a593Smuzhiyun "mtdids=" MTDIDS_DEFAULT "\0" \ 50*4882a593Smuzhiyun "mtdparts=" MTDPARTS_DEFAULT "\0" \ 51*4882a593Smuzhiyun "nandargs=setenv bootargs console=${console} " \ 52*4882a593Smuzhiyun "${optargs} " \ 53*4882a593Smuzhiyun "${mtdparts} " \ 54*4882a593Smuzhiyun "root=${nandroot} " \ 55*4882a593Smuzhiyun "rootfstype=${nandrootfstype}\0" \ 56*4882a593Smuzhiyun "nandroot=ubi0:rootfs rw ubi.mtd=5\0" \ 57*4882a593Smuzhiyun "nandrootfstype=ubifs rootwait=1\0" \ 58*4882a593Smuzhiyun "nandboot=echo Booting from nand ...; " \ 59*4882a593Smuzhiyun "run nandargs; " \ 60*4882a593Smuzhiyun "setenv loadaddr 0x84000000; " \ 61*4882a593Smuzhiyun "ubi part UBI; " \ 62*4882a593Smuzhiyun "ubifsmount ubi0:kernel; " \ 63*4882a593Smuzhiyun "ubifsload $loadaddr kernel-fit.itb;" \ 64*4882a593Smuzhiyun "ubifsumount; " \ 65*4882a593Smuzhiyun "bootm ${loadaddr}#conf${board_name}; " \ 66*4882a593Smuzhiyun "if test $? -ne 0; then echo Using default FIT config; " \ 67*4882a593Smuzhiyun "bootm ${loadaddr}; fi;\0" 68*4882a593Smuzhiyun #else 69*4882a593Smuzhiyun #define NANDARGS "" 70*4882a593Smuzhiyun #endif 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun #ifndef CONFIG_SPL_BUILD 75*4882a593Smuzhiyun #define CONFIG_EXTRA_ENV_SETTINGS \ 76*4882a593Smuzhiyun DEFAULT_LINUX_BOOT_ENV \ 77*4882a593Smuzhiyun "boot_fdt=try\0" \ 78*4882a593Smuzhiyun "bootpart=0:2\0" \ 79*4882a593Smuzhiyun "bootdir=/boot\0" \ 80*4882a593Smuzhiyun "bootfile=zImage\0" \ 81*4882a593Smuzhiyun "fdtfile=undefined\0" \ 82*4882a593Smuzhiyun "console=ttyO0,115200n8\0" \ 83*4882a593Smuzhiyun "partitions=" \ 84*4882a593Smuzhiyun "uuid_disk=${uuid_gpt_disk};" \ 85*4882a593Smuzhiyun "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \ 86*4882a593Smuzhiyun "optargs=\0" \ 87*4882a593Smuzhiyun "mmcdev=0\0" \ 88*4882a593Smuzhiyun "mmcroot=/dev/mmcblk0p2 ro\0" \ 89*4882a593Smuzhiyun "usbroot=/dev/sda2 ro\0" \ 90*4882a593Smuzhiyun "mmcrootfstype=ext4 rootwait\0" \ 91*4882a593Smuzhiyun "usbrootfstype=ext4 rootwait\0" \ 92*4882a593Smuzhiyun "rootpath=/export/rootfs\0" \ 93*4882a593Smuzhiyun "nfsopts=nolock\0" \ 94*4882a593Smuzhiyun "static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}" \ 95*4882a593Smuzhiyun "::off\0" \ 96*4882a593Smuzhiyun "ramroot=/dev/ram0 rw\0" \ 97*4882a593Smuzhiyun "ramrootfstype=ext2\0" \ 98*4882a593Smuzhiyun "mmcargs=setenv bootargs console=${console} " \ 99*4882a593Smuzhiyun "${optargs} " \ 100*4882a593Smuzhiyun "${mtdparts} " \ 101*4882a593Smuzhiyun "root=${mmcroot} " \ 102*4882a593Smuzhiyun "rootfstype=${mmcrootfstype}\0" \ 103*4882a593Smuzhiyun "usbargs=setenv bootargs console=${console} " \ 104*4882a593Smuzhiyun "${optargs} " \ 105*4882a593Smuzhiyun "${mtdparts} " \ 106*4882a593Smuzhiyun "root=${usbroot} " \ 107*4882a593Smuzhiyun "rootfstype=${usbrootfstype}\0" \ 108*4882a593Smuzhiyun "spiroot=/dev/mtdblock4 rw\0" \ 109*4882a593Smuzhiyun "spirootfstype=jffs2\0" \ 110*4882a593Smuzhiyun "spisrcaddr=0xe0000\0" \ 111*4882a593Smuzhiyun "spiimgsize=0x362000\0" \ 112*4882a593Smuzhiyun "spibusno=0\0" \ 113*4882a593Smuzhiyun "spiargs=setenv bootargs console=${console} " \ 114*4882a593Smuzhiyun "${optargs} " \ 115*4882a593Smuzhiyun "root=${spiroot} " \ 116*4882a593Smuzhiyun "rootfstype=${spirootfstype}\0" \ 117*4882a593Smuzhiyun "netargs=setenv bootargs console=${console} " \ 118*4882a593Smuzhiyun "${optargs} " \ 119*4882a593Smuzhiyun "root=/dev/nfs " \ 120*4882a593Smuzhiyun "nfsroot=${serverip}:${rootpath},${nfsopts} rw " \ 121*4882a593Smuzhiyun "ip=dhcp\0" \ 122*4882a593Smuzhiyun "bootenv=uEnv.txt\0" \ 123*4882a593Smuzhiyun "loadbootenv=load mmc ${mmcdev} ${loadaddr} ${bootenv}\0" \ 124*4882a593Smuzhiyun "usbloadbootenv=load usb 0:1 ${loadaddr} ${bootenv}\0" \ 125*4882a593Smuzhiyun "importbootenv=echo Importing environment from mmc ...; " \ 126*4882a593Smuzhiyun "env import -t $loadaddr $filesize\0" \ 127*4882a593Smuzhiyun "usbimportbootenv=echo Importing environment from USB ...; " \ 128*4882a593Smuzhiyun "env import -t $loadaddr $filesize\0" \ 129*4882a593Smuzhiyun "ramargs=setenv bootargs console=${console} " \ 130*4882a593Smuzhiyun "${optargs} " \ 131*4882a593Smuzhiyun "root=${ramroot} " \ 132*4882a593Smuzhiyun "rootfstype=${ramrootfstype}\0" \ 133*4882a593Smuzhiyun "loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \ 134*4882a593Smuzhiyun "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ 135*4882a593Smuzhiyun "usbloadimage=load usb 0:1 ${loadaddr} kernel-fit.itb\0" \ 136*4882a593Smuzhiyun "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ 137*4882a593Smuzhiyun "usbloados=run usbargs; " \ 138*4882a593Smuzhiyun "bootm ${loadaddr}#conf${board_name}; " \ 139*4882a593Smuzhiyun "if test $? -ne 0; then " \ 140*4882a593Smuzhiyun "echo Using default FIT configuration; " \ 141*4882a593Smuzhiyun "bootm ${loadaddr}; " \ 142*4882a593Smuzhiyun "fi;\0" \ 143*4882a593Smuzhiyun "mmcloados=run mmcargs; " \ 144*4882a593Smuzhiyun "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ 145*4882a593Smuzhiyun "if run loadfdt; then " \ 146*4882a593Smuzhiyun "bootz ${loadaddr} - ${fdtaddr}; " \ 147*4882a593Smuzhiyun "else " \ 148*4882a593Smuzhiyun "if test ${boot_fdt} = try; then " \ 149*4882a593Smuzhiyun "bootz; " \ 150*4882a593Smuzhiyun "else " \ 151*4882a593Smuzhiyun "echo WARN: Cannot load the DT; " \ 152*4882a593Smuzhiyun "fi; " \ 153*4882a593Smuzhiyun "fi; " \ 154*4882a593Smuzhiyun "else " \ 155*4882a593Smuzhiyun "bootz; " \ 156*4882a593Smuzhiyun "fi;\0" \ 157*4882a593Smuzhiyun "usbboot=usb reset; " \ 158*4882a593Smuzhiyun "if usb storage; then " \ 159*4882a593Smuzhiyun "echo USB drive found;" \ 160*4882a593Smuzhiyun "if run usbloadbootenv; then " \ 161*4882a593Smuzhiyun "echo Loaded environment from ${bootenv};" \ 162*4882a593Smuzhiyun "run usbimportbootenv;" \ 163*4882a593Smuzhiyun "fi;" \ 164*4882a593Smuzhiyun "if test -n $uenvcmd; then " \ 165*4882a593Smuzhiyun "echo Running uenvcmd ...;" \ 166*4882a593Smuzhiyun "run uenvcmd;" \ 167*4882a593Smuzhiyun "fi;" \ 168*4882a593Smuzhiyun "if run usbloadimage; then " \ 169*4882a593Smuzhiyun "run usbloados;" \ 170*4882a593Smuzhiyun "fi;" \ 171*4882a593Smuzhiyun "fi;\0" \ 172*4882a593Smuzhiyun "mmcboot=mmc dev ${mmcdev}; " \ 173*4882a593Smuzhiyun "if mmc rescan; then " \ 174*4882a593Smuzhiyun "echo SD/MMC found on device ${mmcdev};" \ 175*4882a593Smuzhiyun "if run loadbootenv; then " \ 176*4882a593Smuzhiyun "echo Loaded environment from ${bootenv};" \ 177*4882a593Smuzhiyun "run importbootenv;" \ 178*4882a593Smuzhiyun "fi;" \ 179*4882a593Smuzhiyun "if test -n $uenvcmd; then " \ 180*4882a593Smuzhiyun "echo Running uenvcmd ...;" \ 181*4882a593Smuzhiyun "run uenvcmd;" \ 182*4882a593Smuzhiyun "fi;" \ 183*4882a593Smuzhiyun "if run loadimage; then " \ 184*4882a593Smuzhiyun "run mmcloados;" \ 185*4882a593Smuzhiyun "fi;" \ 186*4882a593Smuzhiyun "fi;\0" \ 187*4882a593Smuzhiyun "spiboot=echo Booting from spi ...; " \ 188*4882a593Smuzhiyun "run spiargs; " \ 189*4882a593Smuzhiyun "sf probe ${spibusno}:0; " \ 190*4882a593Smuzhiyun "sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; " \ 191*4882a593Smuzhiyun "bootz ${loadaddr}\0" \ 192*4882a593Smuzhiyun "netboot=echo Booting from network ...; " \ 193*4882a593Smuzhiyun "setenv autoload no; " \ 194*4882a593Smuzhiyun "dhcp; " \ 195*4882a593Smuzhiyun "tftp ${loadaddr} ${bootfile}; " \ 196*4882a593Smuzhiyun "tftp ${fdtaddr} ${fdtfile}; " \ 197*4882a593Smuzhiyun "run netargs; " \ 198*4882a593Smuzhiyun "bootz ${loadaddr} - ${fdtaddr}\0" \ 199*4882a593Smuzhiyun "ramboot=echo Booting from ramdisk ...; " \ 200*4882a593Smuzhiyun "run ramargs; " \ 201*4882a593Smuzhiyun "bootz ${loadaddr} ${rdaddr} ${fdtaddr}\0" \ 202*4882a593Smuzhiyun "findfdt=setenv fdtfile am335x-baltos.dtb\0" \ 203*4882a593Smuzhiyun NANDARGS 204*4882a593Smuzhiyun /*DFUARGS*/ 205*4882a593Smuzhiyun #endif 206*4882a593Smuzhiyun 207*4882a593Smuzhiyun #define CONFIG_BOOTCOMMAND \ 208*4882a593Smuzhiyun "run findfdt; " \ 209*4882a593Smuzhiyun "run usbboot;" \ 210*4882a593Smuzhiyun "run mmcboot;" \ 211*4882a593Smuzhiyun "setenv mmcdev 1; " \ 212*4882a593Smuzhiyun "setenv bootpart 1:2; " \ 213*4882a593Smuzhiyun "run mmcboot;" \ 214*4882a593Smuzhiyun "run nandboot;" 215*4882a593Smuzhiyun 216*4882a593Smuzhiyun /* NS16550 Configuration */ 217*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM1 0x44e09000 /* Base EVM has UART0 */ 218*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM2 0x48022000 /* UART1 */ 219*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM3 0x48024000 /* UART2 */ 220*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM4 0x481a6000 /* UART3 */ 221*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM5 0x481a8000 /* UART4 */ 222*4882a593Smuzhiyun #define CONFIG_SYS_NS16550_COM6 0x481aa000 /* UART5 */ 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun #define CONFIG_ENV_EEPROM_IS_ON_I2C 225*4882a593Smuzhiyun #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* Main EEPROM */ 226*4882a593Smuzhiyun #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun /* PMIC support */ 229*4882a593Smuzhiyun #define CONFIG_POWER_TPS65910 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun /* SPL */ 232*4882a593Smuzhiyun #ifndef CONFIG_NOR_BOOT 233*4882a593Smuzhiyun /* Bootcount using the RTC block */ 234*4882a593Smuzhiyun #define CONFIG_BOOTCOUNT_LIMIT 235*4882a593Smuzhiyun #define CONFIG_BOOTCOUNT_AM33XX 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun /* USB gadget RNDIS */ 238*4882a593Smuzhiyun 239*4882a593Smuzhiyun /* General network SPL, both CPSW and USB gadget RNDIS */ 240*4882a593Smuzhiyun #define CONFIG_SPL_NET_VCI_STRING "AM335x U-Boot SPL"*/ 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun #ifdef CONFIG_NAND 243*4882a593Smuzhiyun #define CONFIG_SYS_NAND_5_ADDR_CYCLE 244*4882a593Smuzhiyun #define CONFIG_SYS_NAND_PAGE_COUNT (CONFIG_SYS_NAND_BLOCK_SIZE / \ 245*4882a593Smuzhiyun CONFIG_SYS_NAND_PAGE_SIZE) 246*4882a593Smuzhiyun #define CONFIG_SYS_NAND_PAGE_SIZE 2048 247*4882a593Smuzhiyun #define CONFIG_SYS_NAND_OOBSIZE 64 248*4882a593Smuzhiyun #define CONFIG_SYS_NAND_BLOCK_SIZE (128*1024) 249*4882a593Smuzhiyun #define CONFIG_SYS_NAND_BAD_BLOCK_POS NAND_LARGE_BADBLOCK_POS 250*4882a593Smuzhiyun #define CONFIG_SYS_NAND_ECCPOS { 2, 3, 4, 5, 6, 7, 8, 9, \ 251*4882a593Smuzhiyun 10, 11, 12, 13, 14, 15, 16, 17, \ 252*4882a593Smuzhiyun 18, 19, 20, 21, 22, 23, 24, 25, \ 253*4882a593Smuzhiyun 26, 27, 28, 29, 30, 31, 32, 33, \ 254*4882a593Smuzhiyun 34, 35, 36, 37, 38, 39, 40, 41, \ 255*4882a593Smuzhiyun 42, 43, 44, 45, 46, 47, 48, 49, \ 256*4882a593Smuzhiyun 50, 51, 52, 53, 54, 55, 56, 57, } 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun #define CONFIG_SYS_NAND_ECCSIZE 512 259*4882a593Smuzhiyun #define CONFIG_SYS_NAND_ECCBYTES 14 260*4882a593Smuzhiyun #define CONFIG_SYS_NAND_ONFI_DETECTION 261*4882a593Smuzhiyun #define CONFIG_NAND_OMAP_ECCSCHEME OMAP_ECC_BCH8_CODE_HW 262*4882a593Smuzhiyun #define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_TEXT_BASE 263*4882a593Smuzhiyun #endif 264*4882a593Smuzhiyun #endif 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun /* 267*4882a593Smuzhiyun * USB configuration. We enable MUSB support, both for host and for 268*4882a593Smuzhiyun * gadget. We set USB0 as peripheral and USB1 as host, based on the 269*4882a593Smuzhiyun * board schematic and physical port wired to each. Then for host we 270*4882a593Smuzhiyun * add mass storage support and for gadget we add both RNDIS ethernet 271*4882a593Smuzhiyun * and DFU. 272*4882a593Smuzhiyun */ 273*4882a593Smuzhiyun #define CONFIG_USB_MUSB_DSPS 274*4882a593Smuzhiyun #define CONFIG_USB_MUSB_PIO_ONLY 275*4882a593Smuzhiyun #define CONFIG_USB_MUSB_DISABLE_BULK_COMBINE_SPLIT 276*4882a593Smuzhiyun #define CONFIG_AM335X_USB0 277*4882a593Smuzhiyun #define CONFIG_AM335X_USB0_MODE MUSB_HOST 278*4882a593Smuzhiyun #define CONFIG_AM335X_USB1 279*4882a593Smuzhiyun #define CONFIG_AM335X_USB1_MODE MUSB_OTG 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT) 282*4882a593Smuzhiyun /* disable host part of MUSB in SPL */ 283*4882a593Smuzhiyun /* disable EFI partitions and partition UUID support */ 284*4882a593Smuzhiyun /* 285*4882a593Smuzhiyun * Disable CPSW SPL support so we fit within the 101KiB limit. 286*4882a593Smuzhiyun */ 287*4882a593Smuzhiyun #endif 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun /* Network. */ 290*4882a593Smuzhiyun #define CONFIG_PHY_ADDR 0 291*4882a593Smuzhiyun #define CONFIG_PHY_SMSC 292*4882a593Smuzhiyun #define CONFIG_MII 293*4882a593Smuzhiyun #define CONFIG_PHY_ATHEROS 294*4882a593Smuzhiyun 295*4882a593Smuzhiyun /* NAND support */ 296*4882a593Smuzhiyun #ifdef CONFIG_NAND 297*4882a593Smuzhiyun #define GPMC_NAND_ECC_LP_x8_LAYOUT 1 298*4882a593Smuzhiyun #if !defined(CONFIG_SPI_BOOT) && !defined(CONFIG_NOR_BOOT) 299*4882a593Smuzhiyun #define MTDIDS_DEFAULT "nand0=omap2-nand.0" 300*4882a593Smuzhiyun #define MTDPARTS_DEFAULT "mtdparts=omap2-nand.0:128k(SPL)," \ 301*4882a593Smuzhiyun "128k(SPL.backup1)," \ 302*4882a593Smuzhiyun "128k(SPL.backup2)," \ 303*4882a593Smuzhiyun "128k(SPL.backup3)," \ 304*4882a593Smuzhiyun "1920k(u-boot)," \ 305*4882a593Smuzhiyun "-(UBI)" 306*4882a593Smuzhiyun #endif 307*4882a593Smuzhiyun #endif 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun #endif /* ! __CONFIG_BALTOS_H */ 310