xref: /OK3568_Linux_fs/u-boot/include/configs/xilinx_zynqmp.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * Configuration for Xilinx ZynqMP
3*4882a593Smuzhiyun  * (C) Copyright 2014 - 2015 Xilinx, Inc.
4*4882a593Smuzhiyun  * Michal Simek <michal.simek@xilinx.com>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * Based on Configuration for Versatile Express
7*4882a593Smuzhiyun  *
8*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+
9*4882a593Smuzhiyun  */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef __XILINX_ZYNQMP_H
12*4882a593Smuzhiyun #define __XILINX_ZYNQMP_H
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #define CONFIG_REMAKE_ELF
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun /* #define CONFIG_ARMV8_SWITCH_TO_EL1 */
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun /* Generic Interrupt Controller Definitions */
19*4882a593Smuzhiyun #define CONFIG_GICV2
20*4882a593Smuzhiyun #define GICD_BASE	0xF9010000
21*4882a593Smuzhiyun #define GICC_BASE	0xF9020000
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #define CONFIG_SYS_ALT_MEMTEST
24*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_SCRATCH	0xfffc0000
25*4882a593Smuzhiyun 
26*4882a593Smuzhiyun #ifndef CONFIG_NR_DRAM_BANKS
27*4882a593Smuzhiyun # define CONFIG_NR_DRAM_BANKS		2
28*4882a593Smuzhiyun #endif
29*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_START	0
30*4882a593Smuzhiyun #define CONFIG_SYS_MEMTEST_END		1000
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define CONFIG_SYS_INIT_SP_ADDR		CONFIG_SYS_TEXT_BASE
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun /* Generic Timer Definitions - setup in EL3. Setup by ATF for other cases */
35*4882a593Smuzhiyun #if !defined(COUNTER_FREQUENCY)
36*4882a593Smuzhiyun # define COUNTER_FREQUENCY		100000000
37*4882a593Smuzhiyun #endif
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun /* Size of malloc() pool */
40*4882a593Smuzhiyun #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + 0x2000000)
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun /* Serial setup */
43*4882a593Smuzhiyun #define CONFIG_ARM_DCC
44*4882a593Smuzhiyun #define CONFIG_CPU_ARMV8
45*4882a593Smuzhiyun #define CONFIG_ZYNQ_SERIAL
46*4882a593Smuzhiyun 
47*4882a593Smuzhiyun #define CONFIG_CONS_INDEX		0
48*4882a593Smuzhiyun #define CONFIG_SYS_BAUDRATE_TABLE \
49*4882a593Smuzhiyun 	{ 4800, 9600, 19200, 38400, 57600, 115200 }
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun /* Command line configuration */
52*4882a593Smuzhiyun #define CONFIG_MP
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /* BOOTP options */
55*4882a593Smuzhiyun #define CONFIG_BOOTP_BOOTFILESIZE
56*4882a593Smuzhiyun #define CONFIG_BOOTP_BOOTPATH
57*4882a593Smuzhiyun #define CONFIG_BOOTP_GATEWAY
58*4882a593Smuzhiyun #define CONFIG_BOOTP_HOSTNAME
59*4882a593Smuzhiyun #define CONFIG_BOOTP_MAY_FAIL
60*4882a593Smuzhiyun #define CONFIG_BOOTP_DNS
61*4882a593Smuzhiyun #define CONFIG_BOOTP_PXE
62*4882a593Smuzhiyun #define CONFIG_BOOTP_SUBNETMASK
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun /* Diff from config_distro_defaults.h */
65*4882a593Smuzhiyun #define CONFIG_SUPPORT_RAW_INITRD
66*4882a593Smuzhiyun #if !defined(CONFIG_SPL_BUILD)
67*4882a593Smuzhiyun #define CONFIG_ENV_VARS_UBOOT_CONFIG
68*4882a593Smuzhiyun #endif
69*4882a593Smuzhiyun #define CONFIG_AUTO_COMPLETE
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun #if defined(CONFIG_MMC_SDHCI_ZYNQ)
72*4882a593Smuzhiyun # define CONFIG_SUPPORT_EMMC_BOOT
73*4882a593Smuzhiyun # ifndef CONFIG_ZYNQ_SDHCI_MAX_FREQ
74*4882a593Smuzhiyun #  define CONFIG_ZYNQ_SDHCI_MAX_FREQ	200000000
75*4882a593Smuzhiyun # endif
76*4882a593Smuzhiyun #endif
77*4882a593Smuzhiyun 
78*4882a593Smuzhiyun #ifdef CONFIG_NAND_ARASAN
79*4882a593Smuzhiyun # define CONFIG_SYS_MAX_NAND_DEVICE	1
80*4882a593Smuzhiyun # define CONFIG_SYS_NAND_ONFI_DETECTION
81*4882a593Smuzhiyun #endif
82*4882a593Smuzhiyun 
83*4882a593Smuzhiyun /* Miscellaneous configurable options */
84*4882a593Smuzhiyun #define CONFIG_SYS_LOAD_ADDR		0x8000000
85*4882a593Smuzhiyun 
86*4882a593Smuzhiyun #if defined(CONFIG_ZYNQMP_USB)
87*4882a593Smuzhiyun #define CONFIG_SYS_DFU_DATA_BUF_SIZE	0x1800000
88*4882a593Smuzhiyun #define DFU_DEFAULT_POLL_TIMEOUT	300
89*4882a593Smuzhiyun #define CONFIG_USB_CABLE_CHECK
90*4882a593Smuzhiyun #define CONFIG_USB_FUNCTION_THOR
91*4882a593Smuzhiyun #define CONFIG_THOR_RESET_OFF
92*4882a593Smuzhiyun #define DFU_ALT_INFO_RAM \
93*4882a593Smuzhiyun 	"dfu_ram_info=" \
94*4882a593Smuzhiyun 	"setenv dfu_alt_info " \
95*4882a593Smuzhiyun 	"Image ram $kernel_addr $kernel_size\\\\;" \
96*4882a593Smuzhiyun 	"system.dtb ram $fdt_addr $fdt_size\0" \
97*4882a593Smuzhiyun 	"dfu_ram=run dfu_ram_info && dfu 0 ram 0\0" \
98*4882a593Smuzhiyun 	"thor_ram=run dfu_ram_info && thordown 0 ram 0\0"
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define DFU_ALT_INFO  \
101*4882a593Smuzhiyun 		DFU_ALT_INFO_RAM
102*4882a593Smuzhiyun 
103*4882a593Smuzhiyun #ifndef CONFIG_SPL_BUILD
104*4882a593Smuzhiyun # define PARTS_DEFAULT \
105*4882a593Smuzhiyun 	"partitions=uuid_disk=${uuid_gpt_disk};" \
106*4882a593Smuzhiyun 	"name=""boot"",size=16M,uuid=${uuid_gpt_boot};" \
107*4882a593Smuzhiyun 	"name=""Linux"",size=-M,uuid=${uuid_gpt_Linux}\0"
108*4882a593Smuzhiyun #endif
109*4882a593Smuzhiyun #endif
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun #if !defined(DFU_ALT_INFO)
112*4882a593Smuzhiyun # define DFU_ALT_INFO
113*4882a593Smuzhiyun #endif
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #if !defined(PARTS_DEFAULT)
116*4882a593Smuzhiyun # define PARTS_DEFAULT
117*4882a593Smuzhiyun #endif
118*4882a593Smuzhiyun 
119*4882a593Smuzhiyun /* Do not preserve environment */
120*4882a593Smuzhiyun #define CONFIG_ENV_SIZE			0x8000
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun /* Monitor Command Prompt */
123*4882a593Smuzhiyun /* Console I/O Buffer Size */
124*4882a593Smuzhiyun #define CONFIG_SYS_CBSIZE		2048
125*4882a593Smuzhiyun #define CONFIG_SYS_BARGSIZE		CONFIG_SYS_CBSIZE
126*4882a593Smuzhiyun #define CONFIG_SYS_LONGHELP
127*4882a593Smuzhiyun #define CONFIG_CMDLINE_EDITING
128*4882a593Smuzhiyun #define CONFIG_SYS_MAXARGS		64
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun /* Ethernet driver */
131*4882a593Smuzhiyun #if defined(CONFIG_ZYNQ_GEM)
132*4882a593Smuzhiyun # define CONFIG_NET_MULTI
133*4882a593Smuzhiyun # define CONFIG_MII
134*4882a593Smuzhiyun # define CONFIG_SYS_FAULT_ECHO_LINK_DOWN
135*4882a593Smuzhiyun # define CONFIG_PHY_MARVELL
136*4882a593Smuzhiyun # define CONFIG_PHY_NATSEMI
137*4882a593Smuzhiyun # define CONFIG_PHY_TI
138*4882a593Smuzhiyun # define CONFIG_PHY_VITESSE
139*4882a593Smuzhiyun # define CONFIG_PHY_REALTEK
140*4882a593Smuzhiyun # define PHY_ANEG_TIMEOUT       20000
141*4882a593Smuzhiyun #endif
142*4882a593Smuzhiyun 
143*4882a593Smuzhiyun /* I2C */
144*4882a593Smuzhiyun #if defined(CONFIG_SYS_I2C_ZYNQ)
145*4882a593Smuzhiyun # define CONFIG_SYS_I2C
146*4882a593Smuzhiyun # define CONFIG_SYS_I2C_ZYNQ_SPEED		100000
147*4882a593Smuzhiyun # define CONFIG_SYS_I2C_ZYNQ_SLAVE		0
148*4882a593Smuzhiyun #endif
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun /* EEPROM */
151*4882a593Smuzhiyun #ifdef CONFIG_ZYNQMP_EEPROM
152*4882a593Smuzhiyun # define CONFIG_SYS_I2C_EEPROM_ADDR_LEN		2
153*4882a593Smuzhiyun # define CONFIG_SYS_I2C_EEPROM_ADDR		0x54
154*4882a593Smuzhiyun # define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS	4
155*4882a593Smuzhiyun # define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS	5
156*4882a593Smuzhiyun # define CONFIG_SYS_EEPROM_SIZE			(64 * 1024)
157*4882a593Smuzhiyun #endif
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun #ifdef CONFIG_SATA_CEVA
160*4882a593Smuzhiyun #define CONFIG_LIBATA
161*4882a593Smuzhiyun #define CONFIG_SCSI_AHCI
162*4882a593Smuzhiyun #define CONFIG_SYS_SCSI_MAX_SCSI_ID	2
163*4882a593Smuzhiyun #define CONFIG_SYS_SCSI_MAX_LUN		1
164*4882a593Smuzhiyun #define CONFIG_SYS_SCSI_MAX_DEVICE	(CONFIG_SYS_SCSI_MAX_SCSI_ID * \
165*4882a593Smuzhiyun 					 CONFIG_SYS_SCSI_MAX_LUN)
166*4882a593Smuzhiyun #endif
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun #define CONFIG_SYS_BOOTM_LEN	(60 * 1024 * 1024)
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun #define CONFIG_BOARD_EARLY_INIT_R
171*4882a593Smuzhiyun #define CONFIG_CLOCKS
172*4882a593Smuzhiyun 
173*4882a593Smuzhiyun #define ENV_MEM_LAYOUT_SETTINGS \
174*4882a593Smuzhiyun 	"fdt_high=10000000\0" \
175*4882a593Smuzhiyun 	"initrd_high=10000000\0" \
176*4882a593Smuzhiyun 	"fdt_addr_r=0x40000000\0" \
177*4882a593Smuzhiyun 	"pxefile_addr_r=0x10000000\0" \
178*4882a593Smuzhiyun 	"kernel_addr_r=0x18000000\0" \
179*4882a593Smuzhiyun 	"scriptaddr=0x02000000\0" \
180*4882a593Smuzhiyun 	"ramdisk_addr_r=0x02100000\0" \
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun #if defined(CONFIG_MMC_SDHCI_ZYNQ)
183*4882a593Smuzhiyun # define BOOT_TARGET_DEVICES_MMC(func)	func(MMC, mmc, 0) func(MMC, mmc, 1)
184*4882a593Smuzhiyun #else
185*4882a593Smuzhiyun # define BOOT_TARGET_DEVICES_MMC(func)
186*4882a593Smuzhiyun #endif
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun #if defined(CONFIG_SATA_CEVA)
189*4882a593Smuzhiyun # define BOOT_TARGET_DEVICES_SCSI(func)	func(SCSI, scsi, 0)
190*4882a593Smuzhiyun #else
191*4882a593Smuzhiyun # define BOOT_TARGET_DEVICES_SCSI(func)
192*4882a593Smuzhiyun #endif
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #if defined(CONFIG_ZYNQMP_USB)
195*4882a593Smuzhiyun # define BOOT_TARGET_DEVICES_USB(func)	func(USB, usb, 0) func(USB, usb, 1)
196*4882a593Smuzhiyun #else
197*4882a593Smuzhiyun # define BOOT_TARGET_DEVICES_USB(func)
198*4882a593Smuzhiyun #endif
199*4882a593Smuzhiyun 
200*4882a593Smuzhiyun #define BOOT_TARGET_DEVICES(func) \
201*4882a593Smuzhiyun 	BOOT_TARGET_DEVICES_MMC(func) \
202*4882a593Smuzhiyun 	BOOT_TARGET_DEVICES_USB(func) \
203*4882a593Smuzhiyun 	BOOT_TARGET_DEVICES_SCSI(func) \
204*4882a593Smuzhiyun 	func(PXE, pxe, na) \
205*4882a593Smuzhiyun 	func(DHCP, dhcp, na)
206*4882a593Smuzhiyun 
207*4882a593Smuzhiyun #include <config_distro_bootcmd.h>
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun /* Initial environment variables */
210*4882a593Smuzhiyun #ifndef CONFIG_EXTRA_ENV_SETTINGS
211*4882a593Smuzhiyun #define CONFIG_EXTRA_ENV_SETTINGS \
212*4882a593Smuzhiyun 	ENV_MEM_LAYOUT_SETTINGS \
213*4882a593Smuzhiyun 	BOOTENV \
214*4882a593Smuzhiyun 	DFU_ALT_INFO
215*4882a593Smuzhiyun #endif
216*4882a593Smuzhiyun 
217*4882a593Smuzhiyun /* SPL can't handle all huge variables - define just DFU */
218*4882a593Smuzhiyun #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU)
219*4882a593Smuzhiyun #undef CONFIG_EXTRA_ENV_SETTINGS
220*4882a593Smuzhiyun # define CONFIG_EXTRA_ENV_SETTINGS \
221*4882a593Smuzhiyun 	"dfu_alt_info_ram=uboot.bin ram 0x8000000 0x1000000;" \
222*4882a593Smuzhiyun 			  "atf-uboot.ub ram 0x10000000 0x1000000;" \
223*4882a593Smuzhiyun 			  "Image ram 0x80000 0x3f80000;" \
224*4882a593Smuzhiyun 			  "system.dtb ram 0x4000000 0x100000\0" \
225*4882a593Smuzhiyun 	"dfu_bufsiz=0x1000\0"
226*4882a593Smuzhiyun #endif
227*4882a593Smuzhiyun 
228*4882a593Smuzhiyun #define CONFIG_SPL_TEXT_BASE		0xfffc0000
229*4882a593Smuzhiyun #define CONFIG_SPL_STACK		0xfffffffc
230*4882a593Smuzhiyun #define CONFIG_SPL_MAX_SIZE		0x40000
231*4882a593Smuzhiyun 
232*4882a593Smuzhiyun /* Just random location in OCM */
233*4882a593Smuzhiyun #define CONFIG_SPL_BSS_START_ADDR	0x0
234*4882a593Smuzhiyun #define CONFIG_SPL_BSS_MAX_SIZE		0x80000
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun #define CONFIG_SPL_FRAMEWORK
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun /* u-boot is like dtb */
239*4882a593Smuzhiyun #define CONFIG_SPL_FS_LOAD_ARGS_NAME	"u-boot.bin"
240*4882a593Smuzhiyun #define CONFIG_SYS_SPL_ARGS_ADDR	0x8000000
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun /* ATF is my kernel image */
243*4882a593Smuzhiyun #define CONFIG_SPL_FS_LOAD_KERNEL_NAME	"atf-uboot.ub"
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun /* FIT load address for RAM boot */
246*4882a593Smuzhiyun #define CONFIG_SPL_LOAD_FIT_ADDRESS	0x10000000
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun /* MMC support */
249*4882a593Smuzhiyun #ifdef CONFIG_MMC_SDHCI_ZYNQ
250*4882a593Smuzhiyun # define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION	1
251*4882a593Smuzhiyun # define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR	0 /* unused */
252*4882a593Smuzhiyun # define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS	0 /* unused */
253*4882a593Smuzhiyun # define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR	0 /* unused */
254*4882a593Smuzhiyun # define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME	"u-boot.img"
255*4882a593Smuzhiyun #endif
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_DFU)
258*4882a593Smuzhiyun # undef CONFIG_CMD_BOOTD
259*4882a593Smuzhiyun # define CONFIG_SPL_ENV_SUPPORT
260*4882a593Smuzhiyun # define CONFIG_SPL_HASH_SUPPORT
261*4882a593Smuzhiyun # define CONFIG_ENV_MAX_ENTRIES	10
262*4882a593Smuzhiyun 
263*4882a593Smuzhiyun # define CONFIG_SYS_SPL_MALLOC_START	0x20000000
264*4882a593Smuzhiyun # define CONFIG_SYS_SPL_MALLOC_SIZE	0x100000
265*4882a593Smuzhiyun 
266*4882a593Smuzhiyun #ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
267*4882a593Smuzhiyun # error "Disable CONFIG_SPL_SYS_MALLOC_SIMPLE. Full malloc needs to be used"
268*4882a593Smuzhiyun #endif
269*4882a593Smuzhiyun #endif
270*4882a593Smuzhiyun 
271*4882a593Smuzhiyun #define CONFIG_BOARD_EARLY_INIT_F
272*4882a593Smuzhiyun 
273*4882a593Smuzhiyun #endif /* __XILINX_ZYNQMP_H */
274