
From: Rick Chen rick@andestech.com
This series add support for SPL to AX25-AE350.
U-Boot SPL can boots from RAM or ROM and jump to OPenSbi(FW_DYNAMIC firmware) and U-Boot proper from RAM or MMC devices.
Also fix some bugs for andes plic driver and improve cache configurations for SPL.
Following are the booting messages on AE350 four cores SMP platform:
U-Boot 2019.10-00602-g693b70f (Oct 23 2019 - 16:32:19 +0800)
DRAM: 1 GiB
U-Boot SPL 2019.10-00601-g04f8f09-dirty (Oct 24 2019 - 10:46:49 +0800) Trying to boot from RAM
OpenSBI v0.4-32-g98ee15c (Sep 17 2019 10:41:30) ____ _____ ____ _____ / __ \ / ____| _ _ _| | | | |_ __ ___ _ __ | (___ | |_) || | | | | | '_ \ / _ \ '_ \ ___ | _ < | | | |__| | |_) | __/ | | |____) | |_) || |_ ____/| .__/ ___|_| |_|_____/|____/_____| | | |_|
Platform Name : Andes AE350 Platform HART Features : RV64ACIMSUX Platform Max HARTs : 4 Current Hart : 0 Firmware Base : 0x0 Firmware Size : 80 KB Runtime SBI Version : 0.1
PMP0: 0x0000000000000000-0x000000000001ffff (A) PMP1: 0x0000000000000000-0x00000001ffffffff (A,R,W,X)
U-Boot 2019.10-00601-g04f8f09-dirty (Oct 24 2019 - 10:46:49 +0800)
DRAM: 1 GiB Flash: 64 MiB MMC: mmc@f0e00000: 0 Loading Environment from SPI Flash... SF: Detected mx25u1635e with page size 256 Bytes, erase size 4 KiB, total 2 MiB OK In: serial@f0300000 Out: serial@f0300000 Err: serial@f0300000 Net: no alias for ethernet0
Warning: mac@e0100000 (eth0) using random MAC address - 06:2b:40:2d:38:d1 eth0: mac@e0100000 Hit any key to stop autoboot: 0 6455 bytes read in 30 ms (210 KiB/s) 20421684 bytes read in 8614 ms (2.3 MiB/s) ## Booting kernel from Legacy Image at 00600000 ... Image Name: Image Type: RISC-V Linux Kernel Image (uncompressed) Data Size: 20421620 Bytes = 19.5 MiB Load Address: 00200000 Entry Point: 00200000 Verifying Checksum ... OK ## Flattened Device Tree blob at 20000000 Booting using the fdt blob at 0x20000000 Loading Kernel Image Loading Device Tree to 000000001effb000, end 000000001efff936 ... OK
Starting kernel ...
OF: fdt: Ignoring memory range 0x0 - 0x200000 Linux version 4.17.0-00253-g49136e10bcb2 (sqa@atcsqa07) (gcc version 7.3.0 (2019-04-06_nds64le-linux-glibc-v5_experimental)) #1 SMP PREEMPT Sat Apr 6 23:41:49 CST 2019 bootconsole [early0] enabled Initial ramdisk at: 0x (ptrval) (13665712 bytes) Zone ranges: DMA32 [mem 0x0000000000200000-0x000000003fffffff] Normal empty Movable zone start for each node Early memory node ranges node 0: [mem 0x0000000000200000-0x000000003fffffff] Initmem setup node 0 [mem 0x0000000000200000-0x000000003fffffff] software IO TLB [mem 0x3b1f8000-0x3f1f8000] (64MB) mapped at [ (ptrval)- (ptrval)] elf_platform is rv64i2p0m2p0a2p0c2p0xv5-0p0 compatible privileged spec version 1.10 percpu: Embedded 16 pages/cpu @ (ptrval) s28184 r8192 d29160 u65536 Built 1 zonelists, mobility grouping on. Total pages: 258055 Kernel command line: console=ttyS0,38400n8 debug loglevel=7 log_buf_len individual max cpu contribution: 4096 bytes log_buf_len total cpu_extra contributions: 12288 bytes log_buf_len min size: 16384 bytes log_buf_len: 32768 bytes early log buf free: 14608(89%) Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes) Inode-cache hash table entries: 65536 (order: 7, 524288 bytes) Sorting __ex_table... Memory: 944428K/1046528K available (3979K kernel code, 246K rwdata, 1490K rodata, 13523K init, 688K bss, 102100K reserved, 0K cma-reserved) SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 Preemptible hierarchical RCU implementation. Tasks RCU enabled. NR_IRQS: 72, nr_irqs: 72, preallocated irqs: 0 riscv,cpu_intc,0: 64 local interrupts mapped riscv,cpu_intc,1: 64 local interrupts mapped riscv,cpu_intc,2: 64 local interrupts mapped riscv,cpu_intc,3: 64 local interrupts mapped riscv,plic0,e4000000: mapped 71 interrupts to 8/8 handlers clocksource: riscv_clocksource: mask: 0xffffffffffffffff max_cycles: 0x1bacf917bf, max_idle_ns: 881590412290 ns sched_clock: 64 bits at 60MHz, resolution 16ns, wraps every 4398046511098ns Console: colour dummy device 40x30 Calibrating delay loop (skipped), value calculated using timer frequency.. 120.00 BogoMIPS (lpj=600000) pid_max: default: 32768 minimum: 301 Mount-cache hash table entries: 2048 (order: 2, 16384 bytes) Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes) Hierarchical SRCU implementation. smp: Bringing up secondary CPUs ... CPU0: online CPU2: online CPU3: online smp: Brought up 1 node, 4 CPUs ... ... ...
Rick Chen (8): riscv: ax25: add SPL support riscv: ax25-ae350: add SPL configuration riscv: ax25-ae350: Use generic memory size setup riscv: andes_plic: Fix some wrong configurations riscv: ax25: cache: Add SPL_RISCV_MMODE for SPL spl: cache: Allow cache drivers in SPL riscv: Fix clear bss loop in the start-up code riscv: dts: Support four cores SMP
arch/riscv/cpu/ax25/Kconfig | 4 ++- arch/riscv/cpu/ax25/cache.c | 60 +++++++++++++++++++++++++-------- arch/riscv/cpu/start.S | 4 +-- arch/riscv/dts/ae350_32.dts | 51 ++++++++++++++++++++++++++-- arch/riscv/dts/ae350_64.dts | 51 ++++++++++++++++++++++++++-- arch/riscv/lib/andes_plic.c | 11 +++--- board/AndesTech/ax25-ae350/Kconfig | 10 ++++++ board/AndesTech/ax25-ae350/MAINTAINERS | 4 +++ board/AndesTech/ax25-ae350/ax25-ae350.c | 48 +++++++++++++++----------- common/spl/Kconfig | 7 ++++ configs/ae350_rv32_spl_defconfig | 37 ++++++++++++++++++++ configs/ae350_rv32_spl_xip_defconfig | 39 +++++++++++++++++++++ configs/ae350_rv64_spl_defconfig | 38 +++++++++++++++++++++ configs/ae350_rv64_spl_xip_defconfig | 40 ++++++++++++++++++++++ drivers/Makefile | 1 + include/configs/ax25-ae350.h | 17 ++++++++++ 16 files changed, 376 insertions(+), 46 deletions(-) create mode 100644 configs/ae350_rv32_spl_defconfig create mode 100644 configs/ae350_rv32_spl_xip_defconfig create mode 100644 configs/ae350_rv64_spl_defconfig create mode 100644 configs/ae350_rv64_spl_xip_defconfig