1*9316e144SStephen Warren /* 2*9316e144SStephen Warren * (C) Copyright 2012 Stephen Warren 3*9316e144SStephen Warren * 4*9316e144SStephen Warren * See file CREDITS for list of people who contributed to this 5*9316e144SStephen Warren * project. 6*9316e144SStephen Warren * 7*9316e144SStephen Warren * This program is free software; you can redistribute it and/or 8*9316e144SStephen Warren * modify it under the terms of the GNU General Public License 9*9316e144SStephen Warren * version 2 as published by the Free Software Foundation. 10*9316e144SStephen Warren * 11*9316e144SStephen Warren * This program is distributed in the hope that it will be useful, but 12*9316e144SStephen Warren * WITHOUT ANY WARRANTY; without even the implied warranty of 13*9316e144SStephen Warren * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*9316e144SStephen Warren * GNU General Public License for more details. 15*9316e144SStephen Warren */ 16*9316e144SStephen Warren 17*9316e144SStephen Warren #ifndef __CONFIG_H 18*9316e144SStephen Warren #define __CONFIG_H 19*9316e144SStephen Warren 20*9316e144SStephen Warren #include <linux/sizes.h> 21*9316e144SStephen Warren 22*9316e144SStephen Warren /* Architecture, CPU, etc.*/ 23*9316e144SStephen Warren #define CONFIG_SYS_GENERIC_BOARD 24*9316e144SStephen Warren #define CONFIG_BCM2835 25*9316e144SStephen Warren #define CONFIG_ARCH_CPU_INIT 26*9316e144SStephen Warren #define CONFIG_SYS_DCACHE_OFF 27*9316e144SStephen Warren /* 28*9316e144SStephen Warren * 2835 is a SKU in a series for which the 2708 is the first or primary SoC, 29*9316e144SStephen Warren * so 2708 has historically been used rather than a dedicated 2835 ID. 30*9316e144SStephen Warren */ 31*9316e144SStephen Warren #define CONFIG_MACH_TYPE MACH_TYPE_BCM2708 32*9316e144SStephen Warren 33*9316e144SStephen Warren /* Enable driver model */ 34*9316e144SStephen Warren #define CONFIG_DM 35*9316e144SStephen Warren #define CONFIG_CMD_DM 36*9316e144SStephen Warren #define CONFIG_DM_GPIO 37*9316e144SStephen Warren 38*9316e144SStephen Warren /* Memory layout */ 39*9316e144SStephen Warren #define CONFIG_NR_DRAM_BANKS 1 40*9316e144SStephen Warren #define CONFIG_SYS_SDRAM_BASE 0x00000000 41*9316e144SStephen Warren #define CONFIG_SYS_TEXT_BASE 0x00008000 42*9316e144SStephen Warren #define CONFIG_SYS_UBOOT_BASE CONFIG_SYS_TEXT_BASE 43*9316e144SStephen Warren /* 44*9316e144SStephen Warren * The board really has 256M. However, the VC (VideoCore co-processor) shares 45*9316e144SStephen Warren * the RAM, and uses a configurable portion at the top. We tell U-Boot that a 46*9316e144SStephen Warren * smaller amount of RAM is present in order to avoid stomping on the area 47*9316e144SStephen Warren * the VC uses. 48*9316e144SStephen Warren */ 49*9316e144SStephen Warren #define CONFIG_SYS_SDRAM_SIZE SZ_128M 50*9316e144SStephen Warren #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + \ 51*9316e144SStephen Warren CONFIG_SYS_SDRAM_SIZE - \ 52*9316e144SStephen Warren GENERATED_GBL_DATA_SIZE) 53*9316e144SStephen Warren #define CONFIG_SYS_MALLOC_LEN SZ_4M 54*9316e144SStephen Warren #define CONFIG_SYS_MEMTEST_START 0x00100000 55*9316e144SStephen Warren #define CONFIG_SYS_MEMTEST_END 0x00200000 56*9316e144SStephen Warren #define CONFIG_LOADADDR 0x00200000 57*9316e144SStephen Warren 58*9316e144SStephen Warren /* Flash */ 59*9316e144SStephen Warren #define CONFIG_SYS_NO_FLASH 60*9316e144SStephen Warren 61*9316e144SStephen Warren /* Devices */ 62*9316e144SStephen Warren /* GPIO */ 63*9316e144SStephen Warren #define CONFIG_BCM2835_GPIO 64*9316e144SStephen Warren /* LCD */ 65*9316e144SStephen Warren #define CONFIG_LCD 66*9316e144SStephen Warren #define CONFIG_LCD_DT_SIMPLEFB 67*9316e144SStephen Warren #define LCD_BPP LCD_COLOR16 68*9316e144SStephen Warren /* 69*9316e144SStephen Warren * Prevent allocation of RAM for FB; the real FB address is queried 70*9316e144SStephen Warren * dynamically from the VideoCore co-processor, and comes from RAM 71*9316e144SStephen Warren * not owned by the ARM CPU. 72*9316e144SStephen Warren */ 73*9316e144SStephen Warren #define CONFIG_FB_ADDR 0 74*9316e144SStephen Warren #define CONFIG_VIDEO_BCM2835 75*9316e144SStephen Warren #define CONFIG_SYS_WHITE_ON_BLACK 76*9316e144SStephen Warren 77*9316e144SStephen Warren /* SD/MMC configuration */ 78*9316e144SStephen Warren #define CONFIG_GENERIC_MMC 79*9316e144SStephen Warren #define CONFIG_MMC 80*9316e144SStephen Warren #define CONFIG_SDHCI 81*9316e144SStephen Warren #define CONFIG_MMC_SDHCI_IO_ACCESSORS 82*9316e144SStephen Warren #define CONFIG_BCM2835_SDHCI 83*9316e144SStephen Warren 84*9316e144SStephen Warren #define CONFIG_CMD_USB 85*9316e144SStephen Warren #ifdef CONFIG_CMD_USB 86*9316e144SStephen Warren #define CONFIG_USB_DWC2 87*9316e144SStephen Warren #define CONFIG_USB_DWC2_REG_ADDR 0x20980000 88*9316e144SStephen Warren #define CONFIG_USB_STORAGE 89*9316e144SStephen Warren #define CONFIG_USB_HOST_ETHER 90*9316e144SStephen Warren #define CONFIG_USB_ETHER_SMSC95XX 91*9316e144SStephen Warren #define CONFIG_MISC_INIT_R 92*9316e144SStephen Warren #endif 93*9316e144SStephen Warren 94*9316e144SStephen Warren /* Console UART */ 95*9316e144SStephen Warren #define CONFIG_PL011_SERIAL 96*9316e144SStephen Warren #define CONFIG_PL011_CLOCK 3000000 97*9316e144SStephen Warren #define CONFIG_PL01x_PORTS { (void *)0x20201000 } 98*9316e144SStephen Warren #define CONFIG_CONS_INDEX 0 99*9316e144SStephen Warren #define CONFIG_BAUDRATE 115200 100*9316e144SStephen Warren 101*9316e144SStephen Warren /* Console configuration */ 102*9316e144SStephen Warren #define CONFIG_SYS_CBSIZE 1024 103*9316e144SStephen Warren #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + \ 104*9316e144SStephen Warren sizeof(CONFIG_SYS_PROMPT) + 16) 105*9316e144SStephen Warren 106*9316e144SStephen Warren /* Environment */ 107*9316e144SStephen Warren #define CONFIG_ENV_SIZE SZ_16K 108*9316e144SStephen Warren #define CONFIG_ENV_IS_NOWHERE 109*9316e144SStephen Warren #define CONFIG_ENV_VARS_UBOOT_CONFIG 110*9316e144SStephen Warren #define CONFIG_SYS_LOAD_ADDR 0x1000000 111*9316e144SStephen Warren #define CONFIG_CONSOLE_MUX 112*9316e144SStephen Warren #define CONFIG_SYS_CONSOLE_IS_IN_ENV 113*9316e144SStephen Warren #define CONFIG_PREBOOT \ 114*9316e144SStephen Warren "if load mmc 0:1 ${loadaddr} /uEnv.txt; then " \ 115*9316e144SStephen Warren "env import -t -r ${loadaddr} ${filesize}; " \ 116*9316e144SStephen Warren "fi" 117*9316e144SStephen Warren 118*9316e144SStephen Warren /* Shell */ 119*9316e144SStephen Warren #define CONFIG_SYS_MAXARGS 8 120*9316e144SStephen Warren #define CONFIG_SYS_PROMPT "U-Boot> " 121*9316e144SStephen Warren #define CONFIG_COMMAND_HISTORY 122*9316e144SStephen Warren 123*9316e144SStephen Warren /* Commands */ 124*9316e144SStephen Warren #include <config_cmd_default.h> 125*9316e144SStephen Warren #define CONFIG_CMD_GPIO 126*9316e144SStephen Warren #define CONFIG_CMD_MMC 127*9316e144SStephen Warren #define CONFIG_PARTITION_UUIDS 128*9316e144SStephen Warren #define CONFIG_CMD_PART 129*9316e144SStephen Warren 130*9316e144SStephen Warren /* Device tree support */ 131*9316e144SStephen Warren #define CONFIG_OF_BOARD_SETUP 132*9316e144SStephen Warren /* ATAGs support for bootm/bootz */ 133*9316e144SStephen Warren #define CONFIG_SETUP_MEMORY_TAGS 134*9316e144SStephen Warren #define CONFIG_CMDLINE_TAG 135*9316e144SStephen Warren #define CONFIG_INITRD_TAG 136*9316e144SStephen Warren 137*9316e144SStephen Warren #include <config_distro_defaults.h> 138*9316e144SStephen Warren 139*9316e144SStephen Warren /* Some things don't make sense on this HW or yet */ 140*9316e144SStephen Warren #undef CONFIG_CMD_FPGA 141*9316e144SStephen Warren #undef CONFIG_CMD_SAVEENV 142*9316e144SStephen Warren 143*9316e144SStephen Warren /* Environment */ 144*9316e144SStephen Warren #define ENV_DEVICE_SETTINGS \ 145*9316e144SStephen Warren "stdin=serial,lcd\0" \ 146*9316e144SStephen Warren "stdout=serial,lcd\0" \ 147*9316e144SStephen Warren "stderr=serial,lcd\0" 148*9316e144SStephen Warren 149*9316e144SStephen Warren /* 150*9316e144SStephen Warren * Memory layout for where various images get loaded by boot scripts: 151*9316e144SStephen Warren * 152*9316e144SStephen Warren * scriptaddr can be pretty much anywhere that doesn't conflict with something 153*9316e144SStephen Warren * else. Put it low in memory to avoid conflicts. 154*9316e144SStephen Warren * 155*9316e144SStephen Warren * pxefile_addr_r can be pretty much anywhere that doesn't conflict with 156*9316e144SStephen Warren * something else. Put it low in memory to avoid conflicts. 157*9316e144SStephen Warren * 158*9316e144SStephen Warren * kernel_addr_r must be within the first 128M of RAM in order for the 159*9316e144SStephen Warren * kernel's CONFIG_AUTO_ZRELADDR option to work. Since the kernel will 160*9316e144SStephen Warren * decompress itself to 0x8000 after the start of RAM, kernel_addr_r 161*9316e144SStephen Warren * should not overlap that area, or the kernel will have to copy itself 162*9316e144SStephen Warren * somewhere else before decompression. Similarly, the address of any other 163*9316e144SStephen Warren * data passed to the kernel shouldn't overlap the start of RAM. Pushing 164*9316e144SStephen Warren * this up to 16M allows for a sizable kernel to be decompressed below the 165*9316e144SStephen Warren * compressed load address. 166*9316e144SStephen Warren * 167*9316e144SStephen Warren * fdt_addr_r simply shouldn't overlap anything else. Choosing 32M allows for 168*9316e144SStephen Warren * the compressed kernel to be up to 16M too. 169*9316e144SStephen Warren * 170*9316e144SStephen Warren * ramdisk_addr_r simply shouldn't overlap anything else. Choosing 33M allows 171*9316e144SStephen Warren * for the FDT/DTB to be up to 1M, which is hopefully plenty. 172*9316e144SStephen Warren */ 173*9316e144SStephen Warren #define ENV_MEM_LAYOUT_SETTINGS \ 174*9316e144SStephen Warren "scriptaddr=0x00000000\0" \ 175*9316e144SStephen Warren "pxefile_addr_r=0x00100000\0" \ 176*9316e144SStephen Warren "kernel_addr_r=0x01000000\0" \ 177*9316e144SStephen Warren "fdt_addr_r=0x02000000\0" \ 178*9316e144SStephen Warren "ramdisk_addr_r=0x02100000\0" \ 179*9316e144SStephen Warren 180*9316e144SStephen Warren #define BOOT_TARGET_DEVICES(func) \ 181*9316e144SStephen Warren func(MMC, mmc, 0) \ 182*9316e144SStephen Warren func(USB, usb, 0) \ 183*9316e144SStephen Warren func(PXE, pxe, na) \ 184*9316e144SStephen Warren func(DHCP, dhcp, na) 185*9316e144SStephen Warren #include <config_distro_bootcmd.h> 186*9316e144SStephen Warren 187*9316e144SStephen Warren #define CONFIG_EXTRA_ENV_SETTINGS \ 188*9316e144SStephen Warren ENV_DEVICE_SETTINGS \ 189*9316e144SStephen Warren ENV_MEM_LAYOUT_SETTINGS \ 190*9316e144SStephen Warren BOOTENV 191*9316e144SStephen Warren 192*9316e144SStephen Warren #define CONFIG_BOOTDELAY 2 193*9316e144SStephen Warren 194*9316e144SStephen Warren #endif 195