Commit 89a168f776cbc15a2ff1f25a0f4e54f9bbaffdec
Committed by
York Sun
1 parent
d1418c15c8
Exists in
smarc_8mq_lf_v2020.04
and in
17 other branches
armv8: ls2080ardb: Add QSPI-boot support
QSPI-boot is supported on LS2088ARDB RevF board with LS2088A SoC. LS2088ARDB RevF Board has limitation that QIXIS can not be accessed. CONFIG_FSL_QIXIS is not enabled. Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com> Signed-off-by: Suresh Gupta <suresh.gupta@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
Showing 9 changed files with 195 additions and 11 deletions Side-by-side Diff
arch/arm/cpu/armv8/fsl-layerscape/Kconfig
... | ... | @@ -163,6 +163,7 @@ |
163 | 163 | config SYS_LS_PPA_FW_ADDR |
164 | 164 | hex "Address of PPA firmware loading from" |
165 | 165 | depends on FSL_LS_PPA |
166 | + default 0x20400000 if SYS_LS_PPA_FW_IN_XIP && QSPI_BOOT && ARCH_LS2080A | |
166 | 167 | default 0x40500000 if SYS_LS_PPA_FW_IN_XIP && QSPI_BOOT |
167 | 168 | default 0x580a00000 if SYS_LS_PPA_FW_IN_XIP && ARCH_LS2080A |
168 | 169 | default 0x60500000 if SYS_LS_PPA_FW_IN_XIP |
arch/arm/dts/Makefile
... | ... | @@ -174,7 +174,8 @@ |
174 | 174 | ls1021a-twr-duart.dtb ls1021a-twr-lpuart.dtb \ |
175 | 175 | ls1021a-iot-duart.dtb |
176 | 176 | dtb-$(CONFIG_FSL_LSCH3) += fsl-ls2080a-qds.dtb \ |
177 | - fsl-ls2080a-rdb.dtb | |
177 | + fsl-ls2080a-rdb.dtb \ | |
178 | + fsl-ls2088a-rdb-qspi.dtb | |
178 | 179 | dtb-$(CONFIG_FSL_LSCH2) += fsl-ls1043a-qds-duart.dtb \ |
179 | 180 | fsl-ls1043a-qds-lpuart.dtb \ |
180 | 181 | fsl-ls1043a-rdb.dtb \ |
arch/arm/dts/fsl-ls2088a-rdb-qspi.dts
1 | +/* | |
2 | + * NXP ls2080a RDB board device tree source for QSPI-boot | |
3 | + * | |
4 | + * Author: Priyanka Jain <priyanka.jain@nxp.com> | |
5 | + * | |
6 | + * Copyright 2017 NXP | |
7 | + * | |
8 | + * SPDX-License-Identifier: GPL-2.0+ | |
9 | + */ | |
10 | + | |
11 | +/dts-v1/; | |
12 | + | |
13 | +#include "fsl-ls2080a.dtsi" | |
14 | + | |
15 | +/ { | |
16 | + model = "Freescale Layerscape 2080a RDB Board"; | |
17 | + compatible = "fsl,ls2080a-rdb", "fsl,ls2080a"; | |
18 | + | |
19 | + aliases { | |
20 | + spi0 = &qspi; | |
21 | + spi1 = &dspi; | |
22 | + }; | |
23 | +}; | |
24 | + | |
25 | +&dspi { | |
26 | + bus-num = <0>; | |
27 | + status = "okay"; | |
28 | + | |
29 | + dflash0: n25q512a { | |
30 | + #address-cells = <1>; | |
31 | + #size-cells = <1>; | |
32 | + compatible = "spi-flash"; | |
33 | + spi-max-frequency = <3000000>; | |
34 | + spi-cpol; | |
35 | + spi-cpha; | |
36 | + reg = <0>; | |
37 | + }; | |
38 | +}; | |
39 | + | |
40 | +&qspi { | |
41 | + bus-num = <0>; | |
42 | + status = "okay"; | |
43 | + | |
44 | + qflash0: s25fs512s@0 { | |
45 | + #address-cells = <1>; | |
46 | + #size-cells = <1>; | |
47 | + compatible = "spi-flash"; | |
48 | + spi-max-frequency = <50000000>; | |
49 | + reg = <0>; | |
50 | + }; | |
51 | + | |
52 | + qflash1: s25fs512s@1 { | |
53 | + #address-cells = <1>; | |
54 | + #size-cells = <1>; | |
55 | + compatible = "spi-flash"; | |
56 | + spi-max-frequency = <50000000>; | |
57 | + reg = <1>; | |
58 | + }; | |
59 | +}; |
board/freescale/ls2080ardb/MAINTAINERS
... | ... | @@ -7,6 +7,11 @@ |
7 | 7 | F: configs/ls2080ardb_defconfig |
8 | 8 | F: configs/ls2080ardb_nand_defconfig |
9 | 9 | |
10 | +LS2088A_QSPI-boot BOARD | |
11 | +M: Priyanka Jain <priyanka.jain@nxp.com> | |
12 | +S: Maintained | |
13 | +F: configs/ls2088ardb_qspi_defconfig | |
14 | + | |
10 | 15 | LS2080A_SECURE_BOOT BOARD |
11 | 16 | M: Saksham Jain <saksham.jain@nxp.freescale.com> |
12 | 17 | S: Maintained |
board/freescale/ls2080ardb/README
... | ... | @@ -43,6 +43,7 @@ |
43 | 43 | 0x00_0000_0000 .. 0x00_000F_FFFF Boot Rom |
44 | 44 | 0x00_0100_0000 .. 0x00_0FFF_FFFF CCSR |
45 | 45 | 0x00_1800_0000 .. 0x00_181F_FFFF OCRAM |
46 | +0x00_2000_0000 .. 0x00_2FFF_FFFF QSPI region #1 | |
46 | 47 | 0x00_3000_0000 .. 0x00_3FFF_FFFF IFC region #1 |
47 | 48 | 0x00_8000_0000 .. 0x00_FFFF_FFFF DDR region #1 |
48 | 49 | 0x05_1000_0000 .. 0x05_FFFF_FFFF IFC region #2 |
... | ... | @@ -68,6 +69,31 @@ |
68 | 69 | --------------- |
69 | 70 | a) NOR boot |
70 | 71 | b) NAND boot |
72 | +c) QSPI boot | |
73 | + | |
74 | +cfg_rcw_src switches needs to be changed for booting from different option. | |
75 | +Refer to board documentation for correct switch setting. | |
76 | + | |
77 | +QSPI boot details | |
78 | +=================== | |
79 | +Supported only for | |
80 | + LS2088ARDB RevF board with LS2088A SoC. | |
81 | + | |
82 | +Images needs to be copied to QSPI flash | |
83 | +as per memory map given below. | |
84 | + | |
85 | +Memory map for QSPI flash | |
86 | +------------------------- | |
87 | +Image Flash Offset | |
88 | +RCW+PBI 0x00000000 | |
89 | +Boot firmware (U-Boot) 0x00100000 | |
90 | +Boot firmware Environment 0x00300000 | |
91 | +PPA firmware 0x00400000 | |
92 | +Cortina PHY firmware 0x00980000 | |
93 | +DPAA2 MC 0x00A00000 | |
94 | +DPAA2 DPL 0x00D00000 | |
95 | +DPAA2 DPC 0x00E00000 | |
96 | +Kernel.itb 0x01000000 | |
71 | 97 | |
72 | 98 | Booting Linux flavors which do not support 48-bit VA (< Linux 3.18) |
73 | 99 | ------------------------------------------------------------------- |
configs/ls2088ardb_qspi_defconfig
1 | +CONFIG_ARM=y | |
2 | +CONFIG_TARGET_LS2080ARDB=y | |
3 | +CONFIG_FSL_LS_PPA=y | |
4 | +CONFIG_QSPI_AHB_INIT=y | |
5 | +CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2088a-rdb-qspi" | |
6 | +# CONFIG_SYS_MALLOC_F is not set | |
7 | +CONFIG_FIT_VERBOSE=y | |
8 | +CONFIG_OF_BOARD_SETUP=y | |
9 | +CONFIG_OF_STDOUT_VIA_ALIAS=y | |
10 | +CONFIG_QSPI_BOOT=y | |
11 | +CONFIG_BOOTDELAY=10 | |
12 | +CONFIG_CMD_GREPENV=y | |
13 | +# CONFIG_CMD_IMLS is not set | |
14 | +CONFIG_CMD_GPT=y | |
15 | +CONFIG_CMD_MMC=y | |
16 | +CONFIG_CMD_SF=y | |
17 | +CONFIG_CMD_I2C=y | |
18 | +CONFIG_CMD_DHCP=y | |
19 | +CONFIG_CMD_MII=y | |
20 | +CONFIG_CMD_PING=y | |
21 | +CONFIG_CMD_CACHE=y | |
22 | +CONFIG_CMD_EXT2=y | |
23 | +CONFIG_CMD_FAT=y | |
24 | +CONFIG_OF_CONTROL=y | |
25 | +CONFIG_NET_RANDOM_ETHADDR=y | |
26 | +CONFIG_DM=y | |
27 | +CONFIG_FSL_CAAM=y | |
28 | +CONFIG_DM_SPI_FLASH=y | |
29 | +CONFIG_NETDEVICES=y | |
30 | +CONFIG_E1000=y | |
31 | +CONFIG_PCI=y | |
32 | +CONFIG_DM_PCI=y | |
33 | +CONFIG_DM_PCI_COMPAT=y | |
34 | +CONFIG_PCIE_LAYERSCAPE=y | |
35 | +CONFIG_SYS_NS16550=y | |
36 | +CONFIG_DM_SPI=y | |
37 | +CONFIG_FSL_QSPI=y | |
38 | +CONFIG_FSL_DSPI=y | |
39 | +CONFIG_CMD_USB=y | |
40 | +# CONFIG_CMD_SETEXPR is not set | |
41 | +CONFIG_USB=y | |
42 | +CONFIG_DM_USB=y | |
43 | +CONFIG_USB_XHCI_HCD=y | |
44 | +CONFIG_USB_XHCI_DWC3=y | |
45 | +CONFIG_USB_STORAGE=y | |
46 | +CONFIG_EFI_LOADER_BOUNCE_BUFFER=y |
include/configs/ls2080a_common.h
1 | 1 | /* |
2 | + * Copyright 2017 NXP | |
2 | 3 | * Copyright (C) 2014 Freescale Semiconductor |
3 | 4 | * |
4 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
... | ... | @@ -28,6 +29,12 @@ |
28 | 29 | #else |
29 | 30 | #define CONFIG_SYS_TEXT_BASE 0x30100000 |
30 | 31 | #endif |
32 | +#else | |
33 | +#define CONFIG_SYS_TEXT_BASE 0x20100000 | |
34 | +#define CONFIG_ENV_IS_IN_SPI_FLASH | |
35 | +#define CONFIG_ENV_SIZE 0x2000 /* 8KB */ | |
36 | +#define CONFIG_ENV_OFFSET 0x300000 /* 3MB */ | |
37 | +#define CONFIG_ENV_SECT_SIZE 0x10000 | |
31 | 38 | #endif |
32 | 39 | |
33 | 40 | #define CONFIG_SUPPORT_RAW_INITRD |
include/configs/ls2080aqds.h
1 | 1 | /* |
2 | + * Copyright 2017 NXP | |
2 | 3 | * Copyright 2015 Freescale Semiconductor |
3 | 4 | * |
4 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
... | ... | @@ -262,13 +263,7 @@ |
262 | 263 | #define CONFIG_SYS_CS2_FTIM2 CONFIG_SYS_NAND_FTIM2 |
263 | 264 | #define CONFIG_SYS_CS2_FTIM3 CONFIG_SYS_NAND_FTIM3 |
264 | 265 | |
265 | -#if defined(CONFIG_QSPI_BOOT) | |
266 | -#define CONFIG_SYS_TEXT_BASE 0x20010000 | |
267 | -#define CONFIG_ENV_IS_IN_SPI_FLASH | |
268 | -#define CONFIG_ENV_SIZE 0x2000 /* 8KB */ | |
269 | -#define CONFIG_ENV_OFFSET 0x100000 /* 1MB */ | |
270 | -#define CONFIG_ENV_SECT_SIZE 0x10000 | |
271 | -#else | |
266 | +#ifndef CONFIG_QSPI_BOOT | |
272 | 267 | #define CONFIG_ENV_IS_IN_FLASH |
273 | 268 | #define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + 0x200000) |
274 | 269 | #define CONFIG_ENV_SECT_SIZE 0x20000 |
include/configs/ls2080ardb.h
1 | 1 | /* |
2 | + * Copyright 2017 NXP | |
2 | 3 | * Copyright 2015 Freescale Semiconductor |
3 | 4 | * |
4 | 5 | * SPDX-License-Identifier: GPL-2.0+ |
... | ... | @@ -12,6 +13,11 @@ |
12 | 13 | #undef CONFIG_CONS_INDEX |
13 | 14 | #define CONFIG_CONS_INDEX 2 |
14 | 15 | |
16 | +#ifdef CONFIG_FSL_QSPI | |
17 | +#define CONFIG_SYS_I2C_EARLY_INIT | |
18 | +#define CONFIG_DISPLAY_BOARDINFO_LATE | |
19 | +#endif | |
20 | + | |
15 | 21 | #define I2C_MUX_CH_VOL_MONITOR 0xa |
16 | 22 | #define I2C_VOL_MONITOR_ADDR 0x38 |
17 | 23 | #define CONFIG_VOL_MONITOR_IR36021_READ |
... | ... | @@ -69,6 +75,7 @@ |
69 | 75 | #define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \ |
70 | 76 | CONFIG_SYS_SCSI_MAX_LUN) |
71 | 77 | |
78 | +#ifndef CONFIG_FSL_QSPI | |
72 | 79 | /* undefined CONFIG_FSL_DDR_SYNC_REFRESH for simulator */ |
73 | 80 | |
74 | 81 | #define CONFIG_SYS_NOR0_CSPR_EXT (0x0) |
... | ... | @@ -157,7 +164,6 @@ |
157 | 164 | #define CONFIG_CMD_NAND |
158 | 165 | |
159 | 166 | #define CONFIG_SYS_NAND_BLOCK_SIZE (512 * 1024) |
160 | - | |
161 | 167 | #define CONFIG_FSL_QIXIS /* use common QIXIS code */ |
162 | 168 | #define QIXIS_LBMAP_SWITCH 0x06 |
163 | 169 | #define QIXIS_LBMAP_MASK 0x0f |
... | ... | @@ -250,7 +256,7 @@ |
250 | 256 | /* Debug Server firmware */ |
251 | 257 | #define CONFIG_SYS_DEBUG_SERVER_FW_IN_NOR |
252 | 258 | #define CONFIG_SYS_DEBUG_SERVER_FW_ADDR 0x580D00000ULL |
253 | - | |
259 | +#endif | |
254 | 260 | #define CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS 5000 |
255 | 261 | |
256 | 262 | /* |
257 | 263 | |
258 | 264 | |
... | ... | @@ -263,10 +269,17 @@ |
263 | 269 | #define I2C_MUX_CH_DEFAULT 0x8 |
264 | 270 | |
265 | 271 | /* SPI */ |
266 | -#ifdef CONFIG_FSL_DSPI | |
272 | +#if defined(CONFIG_FSL_QSPI) || defined(CONFIG_FSL_DSPI) | |
267 | 273 | #define CONFIG_SPI_FLASH |
274 | +#ifdef CONFIG_FSL_QSPI | |
268 | 275 | #define CONFIG_SPI_FLASH_STMICRO |
269 | 276 | #endif |
277 | +#ifdef CONFIG_FSL_QSPI | |
278 | +#define CONFIG_SPI_FLASH_SPANSION | |
279 | +#define FSL_QSPI_FLASH_SIZE SZ_64M /* 64MB */ | |
280 | +#define FSL_QSPI_FLASH_NUM 2 | |
281 | +#endif | |
282 | +#endif | |
270 | 283 | |
271 | 284 | /* |
272 | 285 | * RTC configuration |
... | ... | @@ -345,6 +358,7 @@ |
345 | 358 | " 0x580800000 \0" \ |
346 | 359 | BOOTENV |
347 | 360 | #else |
361 | +#ifdef CONFIG_QSPI_BOOT | |
348 | 362 | #define CONFIG_EXTRA_ENV_SETTINGS \ |
349 | 363 | "hwconfig=fsl_ddr:bank_intlv=auto\0" \ |
350 | 364 | "scriptaddr=0x80800000\0" \ |
... | ... | @@ -354,6 +368,24 @@ |
354 | 368 | "ramdisk_addr_r=0x89000000\0" \ |
355 | 369 | "loadaddr=0x80100000\0" \ |
356 | 370 | "kernel_addr=0x100000\0" \ |
371 | + "ramdisk_size=0x2000000\0" \ | |
372 | + "fdt_high=0xa0000000\0" \ | |
373 | + "initrd_high=0xffffffffffffffff\0" \ | |
374 | + "kernel_start=0x21000000\0" \ | |
375 | + "mcmemsize=0x40000000\0" \ | |
376 | + "mcinitcmd=fsl_mc start mc 0x20a00000" \ | |
377 | + " 0x20e00000 \0" \ | |
378 | + BOOTENV | |
379 | +#else | |
380 | +#define CONFIG_EXTRA_ENV_SETTINGS \ | |
381 | + "hwconfig=fsl_ddr:bank_intlv=auto\0" \ | |
382 | + "scriptaddr=0x80800000\0" \ | |
383 | + "kernel_addr_r=0x81000000\0" \ | |
384 | + "pxefile_addr_r=0x81000000\0" \ | |
385 | + "fdt_addr_r=0x88000000\0" \ | |
386 | + "ramdisk_addr_r=0x89000000\0" \ | |
387 | + "loadaddr=0x80100000\0" \ | |
388 | + "kernel_addr=0x100000\0" \ | |
357 | 389 | "ramdisk_addr=0x800000\0" \ |
358 | 390 | "ramdisk_size=0x2000000\0" \ |
359 | 391 | "fdt_high=0xa0000000\0" \ |
... | ... | @@ -367,6 +399,7 @@ |
367 | 399 | " 0x580800000 \0" \ |
368 | 400 | BOOTENV |
369 | 401 | #endif |
402 | +#endif | |
370 | 403 | |
371 | 404 | |
372 | 405 | #undef CONFIG_BOOTARGS |
373 | 406 | |
... | ... | @@ -376,11 +409,18 @@ |
376 | 409 | " hugepagesz=2m hugepages=256" |
377 | 410 | |
378 | 411 | #undef CONFIG_BOOTCOMMAND |
412 | +#ifdef CONFIG_QSPI_BOOT | |
413 | +/* Try to boot an on-QSPI kernel first, then do normal distro boot */ | |
414 | +#define CONFIG_BOOTCOMMAND "run mcinitcmd && fsl_mc lazyapply dpl 0x20d00000" \ | |
415 | + " && bootm $kernel_start" \ | |
416 | + " || run distro_bootcmd" | |
417 | +#else | |
379 | 418 | /* Try to boot an on-NOR kernel first, then do normal distro boot */ |
380 | 419 | #define CONFIG_BOOTCOMMAND "run mcinitcmd && fsl_mc lazyapply dpl 0x580700000" \ |
381 | 420 | " && cp.b $kernel_start $kernel_load $kernel_size" \ |
382 | 421 | " && bootm $kernel_load" \ |
383 | 422 | " || run distro_bootcmd" |
423 | +#endif | |
384 | 424 | |
385 | 425 | /* MAC/PHY configuration */ |
386 | 426 | #ifdef CONFIG_FSL_MC_ENET |
387 | 427 | |
... | ... | @@ -389,7 +429,11 @@ |
389 | 429 | #define CONFIG_PHY_CORTINA |
390 | 430 | #define CONFIG_PHYLIB |
391 | 431 | #define CONFIG_SYS_CORTINA_FW_IN_NOR |
432 | +#ifdef CONFIG_QSPI_BOOT | |
433 | +#define CONFIG_CORTINA_FW_ADDR 0x20980000 | |
434 | +#else | |
392 | 435 | #define CONFIG_CORTINA_FW_ADDR 0x581000000 |
436 | +#endif | |
393 | 437 | #define CONFIG_CORTINA_FW_LENGTH 0x40000 |
394 | 438 | |
395 | 439 | #define CORTINA_PHY_ADDR1 0x10 |