mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-17 23:37:01 +00:00
Without this patch, there will be error indicating that "Cannot use 64 bit addresses with SDMA", and the booting process will stuck. please see full boot log below U-Boot 2022.04-g18185931 (Sep 11 2024 - 13:15:30 +0800) SoC: LS1028AE Rev1.0 (0x870b0010) Clock Configuration: CPU0(A72):1500 MHz CPU1(A72):1500 MHz Bus: 400 MHz DDR: 1600 MT/s Reset Configuration Word (RCW): 00000000: 3c004010 00000030 00000000 00000000 00000010: 00000000 018f0000 0030c000 00000000 00000020: 020031a0 00002580 00000000 00003296 00000030: 00000000 00000010 00000000 00000000 00000040: 00000000 00000000 00000000 00000000 00000050: 00000000 00000000 00000000 00000000 00000060: 00000000 00000000 200e705a 00000000 00000070: bb580000 00000000 Model: LS1028A RDB Board Board: LS1028AE Rev1.0-RDB, Version: C, boot from SD FPGA: v8 (RDB) SERDES1 Reference : Clock1 = 100.00MHz Clock2 = 100.00MHz DRAM: 3.9 GiB DDR 3.9 GiB (DDR4, 32-bit, CL=11, ECC on) Using SERDES1 Protocol: 47960 (0xbb58) PCIe1: pcie@3400000 Root Complex: no link PCIe2: pcie@3500000 Root Complex: x1 gen2 Core: 45 devices, 22 uclasses, devicetree: separate WDT: Started watchdog@c000000 with servicing (60s timeout) WDT: Started watchdog@c010000 with servicing (60s timeout) MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... *** Warning - bad CRC, using default environment EEPROM: Invalid ID (ff ff ff ff) In: serial Out: serial Err: serial SEC0: RNG instantiated Net: Warning: enetc-0 (eth0) using random MAC address - d2:9b:a5:37:7b:b5 eth0: enetc-0 Warning: enetc-2 (eth1) using random MAC address - ca:57:11🇩🇪de:cb , eth1: enetc-2, eth2: swp0, eth3: swp1, eth4: swp2, eth5: swp3 Hit any key to stop autoboot: 0 Trying load HDP firmware from SD.. switch to partitions #0, OK mmc0 is current device Device: FSL_SDHC Manufacturer ID: 9f OEM: 5449 Name: SD32G Bus Speed: 50000000 Mode: SD High Speed (50MHz) Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 28.9 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes MMC read: dev # 0, block # 18944, count 512 ... 512 blocks read: OK Loading hdp firmware from 0x00000000a0000000 offset 0x0000000000002000 Loading hdp firmware Complete switch to partitions #0, OK mmc0 is current device Scanning mmc 0:1... ** Unable to read file / ** Failed to load '/' libfdt fdt_check_header(): FDT_ERR_BADMAGIC Scanning disk mmc@2140000.blk... Scanning disk mmc@2150000.blk... Found 7 disks ERROR: invalid device tree Found EFI removable media binary efi/boot/bootaa64.efi 981992 bytes read in 44 ms (21.3 MiB/s) libfdt fdt_check_header(): FDT_ERR_BADMAGIC WARNING could not find node vivante,gc: FDT_ERR_NOTFOUND. Booting /efi\boot\bootaa64.efi Cannot use 64 bit addresses with SDMA Error reading cluster ** Unable to read file /efi/boot/grubaa64.efi ** Unexpected return from initial read: Device Error, buffersize 29D790 Failed to load image ¬ : Device Error start_image() returned Device Error EFI LOAD FAILED: continuing... switch to partitions #0, OK mmc1(part 0) is current device Scanning mmc 1:1... ** Unable to read file / ** Failed to load '/' libfdt fdt_check_header(): FDT_ERR_BADMAGIC BootOrder not defined EFI boot manager: Cannot load any image Scanning mmc 1:2... ** Unable to read file / ** Failed to load '/' libfdt fdt_check_header(): FDT_ERR_BADMAGIC BootOrder not defined EFI boot manager: Cannot load any image starting USB... Bus usb@3100000: Register 200017f NbrPorts 2 Starting the controller USB XHCI 1.00 Bus usb@3110000: Register 200017f NbrPorts 2 Starting the controller USB XHCI 1.00 scanning bus usb@3100000 for devices... 1 USB Device(s) found scanning bus usb@3110000 for devices... 1 USB Device(s) found scanning usb for storage devices... 0 Storage Device(s) found Device 0: unknown device Trying load from SD ... switch to partitions #0, OK mmc0 is current device Device: FSL_SDHC Manufacturer ID: 9f OEM: 5449 Name: SD32G Bus Speed: 50000000 Mode: SD High Speed (50MHz) Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 28.9 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes MMC read: dev # 0, block # 32768, count 81920 ... 81920 blocks read: OK Wrong Image Format for bootm command ERROR: can't get kernel image! Signed-off-by: Wei Ming Chen <jj251510319013@gmail.com> Signed-off-by: Peng Fan <peng.fan@nxp.com>
130 lines
4.5 KiB
C
130 lines
4.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright 2019, 2021 NXP
|
|
*/
|
|
|
|
#ifndef __LS1028A_RDB_H
|
|
#define __LS1028A_RDB_H
|
|
|
|
#include "ls1028a_common.h"
|
|
|
|
#define COUNTER_FREQUENCY_REAL (get_board_sys_clk() / 4)
|
|
|
|
/* Store environment at top of flash */
|
|
|
|
/*
|
|
* QIXIS Definitions
|
|
*/
|
|
|
|
#ifdef CONFIG_FSL_QIXIS
|
|
#define QIXIS_BASE 0x7fb00000
|
|
#define QIXIS_BASE_PHYS QIXIS_BASE
|
|
#define CFG_SYS_I2C_FPGA_ADDR 0x66
|
|
#define QIXIS_LBMAP_SWITCH 2
|
|
#define QIXIS_LBMAP_MASK 0xe0
|
|
#define QIXIS_LBMAP_SHIFT 0x5
|
|
#define QIXIS_LBMAP_DFLTBANK 0x00
|
|
#define QIXIS_LBMAP_ALTBANK 0x00
|
|
#define QIXIS_LBMAP_SD 0x00
|
|
#define QIXIS_LBMAP_EMMC 0x00
|
|
#define QIXIS_LBMAP_XSPI 0x00
|
|
#define QIXIS_RCW_SRC_SD 0xf8
|
|
#define QIXIS_RCW_SRC_EMMC 0xf9
|
|
#define QIXIS_RCW_SRC_XSPI 0xff
|
|
#define QIXIS_RST_CTL_RESET 0x31
|
|
#define QIXIS_RCFG_CTL_RECONFIG_IDLE 0x10
|
|
#define QIXIS_RCFG_CTL_RECONFIG_START 0x11
|
|
#define QIXIS_RCFG_CTL_WATCHDOG_ENBLE 0x08
|
|
#define QIXIS_RST_FORCE_MEM 0x01
|
|
|
|
#define CFG_SYS_FPGA_CSPR_EXT (0x0)
|
|
#define CFG_SYS_FPGA_CSPR (CSPR_PHYS_ADDR(QIXIS_BASE_PHYS) | \
|
|
CSPR_PORT_SIZE_8 | \
|
|
CSPR_MSEL_GPCM | \
|
|
CSPR_V)
|
|
#define CFG_SYS_FPGA_CSOR (CSOR_NOR_ADM_SHIFT(4) | \
|
|
CSOR_NOR_NOR_MODE_AVD_NOR | \
|
|
CSOR_NOR_TRHZ_80)
|
|
#endif
|
|
|
|
/* Initial environment variables */
|
|
#ifndef SPL_NO_ENV
|
|
#undef CFG_EXTRA_ENV_SETTINGS
|
|
#define CFG_EXTRA_ENV_SETTINGS \
|
|
"board=ls1028ardb\0" \
|
|
"hwconfig=fsl_ddr:bank_intlv=auto\0" \
|
|
"fdtfile=fsl-ls1028a-rdb.dtb\0" \
|
|
"ramdisk_addr=0x800000\0" \
|
|
"ramdisk_size=0x2000000\0" \
|
|
"bootm_size=0x10000000\0" \
|
|
"kernel_addr=0x01000000\0" \
|
|
"scriptaddr=0x80000000\0" \
|
|
"scripthdraddr=0x80080000\0" \
|
|
"fdtheader_addr_r=0x80100000\0" \
|
|
"kernelheader_addr_r=0x80200000\0" \
|
|
"load_addr=0xa0000000\0" \
|
|
"kernel_addr_r=0x81000000\0" \
|
|
"fdt_addr_r=0x90000000\0" \
|
|
"ramdisk_addr_r=0xa0000000\0" \
|
|
"kernel_start=0x1000000\0" \
|
|
"kernelheader_start=0x600000\0" \
|
|
"kernel_load=0xa0000000\0" \
|
|
"kernel_size=0x2800000\0" \
|
|
"kernelheader_size=0x40000\0" \
|
|
"kernel_addr_sd=0x8000\0" \
|
|
"kernel_size_sd=0x14000\0" \
|
|
"kernelhdr_addr_sd=0x3000\0" \
|
|
"kernelhdr_size_sd=0x20\0" \
|
|
"console=ttyS0,115200\0" \
|
|
BOOTENV \
|
|
"boot_scripts=ls1028ardb_boot.scr\0" \
|
|
"boot_script_hdr=hdr_ls1028ardb_bs.out\0" \
|
|
"scan_dev_for_boot_part=" \
|
|
"part list ${devtype} ${devnum} devplist; " \
|
|
"env exists devplist || setenv devplist 1; " \
|
|
"for distro_bootpart in ${devplist}; do " \
|
|
"if fstype ${devtype} " \
|
|
"${devnum}:${distro_bootpart} " \
|
|
"bootfstype; then " \
|
|
"run scan_dev_for_boot; " \
|
|
"fi; " \
|
|
"done\0" \
|
|
"boot_a_script=" \
|
|
"load ${devtype} ${devnum}:${distro_bootpart} " \
|
|
"${scriptaddr} ${prefix}${script}; " \
|
|
"env exists secureboot && load ${devtype} " \
|
|
"${devnum}:${distro_bootpart} " \
|
|
"${scripthdraddr} ${prefix}${boot_script_hdr} " \
|
|
"&& esbc_validate ${scripthdraddr};" \
|
|
"source ${scriptaddr}\0" \
|
|
"xspi_bootcmd=echo Trying load from FlexSPI flash ...;" \
|
|
"sf probe 0:0 && sf read $load_addr " \
|
|
"$kernel_start $kernel_size ; env exists secureboot &&" \
|
|
"sf read $kernelheader_addr_r $kernelheader_start " \
|
|
"$kernelheader_size && esbc_validate ${kernelheader_addr_r}; "\
|
|
" bootm $load_addr#$board\0" \
|
|
"xspi_hdploadcmd=echo Trying load HDP firmware from FlexSPI...;" \
|
|
"sf probe 0:0 && sf read $load_addr 0x940000 0x30000 " \
|
|
"&& hdp load $load_addr 0x2000\0" \
|
|
"sd_bootcmd=echo Trying load from SD ...;" \
|
|
"mmc dev 0;mmcinfo; mmc read $load_addr " \
|
|
"$kernel_addr_sd $kernel_size_sd && " \
|
|
"env exists secureboot && mmc read $kernelheader_addr_r " \
|
|
"$kernelhdr_addr_sd $kernelhdr_size_sd " \
|
|
" && esbc_validate ${kernelheader_addr_r};" \
|
|
"bootm $load_addr#$board\0" \
|
|
"sd_hdploadcmd=echo Trying load HDP firmware from SD..;" \
|
|
"mmc dev 0;mmcinfo;mmc read $load_addr 0x4a00 0x200 " \
|
|
"&& hdp load $load_addr 0x2000\0" \
|
|
"emmc_bootcmd=echo Trying load from EMMC ..;" \
|
|
"mmc dev 1;mmcinfo; mmc read $load_addr " \
|
|
"$kernel_addr_sd $kernel_size_sd && " \
|
|
"env exists secureboot && mmc read $kernelheader_addr_r " \
|
|
"$kernelhdr_addr_sd $kernelhdr_size_sd " \
|
|
" && esbc_validate ${kernelheader_addr_r};" \
|
|
"bootm $load_addr#$board\0" \
|
|
"emmc_hdploadcmd=echo Trying load HDP firmware from EMMC..;" \
|
|
"mmc dev 1;mmcinfo;mmc read $load_addr 0x4a00 0x200 " \
|
|
"&& hdp load $load_addr 0x2000\0"
|
|
#endif
|
|
#endif /* __LS1028A_RDB_H */
|