19316e144SStephen Warren /* 29316e144SStephen Warren * (C) Copyright 2012 Stephen Warren 39316e144SStephen Warren * 49316e144SStephen Warren * See file CREDITS for list of people who contributed to this 59316e144SStephen Warren * project. 69316e144SStephen Warren * 79316e144SStephen Warren * This program is free software; you can redistribute it and/or 89316e144SStephen Warren * modify it under the terms of the GNU General Public License 99316e144SStephen Warren * version 2 as published by the Free Software Foundation. 109316e144SStephen Warren * 119316e144SStephen Warren * This program is distributed in the hope that it will be useful, but 129316e144SStephen Warren * WITHOUT ANY WARRANTY; without even the implied warranty of 139316e144SStephen Warren * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 149316e144SStephen Warren * GNU General Public License for more details. 159316e144SStephen Warren */ 169316e144SStephen Warren 179316e144SStephen Warren #ifndef __CONFIG_H 189316e144SStephen Warren #define __CONFIG_H 199316e144SStephen Warren 209316e144SStephen Warren #include <linux/sizes.h> 219316e144SStephen Warren 229316e144SStephen Warren /* Architecture, CPU, etc.*/ 239316e144SStephen Warren #define CONFIG_SYS_GENERIC_BOARD 249316e144SStephen Warren #define CONFIG_BCM2835 259316e144SStephen Warren #define CONFIG_ARCH_CPU_INIT 269316e144SStephen Warren #define CONFIG_SYS_DCACHE_OFF 279316e144SStephen Warren /* 289316e144SStephen Warren * 2835 is a SKU in a series for which the 2708 is the first or primary SoC, 299316e144SStephen Warren * so 2708 has historically been used rather than a dedicated 2835 ID. 309316e144SStephen Warren */ 319316e144SStephen Warren #define CONFIG_MACH_TYPE MACH_TYPE_BCM2708 329316e144SStephen Warren 339316e144SStephen Warren /* Enable driver model */ 349316e144SStephen Warren #define CONFIG_DM 359316e144SStephen Warren #define CONFIG_CMD_DM 369316e144SStephen Warren #define CONFIG_DM_GPIO 379316e144SStephen Warren 389316e144SStephen Warren /* Memory layout */ 399316e144SStephen Warren #define CONFIG_NR_DRAM_BANKS 1 409316e144SStephen Warren #define CONFIG_SYS_SDRAM_BASE 0x00000000 419316e144SStephen Warren #define CONFIG_SYS_TEXT_BASE 0x00008000 429316e144SStephen Warren #define CONFIG_SYS_UBOOT_BASE CONFIG_SYS_TEXT_BASE 439316e144SStephen Warren /* 449316e144SStephen Warren * The board really has 256M. However, the VC (VideoCore co-processor) shares 459316e144SStephen Warren * the RAM, and uses a configurable portion at the top. We tell U-Boot that a 469316e144SStephen Warren * smaller amount of RAM is present in order to avoid stomping on the area 479316e144SStephen Warren * the VC uses. 489316e144SStephen Warren */ 499316e144SStephen Warren #define CONFIG_SYS_SDRAM_SIZE SZ_128M 509316e144SStephen Warren #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + \ 519316e144SStephen Warren CONFIG_SYS_SDRAM_SIZE - \ 529316e144SStephen Warren GENERATED_GBL_DATA_SIZE) 539316e144SStephen Warren #define CONFIG_SYS_MALLOC_LEN SZ_4M 549316e144SStephen Warren #define CONFIG_SYS_MEMTEST_START 0x00100000 559316e144SStephen Warren #define CONFIG_SYS_MEMTEST_END 0x00200000 569316e144SStephen Warren #define CONFIG_LOADADDR 0x00200000 579316e144SStephen Warren 589316e144SStephen Warren /* Flash */ 599316e144SStephen Warren #define CONFIG_SYS_NO_FLASH 609316e144SStephen Warren 619316e144SStephen Warren /* Devices */ 629316e144SStephen Warren /* GPIO */ 639316e144SStephen Warren #define CONFIG_BCM2835_GPIO 649316e144SStephen Warren /* LCD */ 659316e144SStephen Warren #define CONFIG_LCD 669316e144SStephen Warren #define CONFIG_LCD_DT_SIMPLEFB 679316e144SStephen Warren #define LCD_BPP LCD_COLOR16 689316e144SStephen Warren /* 699316e144SStephen Warren * Prevent allocation of RAM for FB; the real FB address is queried 709316e144SStephen Warren * dynamically from the VideoCore co-processor, and comes from RAM 719316e144SStephen Warren * not owned by the ARM CPU. 729316e144SStephen Warren */ 739316e144SStephen Warren #define CONFIG_FB_ADDR 0 749316e144SStephen Warren #define CONFIG_VIDEO_BCM2835 759316e144SStephen Warren #define CONFIG_SYS_WHITE_ON_BLACK 769316e144SStephen Warren 779316e144SStephen Warren /* SD/MMC configuration */ 789316e144SStephen Warren #define CONFIG_GENERIC_MMC 799316e144SStephen Warren #define CONFIG_MMC 809316e144SStephen Warren #define CONFIG_SDHCI 819316e144SStephen Warren #define CONFIG_MMC_SDHCI_IO_ACCESSORS 829316e144SStephen Warren #define CONFIG_BCM2835_SDHCI 839316e144SStephen Warren 849316e144SStephen Warren #define CONFIG_CMD_USB 859316e144SStephen Warren #ifdef CONFIG_CMD_USB 869316e144SStephen Warren #define CONFIG_USB_DWC2 879316e144SStephen Warren #define CONFIG_USB_DWC2_REG_ADDR 0x20980000 889316e144SStephen Warren #define CONFIG_USB_STORAGE 899316e144SStephen Warren #define CONFIG_USB_HOST_ETHER 909316e144SStephen Warren #define CONFIG_USB_ETHER_SMSC95XX 919316e144SStephen Warren #define CONFIG_MISC_INIT_R 929316e144SStephen Warren #endif 939316e144SStephen Warren 949316e144SStephen Warren /* Console UART */ 959316e144SStephen Warren #define CONFIG_PL011_SERIAL 969316e144SStephen Warren #define CONFIG_PL011_CLOCK 3000000 979316e144SStephen Warren #define CONFIG_PL01x_PORTS { (void *)0x20201000 } 989316e144SStephen Warren #define CONFIG_CONS_INDEX 0 999316e144SStephen Warren #define CONFIG_BAUDRATE 115200 1009316e144SStephen Warren 1019316e144SStephen Warren /* Console configuration */ 1029316e144SStephen Warren #define CONFIG_SYS_CBSIZE 1024 1039316e144SStephen Warren #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ 1049316e144SStephen Warren sizeof(CONFIG_SYS_PROMPT) + 16) 1059316e144SStephen Warren 1069316e144SStephen Warren /* Environment */ 1079316e144SStephen Warren #define CONFIG_ENV_SIZE SZ_16K 108*a5a83dc9SStephen Warren #define CONFIG_ENV_IS_IN_FAT 109*a5a83dc9SStephen Warren #define FAT_ENV_INTERFACE "mmc" 110*a5a83dc9SStephen Warren #define FAT_ENV_DEVICE_AND_PART "0:1" 111*a5a83dc9SStephen Warren #define FAT_ENV_FILE "uboot.env" 112*a5a83dc9SStephen Warren #define CONFIG_FAT_WRITE 1139316e144SStephen Warren #define CONFIG_ENV_VARS_UBOOT_CONFIG 1149316e144SStephen Warren #define CONFIG_SYS_LOAD_ADDR 0x1000000 1159316e144SStephen Warren #define CONFIG_CONSOLE_MUX 1169316e144SStephen Warren #define CONFIG_SYS_CONSOLE_IS_IN_ENV 1179316e144SStephen Warren 1189316e144SStephen Warren /* Shell */ 1199316e144SStephen Warren #define CONFIG_SYS_MAXARGS 8 1209316e144SStephen Warren #define CONFIG_SYS_PROMPT "U-Boot> " 1219316e144SStephen Warren #define CONFIG_COMMAND_HISTORY 1229316e144SStephen Warren 1239316e144SStephen Warren /* Commands */ 1249316e144SStephen Warren #include <config_cmd_default.h> 1259316e144SStephen Warren #define CONFIG_CMD_GPIO 1269316e144SStephen Warren #define CONFIG_CMD_MMC 1279316e144SStephen Warren #define CONFIG_PARTITION_UUIDS 1289316e144SStephen Warren #define CONFIG_CMD_PART 1299316e144SStephen Warren 1309316e144SStephen Warren /* Device tree support */ 1319316e144SStephen Warren #define CONFIG_OF_BOARD_SETUP 1329316e144SStephen Warren /* ATAGs support for bootm/bootz */ 1339316e144SStephen Warren #define CONFIG_SETUP_MEMORY_TAGS 1349316e144SStephen Warren #define CONFIG_CMDLINE_TAG 1359316e144SStephen Warren #define CONFIG_INITRD_TAG 1369316e144SStephen Warren 1379316e144SStephen Warren #include <config_distro_defaults.h> 1389316e144SStephen Warren 1399316e144SStephen Warren /* Some things don't make sense on this HW or yet */ 1409316e144SStephen Warren #undef CONFIG_CMD_FPGA 1419316e144SStephen Warren 1429316e144SStephen Warren /* Environment */ 1439316e144SStephen Warren #define ENV_DEVICE_SETTINGS \ 1449316e144SStephen Warren "stdin=serial,lcd\0" \ 1459316e144SStephen Warren "stdout=serial,lcd\0" \ 1469316e144SStephen Warren "stderr=serial,lcd\0" 1479316e144SStephen Warren 1489316e144SStephen Warren /* 1499316e144SStephen Warren * Memory layout for where various images get loaded by boot scripts: 1509316e144SStephen Warren * 1519316e144SStephen Warren * scriptaddr can be pretty much anywhere that doesn't conflict with something 1529316e144SStephen Warren * else. Put it low in memory to avoid conflicts. 1539316e144SStephen Warren * 1549316e144SStephen Warren * pxefile_addr_r can be pretty much anywhere that doesn't conflict with 1559316e144SStephen Warren * something else. Put it low in memory to avoid conflicts. 1569316e144SStephen Warren * 1579316e144SStephen Warren * kernel_addr_r must be within the first 128M of RAM in order for the 1589316e144SStephen Warren * kernel's CONFIG_AUTO_ZRELADDR option to work. Since the kernel will 1599316e144SStephen Warren * decompress itself to 0x8000 after the start of RAM, kernel_addr_r 1609316e144SStephen Warren * should not overlap that area, or the kernel will have to copy itself 1619316e144SStephen Warren * somewhere else before decompression. Similarly, the address of any other 1629316e144SStephen Warren * data passed to the kernel shouldn't overlap the start of RAM. Pushing 1639316e144SStephen Warren * this up to 16M allows for a sizable kernel to be decompressed below the 1649316e144SStephen Warren * compressed load address. 1659316e144SStephen Warren * 1669316e144SStephen Warren * fdt_addr_r simply shouldn't overlap anything else. Choosing 32M allows for 1679316e144SStephen Warren * the compressed kernel to be up to 16M too. 1689316e144SStephen Warren * 1699316e144SStephen Warren * ramdisk_addr_r simply shouldn't overlap anything else. Choosing 33M allows 1709316e144SStephen Warren * for the FDT/DTB to be up to 1M, which is hopefully plenty. 1719316e144SStephen Warren */ 1729316e144SStephen Warren #define ENV_MEM_LAYOUT_SETTINGS \ 1739316e144SStephen Warren "scriptaddr=0x00000000\0" \ 1749316e144SStephen Warren "pxefile_addr_r=0x00100000\0" \ 1759316e144SStephen Warren "kernel_addr_r=0x01000000\0" \ 1769316e144SStephen Warren "fdt_addr_r=0x02000000\0" \ 1779316e144SStephen Warren "ramdisk_addr_r=0x02100000\0" \ 1789316e144SStephen Warren 1799316e144SStephen Warren #define BOOT_TARGET_DEVICES(func) \ 1809316e144SStephen Warren func(MMC, mmc, 0) \ 1819316e144SStephen Warren func(USB, usb, 0) \ 1829316e144SStephen Warren func(PXE, pxe, na) \ 1839316e144SStephen Warren func(DHCP, dhcp, na) 1849316e144SStephen Warren #include <config_distro_bootcmd.h> 1859316e144SStephen Warren 1869316e144SStephen Warren #define CONFIG_EXTRA_ENV_SETTINGS \ 1879316e144SStephen Warren ENV_DEVICE_SETTINGS \ 1889316e144SStephen Warren ENV_MEM_LAYOUT_SETTINGS \ 1899316e144SStephen Warren BOOTENV 1909316e144SStephen Warren 1919316e144SStephen Warren #define CONFIG_BOOTDELAY 2 1929316e144SStephen Warren 1939316e144SStephen Warren #endif 194