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