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