Prepare v2023.10
[platform/kernel/u-boot.git] / include / configs / p1_p2_rdb_pc.h
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * Copyright 2010-2011 Freescale Semiconductor, Inc.
4  * Copyright 2020 NXP
5  */
6
7 /*
8  * QorIQ RDB boards configuration file
9  */
10 #ifndef __CONFIG_H
11 #define __CONFIG_H
12
13 #include <linux/stringify.h>
14
15 #if defined(CONFIG_TARGET_P1020RDB_PC)
16 #define CFG_SLIC
17 #define __SW_BOOT_MASK          0x03
18 #define __SW_BOOT_NOR           0x5c
19 #define __SW_BOOT_SPI           0x1c
20 #define __SW_BOOT_SD            0x9c
21 #define __SW_BOOT_NAND          0xec
22 #define __SW_BOOT_PCIE          0x6c
23 #define __SW_NOR_BANK_MASK      0xfd
24 #define __SW_NOR_BANK_UP        0x00
25 #define __SW_NOR_BANK_LO        0x02
26 #define __SW_BOOT_NOR_BANK_UP   0x5c /* (__SW_BOOT_NOR | __SW_NOR_BANK_UP) */
27 #define __SW_BOOT_NOR_BANK_LO   0x5e /* (__SW_BOOT_NOR | __SW_NOR_BANK_LO) */
28 #define __SW_BOOT_NOR_BANK_MASK 0x01 /* (__SW_BOOT_MASK & __SW_NOR_BANK_MASK) */
29 #endif
30
31 /*
32  * P1020RDB-PD board has user selectable switches for evaluating different
33  * frequency and boot options for the P1020 device. The table that
34  * follow describe the available options. The front six binary number was in
35  * accordance with SW3[1:6].
36  * 111101 533 533 267 667 NOR Core0 boot; Core1 hold-off
37  * 101101 667 667 333 667 NOR Core0 boot; Core1 hold-off
38  * 011001 800 800 400 667 NOR Core0 boot; Core1 hold-off
39  * 001001 800 800 400 667 SD/MMC Core0 boot; Core1 hold-off
40  * 001101 800 800 400 667 SPI Core0 boot; Core1 hold-off
41  * 010001 800 800 400 667 NAND Core0 boot; Core1 hold-off
42  * 011101 800 800 400 667 PCIe-2 Core0 boot; Core1 hold-off
43  */
44 #if defined(CONFIG_TARGET_P1020RDB_PD)
45 #define CFG_SLIC
46 #define __SW_BOOT_MASK          0x03
47 #define __SW_BOOT_NOR           0x64
48 #define __SW_BOOT_SPI           0x34
49 #define __SW_BOOT_SD            0x24
50 #define __SW_BOOT_NAND          0x44
51 #define __SW_BOOT_PCIE          0x74
52 #define __SW_NOR_BANK_MASK      0xfd
53 #define __SW_NOR_BANK_UP        0x00
54 #define __SW_NOR_BANK_LO        0x02
55 #define __SW_BOOT_NOR_BANK_UP   0x64 /* (__SW_BOOT_NOR | __SW_NOR_BANK_UP) */
56 #define __SW_BOOT_NOR_BANK_LO   0x66 /* (__SW_BOOT_NOR | __SW_NOR_BANK_LO) */
57 #define __SW_BOOT_NOR_BANK_MASK 0x01 /* (__SW_BOOT_MASK & __SW_NOR_BANK_MASK) */
58 /*
59  * Dynamic MTD Partition support with mtdparts
60  */
61 #endif
62
63 #if defined(CONFIG_TARGET_P2020RDB)
64 #define __SW_BOOT_MASK          0x03
65 #define __SW_BOOT_NOR           0xc8
66 #define __SW_BOOT_SPI           0x28
67 #define __SW_BOOT_SD            0x68
68 #define __SW_BOOT_SD2           0x18
69 #define __SW_BOOT_NAND          0xe8
70 #define __SW_BOOT_PCIE          0xa8
71 #define __SW_NOR_BANK_MASK      0xfd
72 #define __SW_NOR_BANK_UP        0x00
73 #define __SW_NOR_BANK_LO        0x02
74 #define __SW_BOOT_NOR_BANK_UP   0xc8 /* (__SW_BOOT_NOR | __SW_NOR_BANK_UP) */
75 #define __SW_BOOT_NOR_BANK_LO   0xca /* (__SW_BOOT_NOR | __SW_NOR_BANK_LO) */
76 #define __SW_BOOT_NOR_BANK_MASK 0x01 /* (__SW_BOOT_MASK & __SW_NOR_BANK_MASK) */
77 /*
78  * Dynamic MTD Partition support with mtdparts
79  */
80 #endif
81
82 #ifdef CONFIG_SDCARD
83 #define CFG_SYS_MMC_U_BOOT_SIZE (768 << 10)
84 #define CFG_SYS_MMC_U_BOOT_DST  CONFIG_TEXT_BASE
85 #define CFG_SYS_MMC_U_BOOT_START        CONFIG_TEXT_BASE
86 #ifdef CONFIG_FSL_PREPBL_ESDHC_BOOT_SECTOR
87 #define CFG_SYS_MMC_U_BOOT_OFFS (CONFIG_SPL_PAD_TO - CONFIG_FSL_PREPBL_ESDHC_BOOT_SECTOR_DATA*512)
88 #else
89 #define CFG_SYS_MMC_U_BOOT_OFFS CONFIG_SPL_PAD_TO
90 #endif
91 #elif defined(CONFIG_SPIFLASH)
92 #define CFG_SYS_SPI_FLASH_U_BOOT_SIZE   (768 << 10)
93 #define CFG_SYS_SPI_FLASH_U_BOOT_DST            CONFIG_TEXT_BASE
94 #define CFG_SYS_SPI_FLASH_U_BOOT_START  CONFIG_TEXT_BASE
95 #define CFG_SYS_SPI_FLASH_U_BOOT_OFFS   CONFIG_SPL_PAD_TO
96 #elif defined(CONFIG_MTD_RAW_NAND)
97 #ifdef CONFIG_TPL_BUILD
98 #define CFG_SYS_NAND_U_BOOT_SIZE        (832 << 10)
99 #define CFG_SYS_NAND_U_BOOT_DST (0x11000000)
100 #define CFG_SYS_NAND_U_BOOT_START       (0x11000000)
101 #elif defined(CONFIG_SPL_BUILD)
102 #define CFG_SYS_NAND_U_BOOT_SIZE        (128 << 10)
103 #define CFG_SYS_NAND_U_BOOT_DST 0xf8f80000
104 #define CFG_SYS_NAND_U_BOOT_START       0xf8f80000
105 #endif /* not CONFIG_TPL_BUILD */
106 #endif
107
108 #ifndef CFG_RESET_VECTOR_ADDRESS
109 #define CFG_RESET_VECTOR_ADDRESS        0xeffffffc
110 #endif
111
112 #define CFG_SYS_CCSRBAR         0xffe00000
113 #define CFG_SYS_CCSRBAR_PHYS_LOW        CFG_SYS_CCSRBAR
114
115 /* DDR Setup */
116 #define SPD_EEPROM_ADDRESS 0x52
117
118 #if defined(CONFIG_TARGET_P1020RDB_PD)
119 #define CFG_SYS_SDRAM_SIZE_LAW  LAW_SIZE_2G
120 #else
121 #define CFG_SYS_SDRAM_SIZE_LAW  LAW_SIZE_1G
122 #endif
123 #define CFG_SYS_SDRAM_SIZE              (1u << (CFG_SYS_SDRAM_SIZE_LAW - 19))
124 #define CFG_SYS_DDR_SDRAM_BASE  0x00000000
125 #define CFG_SYS_SDRAM_BASE              CFG_SYS_DDR_SDRAM_BASE
126
127 /* Default settings for DDR3 */
128 #ifndef CONFIG_TARGET_P2020RDB
129 #define CFG_SYS_DDR_CS0_BNDS            0x0000003f
130 #define CFG_SYS_DDR_CS0_CONFIG  0x80014302
131 #define CFG_SYS_DDR_CS0_CONFIG_2        0x00000000
132 #define CFG_SYS_DDR_CS1_BNDS            0x0040007f
133 #define CFG_SYS_DDR_CS1_CONFIG  0x80014302
134 #define CFG_SYS_DDR_CS1_CONFIG_2        0x00000000
135
136 #define CFG_SYS_DDR_INIT_ADDR   0x00000000
137 #define CFG_SYS_DDR_INIT_EXT_ADDR       0x00000000
138 #define CFG_SYS_DDR_MODE_CONTROL        0x00000000
139
140 #define CFG_SYS_DDR_ZQ_CONTROL  0x89080600
141 #define CFG_SYS_DDR_WRLVL_CONTROL       0x8655A608
142 #define CFG_SYS_DDR_SR_CNTR             0x00000000
143 #define CFG_SYS_DDR_RCW_1               0x00000000
144 #define CFG_SYS_DDR_RCW_2               0x00000000
145 #define CFG_SYS_DDR_CONTROL             0xC70C0000      /* Type = DDR3  */
146 #define CFG_SYS_DDR_CONTROL_2   0x04401050
147 #define CFG_SYS_DDR_TIMING_4            0x00220001
148 #define CFG_SYS_DDR_TIMING_5            0x03402400
149
150 #define CFG_SYS_DDR_TIMING_3            0x00020000
151 #define CFG_SYS_DDR_TIMING_0            0x00330004
152 #define CFG_SYS_DDR_TIMING_1            0x6f6B4846
153 #define CFG_SYS_DDR_TIMING_2            0x0FA8C8CF
154 #define CFG_SYS_DDR_CLK_CTRL            0x03000000
155 #define CFG_SYS_DDR_MODE_1              0x40461520
156 #define CFG_SYS_DDR_MODE_2              0x8000c000
157 #define CFG_SYS_DDR_INTERVAL            0x0C300000
158 #endif
159
160 /*
161  * Memory map
162  *
163  * 0x0000_0000 0x7fff_ffff      DDR             Up to 2GB cacheable
164  * 0x8000_0000 0xdfff_ffff      PCI Express Mem 1.5G non-cacheable(PCIe * 3)
165  * 0xec00_0000 0xefff_ffff      NOR flash       Up to 64M non-cacheable CS0/1
166  * 0xf8f8_0000 0xf8ff_ffff      L2 SRAM         Up to 512K cacheable
167  *   (early boot only)
168  * 0xff80_0000 0xff80_7fff      NAND flash      32K non-cacheable       CS1/0
169  * 0xffa0_0000 0xffaf_ffff      CPLD            1M non-cacheable        CS3
170  * 0xffb0_0000 0xffbf_ffff      VSC7385 switch  1M non-cacheable        CS2
171  * 0xffc0_0000 0xffc3_ffff      PCI IO range    256k non-cacheable
172  * 0xffd0_0000 0xffd0_3fff      L1 for stack    16K cacheable
173  * 0xffe0_0000 0xffef_ffff      CCSR            1M non-cacheable
174  */
175
176 /*
177  * Local Bus Definitions
178  */
179 #if defined(CONFIG_TARGET_P1020RDB_PD)
180 #define CFG_SYS_FLASH_BASE              0xec000000
181 #else
182 #define CFG_SYS_FLASH_BASE              0xef000000
183 #endif
184
185 #ifdef CONFIG_PHYS_64BIT
186 #define CFG_SYS_FLASH_BASE_PHYS (0xf00000000ull | CFG_SYS_FLASH_BASE)
187 #else
188 #define CFG_SYS_FLASH_BASE_PHYS CFG_SYS_FLASH_BASE
189 #endif
190
191 #define CFG_FLASH_BR_PRELIM (BR_PHYS_ADDR(CFG_SYS_FLASH_BASE_PHYS) \
192         | BR_PS_16 | BR_V)
193
194 #define CFG_FLASH_OR_PRELIM     0xfc000ff7
195
196 #define CFG_SYS_FLASH_BANKS_LIST        {CFG_SYS_FLASH_BASE_PHYS}
197
198 /* Nand Flash */
199 #ifdef CONFIG_NAND_FSL_ELBC
200 #define CFG_SYS_NAND_BASE               0xff800000
201 #ifdef CONFIG_PHYS_64BIT
202 #define CFG_SYS_NAND_BASE_PHYS  0xfff800000ull
203 #else
204 #define CFG_SYS_NAND_BASE_PHYS  CFG_SYS_NAND_BASE
205 #endif
206
207 #define CFG_SYS_NAND_BASE_LIST  { CFG_SYS_NAND_BASE }
208
209 #define CFG_SYS_NAND_BR_PRELIM (BR_PHYS_ADDR(CFG_SYS_NAND_BASE_PHYS) \
210         | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \
211         | BR_PS_8       /* Port Size = 8 bit */ \
212         | BR_MS_FCM     /* MSEL = FCM */ \
213         | BR_V) /* valid */
214 #if defined(CONFIG_TARGET_P1020RDB_PD)
215 #define CFG_SYS_NAND_OR_PRELIM  (OR_AM_32KB \
216         | OR_FCM_PGS    /* Large Page*/ \
217         | OR_FCM_CSCT \
218         | OR_FCM_CST \
219         | OR_FCM_CHT \
220         | OR_FCM_SCY_1 \
221         | OR_FCM_TRLX \
222         | OR_FCM_EHTR)
223 #else
224 #define CFG_SYS_NAND_OR_PRELIM  (OR_AM_32KB     /* small page */ \
225         | OR_FCM_CSCT \
226         | OR_FCM_CST \
227         | OR_FCM_CHT \
228         | OR_FCM_SCY_1 \
229         | OR_FCM_TRLX \
230         | OR_FCM_EHTR)
231 #endif
232 #endif /* CONFIG_NAND_FSL_ELBC */
233
234 #define CFG_SYS_INIT_RAM_ADDR   0xffd00000 /* stack in RAM */
235 #ifdef CONFIG_PHYS_64BIT
236 #define CFG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0xf
237 #define CFG_SYS_INIT_RAM_ADDR_PHYS_LOW CFG_SYS_INIT_RAM_ADDR
238 /* The assembler doesn't like typecast */
239 #define CFG_SYS_INIT_RAM_ADDR_PHYS \
240         ((CFG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
241           CFG_SYS_INIT_RAM_ADDR_PHYS_LOW)
242 #else
243 /* Initial L1 address */
244 #define CFG_SYS_INIT_RAM_ADDR_PHYS      CFG_SYS_INIT_RAM_ADDR
245 #define CFG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
246 #define CFG_SYS_INIT_RAM_ADDR_PHYS_LOW CFG_SYS_INIT_RAM_ADDR_PHYS
247 #endif
248 /* Size of used area in RAM */
249 #define CFG_SYS_INIT_RAM_SIZE   0x00004000
250
251 #define CFG_SYS_INIT_SP_OFFSET  (CFG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
252
253 #define CFG_SYS_CPLD_BASE       0xffa00000
254 #ifdef CONFIG_PHYS_64BIT
255 #define CFG_SYS_CPLD_BASE_PHYS  0xfffa00000ull
256 #else
257 #define CFG_SYS_CPLD_BASE_PHYS  CFG_SYS_CPLD_BASE
258 #endif
259 /* CPLD config size: 1Mb */
260
261 /* Vsc7385 switch */
262 #ifdef CONFIG_VSC7385_ENET
263 #define __VSCFW_ADDR                    "vscfw_addr=ef000000\0"
264 #define CFG_SYS_VSC7385_BASE            0xffb00000
265
266 #ifdef CONFIG_PHYS_64BIT
267 #define CFG_SYS_VSC7385_BASE_PHYS       0xfffb00000ull
268 #else
269 #define CFG_SYS_VSC7385_BASE_PHYS       CFG_SYS_VSC7385_BASE
270 #endif
271
272 /* The size of the VSC7385 firmware image */
273 #define CFG_VSC7385_IMAGE_SIZE  8192
274 #endif
275
276 #ifndef __VSCFW_ADDR
277 #define __VSCFW_ADDR ""
278 #endif
279
280 /*
281  * Config the L2 Cache as L2 SRAM
282 */
283 #if defined(CONFIG_SPL_BUILD)
284 #if defined(CONFIG_SDCARD) || defined(CONFIG_SPIFLASH)
285 #define CFG_SYS_INIT_L2_ADDR            0xf8f80000
286 #define CFG_SYS_INIT_L2_ADDR_PHYS       CFG_SYS_INIT_L2_ADDR
287 #define CFG_SYS_INIT_L2_END     (CFG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
288 #elif defined(CONFIG_MTD_RAW_NAND)
289 #ifdef CONFIG_TPL_BUILD
290 #define CFG_SYS_INIT_L2_ADDR            0xf8f80000
291 #define CFG_SYS_INIT_L2_ADDR_PHYS       CFG_SYS_INIT_L2_ADDR
292 #define CFG_SYS_INIT_L2_END     (CFG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
293 #else
294 #define CFG_SYS_INIT_L2_ADDR            0xf8f80000
295 #define CFG_SYS_INIT_L2_ADDR_PHYS       CFG_SYS_INIT_L2_ADDR
296 #define CFG_SYS_INIT_L2_END     (CFG_SYS_INIT_L2_ADDR + CONFIG_SYS_L2_SIZE)
297 #endif /* CONFIG_TPL_BUILD */
298 #endif
299 #endif
300
301 /* Serial Port - controlled on board with jumper J8
302  * open - index 2
303  * shorted - index 1
304  */
305 #define CFG_SYS_NS16550_CLK             get_bus_freq(0)
306
307 #define CFG_SYS_BAUDRATE_TABLE  \
308         {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
309
310 #define CFG_SYS_NS16550_COM1    (CFG_SYS_CCSRBAR+0x4500)
311 #define CFG_SYS_NS16550_COM2    (CFG_SYS_CCSRBAR+0x4600)
312
313 /* I2C */
314 #if !CONFIG_IS_ENABLED(DM_I2C)
315 #define CFG_SYS_I2C_NOPROBES            { {0, 0x29} }
316 #endif
317
318 /*
319  * I2C2 EEPROM
320  */
321
322 #define CFG_SYS_I2C_RTC_ADDR            0x68
323 #define CFG_SYS_I2C_PCA9557_ADDR        0x18
324
325 /* enable read and write access to EEPROM */
326
327 #if defined(CONFIG_PCI)
328 /*
329  * General PCI
330  * Memory space is mapped 1-1, but I/O space must start from 0.
331  */
332
333 /* controller 2, direct to uli, tgtid 2, Base address 9000 */
334 #define CFG_SYS_PCIE2_MEM_VIRT  0xa0000000
335 #ifdef CONFIG_PHYS_64BIT
336 #define CFG_SYS_PCIE2_MEM_PHYS  0xc20000000ull
337 #else
338 #define CFG_SYS_PCIE2_MEM_PHYS  0xa0000000
339 #endif
340 #define CFG_SYS_PCIE2_IO_VIRT   0xffc10000
341 #ifdef CONFIG_PHYS_64BIT
342 #define CFG_SYS_PCIE2_IO_PHYS   0xfffc10000ull
343 #else
344 #define CFG_SYS_PCIE2_IO_PHYS   0xffc10000
345 #endif
346
347 /* controller 1, Slot 2, tgtid 1, Base address a000 */
348 #define CFG_SYS_PCIE1_MEM_VIRT  0x80000000
349 #ifdef CONFIG_PHYS_64BIT
350 #define CFG_SYS_PCIE1_MEM_PHYS  0xc00000000ull
351 #else
352 #define CFG_SYS_PCIE1_MEM_PHYS  0x80000000
353 #endif
354 #define CFG_SYS_PCIE1_IO_VIRT   0xffc00000
355 #ifdef CONFIG_PHYS_64BIT
356 #define CFG_SYS_PCIE1_IO_PHYS   0xfffc00000ull
357 #else
358 #define CFG_SYS_PCIE1_IO_PHYS   0xffc00000
359 #endif
360 #endif /* CONFIG_PCI */
361
362 /*
363  * Environment
364  */
365 #if defined(CONFIG_MTD_RAW_NAND)
366 #ifdef CONFIG_TPL_BUILD
367 #define SPL_ENV_ADDR            (CFG_SYS_INIT_L2_ADDR + (160 << 10))
368 #endif
369 #endif
370
371 /*
372  * USB
373  */
374
375 #ifdef CONFIG_MMC
376 #define CFG_SYS_FSL_ESDHC_ADDR  CFG_SYS_MPC85xx_ESDHC_ADDR
377 #endif
378
379 /*
380  * Miscellaneous configurable options
381  */
382
383 /*
384  * For booting Linux, the board info and command line data
385  * have to be in the first 64 MB of memory, since this is
386  * the maximum mapped by the Linux kernel during initialization.
387  */
388 #define CFG_SYS_BOOTMAPSZ       (64 << 20)      /* Initial Memory for Linux*/
389
390 /*
391  * Environment Configuration
392  */
393
394 #include "p1_p2_bootsrc.h"
395
396 #define CFG_EXTRA_ENV_SETTINGS  \
397 "netdev=eth0\0" \
398 "uboot=" CONFIG_UBOOTPATH "\0"  \
399 "loadaddr=1000000\0"    \
400 "bootfile=uImage\0"     \
401 "tftpflash=tftpboot $loadaddr $uboot; " \
402         "protect off " __stringify(CONFIG_TEXT_BASE) " +$filesize; " \
403         "erase " __stringify(CONFIG_TEXT_BASE) " +$filesize; "  \
404         "cp.b $loadaddr " __stringify(CONFIG_TEXT_BASE) " $filesize; " \
405         "protect on " __stringify(CONFIG_TEXT_BASE) " +$filesize; "     \
406         "cmp.b $loadaddr " __stringify(CONFIG_TEXT_BASE) " $filesize\0" \
407 "hwconfig=usb1:dr_mode=host,phy_type=ulpi\0"    \
408 "consoledev=ttyS0\0"    \
409 "ramdiskaddr=2000000\0" \
410 "ramdiskfile=rootfs.ext2.gz.uboot\0"    \
411 "fdtaddr=1e00000\0"     \
412 "bdev=sda1\0" \
413 "jffs2nor=mtdblock3\0"  \
414 "norbootaddr=ef080000\0"        \
415 "norfdtaddr=ef040000\0" \
416 "jffs2nand=mtdblock9\0" \
417 "nandbootaddr=100000\0" \
418 "nandfdtaddr=80000\0"           \
419 "ramdisk_size=120000\0" \
420 __VSCFW_ADDR    \
421 MAP_NOR_LO_CMD(map_lowernorbank) \
422 MAP_NOR_UP_CMD(map_uppernorbank) \
423 RST_NOR_CMD(norboot) \
424 RST_NOR_LO_CMD(norlowerboot) \
425 RST_NOR_UP_CMD(norupperboot) \
426 RST_SPI_CMD(spiboot) \
427 RST_SD_CMD(sdboot) \
428 RST_SD2_CMD(sd2boot) \
429 RST_NAND_CMD(nandboot) \
430 RST_PCIE_CMD(pciboot) \
431 RST_DEF_CMD(defboot) \
432 ""
433
434 #endif /* __CONFIG_H */