xref: /rk3399_rockchip-uboot/include/configs/rpi.h (revision a5a83dc9dc7f4b29f7ceda1007bdac1a49219e2c)
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