aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.azure-pipelines.yml19
-rw-r--r--.gitlab-ci.yml13
-rw-r--r--Kconfig11
-rw-r--r--MAINTAINERS1
-rw-r--r--Makefile2
-rw-r--r--arch/arm/Kconfig3
-rw-r--r--arch/arm/mach-omap2/omap3/Kconfig10
-rw-r--r--arch/riscv/cpu/jh7110/Kconfig1
-rw-r--r--arch/riscv/dts/jh7110.dtsi9
-rw-r--r--arch/riscv/include/asm/sbi.h1
-rw-r--r--arch/riscv/lib/sbi.c16
-rw-r--r--board/CZ.NIC/turris_mox/MAINTAINERS1
-rw-r--r--board/CZ.NIC/turris_omnia/MAINTAINERS1
-rw-r--r--board/nokia/rx51/Kconfig48
-rw-r--r--board/nokia/rx51/MAINTAINERS8
-rw-r--r--board/nokia/rx51/Makefile7
-rw-r--r--board/nokia/rx51/lowlevel_init.S97
-rw-r--r--board/nokia/rx51/rx51.c806
-rw-r--r--board/nokia/rx51/tag_omap.h294
-rw-r--r--board/raspberrypi/rpi/rpi.env77
-rw-r--r--board/starfive/visionfive2/visionfive2-i2c-eeprom.c2
-rw-r--r--common/dlmalloc.c6
-rw-r--r--common/spl/spl_opensbi.c7
-rw-r--r--configs/nokia_rx51_defconfig76
-rw-r--r--configs/rpi_0_w_defconfig2
-rw-r--r--configs/rpi_2_defconfig2
-rw-r--r--configs/rpi_3_32b_defconfig2
-rw-r--r--configs/rpi_3_b_plus_defconfig2
-rw-r--r--configs/rpi_3_defconfig2
-rw-r--r--configs/rpi_4_32b_defconfig2
-rw-r--r--configs/rpi_4_defconfig2
-rw-r--r--configs/rpi_arm64_defconfig2
-rw-r--r--configs/rpi_defconfig2
-rw-r--r--configs/starfive_visionfive2_defconfig10
-rw-r--r--doc/board/index.rst1
-rw-r--r--doc/board/nokia/index.rst9
-rw-r--r--doc/board/nokia/rx51.rst250
-rw-r--r--doc/board/starfive/visionfive2.rst2
-rw-r--r--doc/develop/release_cycle.rst2
-rw-r--r--drivers/serial/Kconfig5
-rw-r--r--drivers/serial/serial_sbi.c20
-rw-r--r--drivers/timer/riscv_timer.c28
-rw-r--r--include/configs/nokia_rx51.h174
-rw-r--r--include/configs/rpi.h134
-rw-r--r--include/spl.h2
-rwxr-xr-xtest/nokia_rx51_test.sh420
-rw-r--r--tools/docker/Dockerfile31
47 files changed, 197 insertions, 2425 deletions
diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml
index 0304be8..da701e4 100644
--- a/.azure-pipelines.yml
+++ b/.azure-pipelines.yml
@@ -179,25 +179,6 @@ stages:
# seems to hang forever with pre-configured "container" environment
docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/build.sh
- - job: nokia_rx51_test
- displayName: 'Run tests for Nokia RX-51 (aka N900)'
- pool:
- vmImage: $(ubuntu_vm)
- container:
- image: $(ci_runner_image)
- options: $(container_option)
- steps:
- - script: |
- mkdir nokia_rx51_tmp
- ln -s /opt/nokia/u-boot-gen-combined nokia_rx51_tmp/
- ln -s /opt/nokia/qemu-n900.tar.gz nokia_rx51_tmp/
- ln -s /opt/nokia/kernel_2.6.28-20103103+0m5_armel.deb nokia_rx51_tmp/
- ln -s /opt/nokia/libc6_2.5.1-1eglibc27+0m5_armel.deb nokia_rx51_tmp/
- ln -s /opt/nokia/busybox_1.10.2.legal-1osso30+0m5_armel.deb nokia_rx51_tmp/
- ln -s /opt/nokia/qemu-system-arm nokia_rx51_tmp/
- export PATH=/opt/gcc-13.1.0-nolibc/arm-linux-gnueabi/bin:$PATH
- test/nokia_rx51_test.sh
-
- job: pylint
displayName: Check for any pylint regressions
pool:
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1df1326..2ceeb94 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -225,19 +225,6 @@ Run binman, buildman, dtoc, Kconfig and patman testsuites:
./tools/patman/patman test;
make testconfig
-Run tests for Nokia RX-51 (aka N900):
- stage: testsuites
- script:
- - mkdir nokia_rx51_tmp;
- ln -s /opt/nokia/u-boot-gen-combined nokia_rx51_tmp/;
- ln -s /opt/nokia/qemu-n900.tar.gz nokia_rx51_tmp/;
- ln -s /opt/nokia/kernel_2.6.28-20103103+0m5_armel.deb nokia_rx51_tmp/;
- ln -s /opt/nokia/libc6_2.5.1-1eglibc27+0m5_armel.deb nokia_rx51_tmp/;
- ln -s /opt/nokia/busybox_1.10.2.legal-1osso30+0m5_armel.deb nokia_rx51_tmp/;
- ln -s /opt/nokia/qemu-system-arm nokia_rx51_tmp/;
- export PATH=/opt/gcc-13.1.0-nolibc/arm-linux-gnueabi/bin:$PATH;
- test/nokia_rx51_test.sh
-
# Check for any pylint regressions
Run pylint:
stage: testsuites
diff --git a/Kconfig b/Kconfig
index 91170bf..6ba605a 100644
--- a/Kconfig
+++ b/Kconfig
@@ -372,6 +372,17 @@ if EXPERT
When disabling this, please check if malloc calls, maybe
should be replaced by calloc - if one expects zeroed memory.
+config SPL_SYS_MALLOC_CLEAR_ON_INIT
+ bool "Init with zeros the memory reserved for malloc (slow) in SPL"
+ depends on SPL
+ default SYS_MALLOC_CLEAR_ON_INIT
+ help
+ Same as SYS_MALLOC_CLEAR_ON_INIT, but for SPL. It's possible to
+ Enable it without SYS_MALLOC_CLEAR_ON_INIT. It's useful for boards
+ that must have particular memory regions zero'ed before first use.
+ If SYS_SPL_MALLOC_START is configured to be in such region, this
+ option should be enabled.
+
config SYS_MALLOC_DEFAULT_TO_INIT
bool "Default malloc to init while reserving the memory for it"
help
diff --git a/MAINTAINERS b/MAINTAINERS
index 17309e2..0a10a43 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -365,7 +365,6 @@ F: drivers/watchdog/orion_wdt.c
F: include/configs/mv-common.h
ARM MARVELL PCIE CONTROLLER DRIVERS
-M: Pali Rohár <pali@kernel.org>
M: Stefan Roese <sr@denx.de>
S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git
diff --git a/Makefile b/Makefile
index 033daf1..9be24c4 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
VERSION = 2023
PATCHLEVEL = 10
SUBLEVEL =
-EXTRAVERSION = -rc3
+EXTRAVERSION = -rc4
NAME =
# *DOCUMENTATION*
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 97c25b4..328e2dd 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -2101,7 +2101,7 @@ config SERIAL_TAG
config STATIC_MACH_TYPE
bool "Statically define the Machine ID number"
- default y if TARGET_DS109 || TARGET_NOKIA_RX51 || TARGET_DS414 || DEFAULT_DEVICE_TREE = "sun7i-a20-icnova-swac"
+ default y if TARGET_DS109 || TARGET_DS414 || DEFAULT_DEVICE_TREE = "sun7i-a20-icnova-swac"
help
When booting via ATAGs, enable this option if we know the correct
machine ID number to use at compile time. Some systems will be
@@ -2111,7 +2111,6 @@ config MACH_TYPE
int "Machine ID number"
depends on STATIC_MACH_TYPE
default 527 if TARGET_DS109
- default 1955 if TARGET_NOKIA_RX51
default 3036 if TARGET_DS414
default 4283 if DEFAULT_DEVICE_TREE = "sun7i-a20-icnova-swac"
help
diff --git a/arch/arm/mach-omap2/omap3/Kconfig b/arch/arm/mach-omap2/omap3/Kconfig
index 671e479..3e3e7bd 100644
--- a/arch/arm/mach-omap2/omap3/Kconfig
+++ b/arch/arm/mach-omap2/omap3/Kconfig
@@ -105,15 +105,6 @@ config TARGET_OMAP3_LOGIC
select OMAP3_GPIO_6
imply CMD_DM
-config TARGET_NOKIA_RX51
- bool "Nokia RX51"
- select POSITION_INDEPENDENT
- select SKIP_LOWLEVEL_INIT
- select SUPPORT_PASSING_ATAGS
- select CMDLINE_TAG
- select INITRD_TAG
- select REVISION_TAG
-
config TARGET_TAO3530
bool "TAO3530"
select OMAP3_GPIO_2
@@ -166,7 +157,6 @@ source "board/timll/devkit8000/Kconfig"
source "board/ti/omap3evm/Kconfig"
source "board/isee/igep00x0/Kconfig"
source "board/logicpd/omap3som/Kconfig"
-source "board/nokia/rx51/Kconfig"
source "board/lg/sniper/Kconfig"
endif
diff --git a/arch/riscv/cpu/jh7110/Kconfig b/arch/riscv/cpu/jh7110/Kconfig
index 8469ee7..e5549a0 100644
--- a/arch/riscv/cpu/jh7110/Kconfig
+++ b/arch/riscv/cpu/jh7110/Kconfig
@@ -28,3 +28,4 @@ config STARFIVE_JH7110
imply SPL_LOAD_FIT
imply SPL_OPENSBI
imply SPL_RISCV_ACLINT
+ imply SPL_SYS_MALLOC_CLEAR_ON_INIT
diff --git a/arch/riscv/dts/jh7110.dtsi b/arch/riscv/dts/jh7110.dtsi
index 081b833..ec237a4 100644
--- a/arch/riscv/dts/jh7110.dtsi
+++ b/arch/riscv/dts/jh7110.dtsi
@@ -163,6 +163,15 @@
};
};
+ timer {
+ compatible = "riscv,timer";
+ interrupts-extended = <&cpu0_intc 5>,
+ <&cpu1_intc 5>,
+ <&cpu2_intc 5>,
+ <&cpu3_intc 5>,
+ <&cpu4_intc 5>;
+ };
+
osc: oscillator {
compatible = "fixed-clock";
clock-output-names = "osc";
diff --git a/arch/riscv/include/asm/sbi.h b/arch/riscv/include/asm/sbi.h
index 009a268..bf4c9af 100644
--- a/arch/riscv/include/asm/sbi.h
+++ b/arch/riscv/include/asm/sbi.h
@@ -170,5 +170,6 @@ int sbi_get_mvendorid(long *mvendorid);
int sbi_get_marchid(long *marchid);
int sbi_get_mimpid(long *mimpid);
void sbi_srst_reset(unsigned long type, unsigned long reason);
+int sbi_dbcn_write_byte(unsigned char ch);
#endif
diff --git a/arch/riscv/lib/sbi.c b/arch/riscv/lib/sbi.c
index 8724e3a..55a3bc3 100644
--- a/arch/riscv/lib/sbi.c
+++ b/arch/riscv/lib/sbi.c
@@ -204,6 +204,22 @@ void sbi_srst_reset(unsigned long type, unsigned long reason)
0, 0, 0, 0);
}
+/**
+ * sbi_dbcn_write_byte() - write byte to debug console
+ *
+ * @ch: byte to be written
+ * Return: SBI error code (SBI_SUCCESS = 0 on success)
+ */
+int sbi_dbcn_write_byte(unsigned char ch)
+{
+ struct sbiret ret;
+
+ ret = sbi_ecall(SBI_EXT_DBCN,
+ SBI_EXT_DBCN_CONSOLE_WRITE_BYTE,
+ ch, 0, 0, 0, 0, 0);
+ return ret.error;
+}
+
#ifdef CONFIG_SBI_V01
/**
diff --git a/board/CZ.NIC/turris_mox/MAINTAINERS b/board/CZ.NIC/turris_mox/MAINTAINERS
index b29ce92..5f0551e 100644
--- a/board/CZ.NIC/turris_mox/MAINTAINERS
+++ b/board/CZ.NIC/turris_mox/MAINTAINERS
@@ -1,6 +1,5 @@
TURRIS MOX BOARD
M: Marek Behún <kabel@kernel.org>
-M: Pali Rohár <pali@kernel.org>
S: Maintained
F: arch/arm/dts/armada-3720-turris-mox*.dts*
F: board/CZ.NIC/turris_mox/
diff --git a/board/CZ.NIC/turris_omnia/MAINTAINERS b/board/CZ.NIC/turris_omnia/MAINTAINERS
index 8bff97cc..effce8a 100644
--- a/board/CZ.NIC/turris_omnia/MAINTAINERS
+++ b/board/CZ.NIC/turris_omnia/MAINTAINERS
@@ -1,6 +1,5 @@
TURRIS OMNIA BOARD
M: Marek Behún <kabel@kernel.org>
-M: Pali Rohár <pali@kernel.org>
S: Maintained
F: arch/arm/dts/armada-385-turris-omnia*.dts*
F: board/CZ.NIC/turris_atsha_otp.*
diff --git a/board/nokia/rx51/Kconfig b/board/nokia/rx51/Kconfig
deleted file mode 100644
index c884543..0000000
--- a/board/nokia/rx51/Kconfig
+++ /dev/null
@@ -1,48 +0,0 @@
-if TARGET_NOKIA_RX51
-
-config USB_DEVICE
- def_bool y
- help
- Legacy UDC device support
-
-config USB_TTY
- def_bool y
- help
- Legacy tty type of device available to talk to the UDC device
-
-config USBD_VENDORID
- hex
- default 0x0421
-
-config USBD_PRODUCTID_CDCACM
- hex
- default 0x01c8
-
-config USBD_PRODUCTID_GSERIAL
- hex
- default 0x01c8
-
-config USBD_MANUFACTURER
- string
- default "Nokia"
-
-config USBD_PRODUCT_NAME
- string
- default "N900 (U-Boot)"
-
-config NR_DRAM_BANKS
- default 2
-
-config SYS_BOARD
- default "rx51"
-
-config SYS_VENDOR
- default "nokia"
-
-config SYS_CONFIG_NAME
- default "nokia_rx51"
-
-config SYS_PROMPT
- default "Nokia RX-51 # "
-
-endif
diff --git a/board/nokia/rx51/MAINTAINERS b/board/nokia/rx51/MAINTAINERS
deleted file mode 100644
index 25f8b3c..0000000
--- a/board/nokia/rx51/MAINTAINERS
+++ /dev/null
@@ -1,8 +0,0 @@
-RX51 BOARD
-M: Pali Rohár <pali@kernel.org>
-S: Maintained
-F: board/nokia/rx51/
-F: include/configs/nokia_rx51.h
-F: configs/nokia_rx51_defconfig
-F: doc/board/nokia/rx51.rst
-F: test/nokia_rx51_test.sh
diff --git a/board/nokia/rx51/Makefile b/board/nokia/rx51/Makefile
deleted file mode 100644
index 842f9e6..0000000
--- a/board/nokia/rx51/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-
-obj-y := rx51.o
-obj-y += lowlevel_init.o
diff --git a/board/nokia/rx51/lowlevel_init.S b/board/nokia/rx51/lowlevel_init.S
deleted file mode 100644
index 44f32f1..0000000
--- a/board/nokia/rx51/lowlevel_init.S
+++ /dev/null
@@ -1,97 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2011-2012
- * Pali Rohár <pali@kernel.org>
- */
-
-#include <config.h>
-#include <linux/linkage.h>
-
-kernoffs: /* offset of kernel image from this address */
- .word . - CONFIG_TEXT_BASE - KERNEL_OFFSET
-
-kernaddr: /* address of kernel after copying */
- .word KERNEL_ADDRESS
-
-kernsize: /* maximal size of kernel image */
- .word KERNEL_MAXSIZE
-
-imagesize: /* maximal size of image */
- .word IMAGE_MAXSIZE
-
-ih_magic: /* IH_MAGIC in big endian from include/image.h */
- .word 0x56190527
-
-z_magic: /* LINUX_ARM_ZIMAGE_MAGIC */
- .word 0x016f2818
-
-/*
- * Routine: save_boot_params (called after reset from start.S)
- * Description: Copy attached kernel to address KERNEL_ADDRESS
- */
-
-ENTRY(save_boot_params)
-
-/*
- * Copy valid attached kernel to absolute address KERNEL_ADDRESS
- *
- * Nokia X-Loader is loading secondary image to address 0x80400000.
- * NOLO is loading boot image to random place, so it doesn't really
- * matter what is set in CONFIG_TEXT_BASE. We have to detect
- * KERNEL_OFFSET from the current execution address and copy it to
- * absolute address KERNEL_ADDRESS.
- *
- * Note that U-Boot has to be compiled with CONFIG_POSITION_INDEPENDENT
- * because it is loaded at random address and not to the fixed address
- * (CONFIG_TEXT_BASE).
- */
-
- /* r0 - start of kernel before */
- adr r0, kernoffs /* r0 - current address of kernoffs section */
- ldr r1, kernoffs /* r1 - offset of kernel image from kernoffs section */
- sub r0, r0, r1
-
- /* r3 - start of kernel after */
- ldr r3, kernaddr
-
- /* r2 - end of kernel after */
- ldr r1, kernsize
- add r2, r3, r1
-
- /* r1 - end of kernel before */
- add r1, r0, r1
-
- /* remove header in target kernel */
- mov r5, #0
- str r5, [r3] /* remove 4 bytes header of kernel uImage */
- str r5, [r3, #36] /* remove 4 bytes header of kernel zImage */
-
- /* check for valid kernel uImage */
- ldr r4, [r0] /* r4 - 4 bytes header of kernel */
- ldr r5, ih_magic /* r5 - IH_MAGIC */
- cmp r4, r5
- beq copy_kernel_loop
-
- /* check for valid kernel zImage */
- ldr r4, [r0, #36] /* r4 - 4 bytes header of kernel at offset 36 */
- ldr r5, z_magic /* r5 - LINUX_ARM_ZIMAGE_MAGIC */
- cmp r4, r5
- bne skip_copy /* skip if invalid image */
-
-copy_kernel_loop:
- ldmdb r1!, {r3 - r10}
- stmdb r2!, {r3 - r10}
- cmp r1, r0
- bhi copy_kernel_loop
-
- /* remove header in source kernel image */
- mov r5, #0
- str r5, [r0] /* remove 4 bytes header of kernel uImage */
- str r5, [r0, #36] /* remove 4 bytes header of kernel zImage */
-
-skip_copy:
-
- /* Returns */
- b save_boot_params_ret
-
-ENDPROC(save_boot_params)
diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c
deleted file mode 100644
index 238b963..0000000
--- a/board/nokia/rx51/rx51.c
+++ /dev/null
@@ -1,806 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2012
- * Ивайло Димитров <freemangordon@abv.bg>
- *
- * (C) Copyright 2011-2012
- * Pali Rohár <pali@kernel.org>
- *
- * (C) Copyright 2010
- * Alistair Buxton <a.j.buxton@gmail.com>
- *
- * Derived from Beagle Board and 3430 SDP code:
- * (C) Copyright 2004-2008
- * Texas Instruments, <www.ti.com>
- *
- * Author :
- * Sunil Kumar <sunilsaini05@gmail.com>
- * Shashi Ranjan <shashiranjanmca05@gmail.com>
- *
- * Richard Woodruff <r-woodruff2@ti.com>
- * Syed Mohammed Khasim <khasim@ti.com>
- */
-
-#include <common.h>
-#include <dm.h>
-#include <env.h>
-#include <init.h>
-#include <watchdog.h>
-#include <wdt.h>
-#include <malloc.h>
-#include <twl4030.h>
-#include <i2c.h>
-#include <video.h>
-#include <keyboard.h>
-#include <ns16550.h>
-#include <asm/global_data.h>
-#include <asm/io.h>
-#include <asm/setup.h>
-#include <asm/bitops.h>
-#include <asm/mach-types.h>
-#include <asm/omap_i2c.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/mmc_host_def.h>
-
-#include "tag_omap.h"
-
-/* Needed for ROM SMC call */
-struct emu_hal_params_rx51 {
- u32 num_params;
- u32 param1;
- u32 param2;
- u32 param3;
- u32 param4;
-};
-
-#define ONENAND_GPMC_CONFIG1_RX51 0xfb001202
-#define ONENAND_GPMC_CONFIG2_RX51 0x00111100
-#define ONENAND_GPMC_CONFIG3_RX51 0x00020200
-#define ONENAND_GPMC_CONFIG4_RX51 0x11001102
-#define ONENAND_GPMC_CONFIG5_RX51 0x03101616
-#define ONENAND_GPMC_CONFIG6_RX51 0x90060000
-
-DECLARE_GLOBAL_DATA_PTR;
-
-const omap3_sysinfo sysinfo = {
- DDR_STACKED,
- "Nokia RX-51",
- "OneNAND"
-};
-
-/* This structure contains default omap tags needed for booting Maemo 5 */
-static struct tag_omap omap[] = {
- OMAP_TAG_UART_CONFIG(0x04),
- OMAP_TAG_SERIAL_CONSOLE_CONFIG(0x03, 0x01C200),
- OMAP_TAG_LCD_CONFIG("acx565akm", "internal", 90, 0x18),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cam_focus", 0x44, 0x1, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cam_launch", 0x45, 0x1, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cam_shutter", 0x6e, 0x1, 0x0, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cmt_apeslpx", 0x46, 0x2, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cmt_bsi", 0x9d, 0x2, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cmt_en", 0x4a, 0x2, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cmt_rst", 0x4b, 0x6, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cmt_rst_rq", 0x49, 0x6, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("cmt_wddis", 0x0d, 0x2, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("headphone", 0xb1, 0x1, 0x1, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("kb_lock", 0x71, 0x1, 0x0, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("proximity", 0x59, 0x0, 0x0, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("sleep_ind", 0xa2, 0x2, 0x2, 0x0),
- OMAP_TAG_GPIO_SWITCH_CONFIG("slide", GPIO_SLIDE, 0x0, 0x0, 0x0),
- OMAP_TAG_WLAN_CX3110X_CONFIG(0x25, 0xff, 87, 42, -1),
- OMAP_TAG_PARTITION_CONFIG("bootloader", 128 * 1024, 0x00000000, 0x00000003),
- OMAP_TAG_PARTITION_CONFIG("config", 384 * 1024, 0x00020000, 0x00000000),
- OMAP_TAG_PARTITION_CONFIG("log", 256 * 1024, 0x00080000, 0x00000000),
- OMAP_TAG_PARTITION_CONFIG("kernel", 2 * 1024*1024, 0x000c0000, 0x00000000),
- OMAP_TAG_PARTITION_CONFIG("initfs", 2 * 1024*1024, 0x002c0000, 0x00000000),
- OMAP_TAG_PARTITION_CONFIG("rootfs", 257280 * 1024, 0x004c0000, 0x00000000),
- OMAP_TAG_BOOT_REASON_CONFIG("pwr_key"),
- OMAP_TAG_VERSION_STR_CONFIG("product", "RX-51"),
- OMAP_TAG_VERSION_STR_CONFIG("hw-build", "2101"),
- OMAP_TAG_VERSION_STR_CONFIG("nolo", "1.4.14"),
- OMAP_TAG_VERSION_STR_CONFIG("boot-mode", "normal"),
- { }
-};
-
-static char *boot_reason_ptr;
-static char *hw_build_ptr;
-static char *nolo_version_ptr;
-static char *boot_mode_ptr;
-static int serial_was_console_enabled;
-
-/*
- * Routine: init_omap_tags
- * Description: Initialize pointers to values in tag_omap
- */
-static void init_omap_tags(void)
-{
- char *component;
- char *version;
- int i = 0;
- while (omap[i].hdr.tag) {
- switch (omap[i].hdr.tag) {
- case OMAP_TAG_BOOT_REASON:
- boot_reason_ptr = omap[i].u.boot_reason.reason_str;
- break;
- case OMAP_TAG_VERSION_STR:
- component = omap[i].u.version.component;
- version = omap[i].u.version.version;
- if (strcmp(component, "hw-build") == 0)
- hw_build_ptr = version;
- else if (strcmp(component, "nolo") == 0)
- nolo_version_ptr = version;
- else if (strcmp(component, "boot-mode") == 0)
- boot_mode_ptr = version;
- break;
- default:
- break;
- }
- i++;
- }
-}
-
-static void reuse_omap_atags(struct tag_omap *t)
-{
- char *component;
- char *version;
- while (t->hdr.tag) {
- switch (t->hdr.tag) {
- case OMAP_TAG_BOOT_REASON:
- memset(boot_reason_ptr, 0, 12);
- strcpy(boot_reason_ptr, t->u.boot_reason.reason_str);
- break;
- case OMAP_TAG_VERSION_STR:
- component = t->u.version.component;
- version = t->u.version.version;
- if (strcmp(component, "hw-build") == 0) {
- memset(hw_build_ptr, 0, 12);
- strcpy(hw_build_ptr, version);
- } else if (strcmp(component, "nolo") == 0) {
- memset(nolo_version_ptr, 0, 12);
- strcpy(nolo_version_ptr, version);
- } else if (strcmp(component, "boot-mode") == 0) {
- memset(boot_mode_ptr, 0, 12);
- strcpy(boot_mode_ptr, version);
- }
- break;
- case OMAP_TAG_UART:
- if (t->u.uart.enabled_uarts)
- serial_was_console_enabled = 1;
- break;
- case OMAP_TAG_SERIAL_CONSOLE:
- serial_was_console_enabled = 1;
- break;
- default:
- break;
- }
- t = tag_omap_next(t);
- }
-}
-
-/*
- * Routine: reuse_atags
- * Description: Reuse atags from previous bootloader.
- * Reuse only only HW build, boot reason, boot mode and nolo
- */
-static void reuse_atags(void)
-{
- struct tag *t = (struct tag *)gd->bd->bi_boot_params;
-
- /* First tag must be ATAG_CORE */
- if (t->hdr.tag != ATAG_CORE)
- return;
-
- if (!boot_reason_ptr || !hw_build_ptr)
- return;
-
- /* Last tag must be ATAG_NONE */
- while (t->hdr.tag != ATAG_NONE) {
- switch (t->hdr.tag) {
- case ATAG_REVISION:
- memset(hw_build_ptr, 0, 12);
- sprintf(hw_build_ptr, "%x", t->u.revision.rev);
- break;
- case ATAG_BOARD:
- reuse_omap_atags((struct tag_omap *)&t->u);
- break;
- default:
- break;
- }
- t = tag_next(t);
- }
-}
-
-/*
- * Routine: board_init
- * Description: Early hardware init.
- */
-int board_init(void)
-{
-#if defined(CONFIG_CMD_ONENAND)
- const u32 gpmc_regs_onenandrx51[GPMC_MAX_REG] = {
- ONENAND_GPMC_CONFIG1_RX51,
- ONENAND_GPMC_CONFIG2_RX51,
- ONENAND_GPMC_CONFIG3_RX51,
- ONENAND_GPMC_CONFIG4_RX51,
- ONENAND_GPMC_CONFIG5_RX51,
- ONENAND_GPMC_CONFIG6_RX51,
- 0
- };
-#endif
- /* in SRAM or SDRAM, finish GPMC */
- gpmc_init();
-#if defined(CONFIG_CMD_ONENAND)
- enable_gpmc_cs_config(gpmc_regs_onenandrx51, &gpmc_cfg->cs[0],
- CFG_SYS_ONENAND_BASE, GPMC_SIZE_256M);
-#endif
- /* Enable the clks & power */
- per_clocks_enable();
- /* boot param addr */
- gd->bd->bi_boot_params = OMAP34XX_SDRC_CS0 + 0x100;
- return 0;
-}
-
-#ifdef CONFIG_REVISION_TAG
-/*
- * Routine: get_board_revision
- * Description: Return board revision.
- */
-u32 get_board_rev(void)
-{
- return simple_strtol(hw_build_ptr, NULL, 16);
-}
-#endif
-
-/*
- * Routine: setup_board_tags
- * Description: Append board specific boot tags.
- */
-void setup_board_tags(struct tag **in_params)
-{
- int setup_console_atag;
- char *setup_boot_reason_atag;
- char *setup_boot_mode_atag;
- char *str;
- int i;
- int size;
- int total_size;
- struct tag *params;
- struct tag_omap *t;
-
- params = (struct tag *)gd->bd->bi_boot_params;
-
- params->u.core.flags = 0x0;
- params->u.core.pagesize = 0x1000;
- params->u.core.rootdev = 0x0;
-
- /* append omap atag only if env setup_omap_atag is set to 1 */
- str = env_get("setup_omap_atag");
- if (!str || str[0] != '1')
- return;
-
- str = env_get("setup_console_atag");
- if (str && str[0]) {
- if (str[0] == '1')
- setup_console_atag = 1;
- else
- setup_console_atag = 0;
- } else {
- if (serial_was_console_enabled)
- setup_console_atag = 1;
- else
- setup_console_atag = 0;
- }
-
- setup_boot_reason_atag = env_get("setup_boot_reason_atag");
- setup_boot_mode_atag = env_get("setup_boot_mode_atag");
-
- params = *in_params;
- t = (struct tag_omap *)&params->u;
- total_size = sizeof(struct tag_header);
-
- for (i = 0; omap[i].hdr.tag; i++) {
-
- /* skip serial console tag */
- if (!setup_console_atag &&
- omap[i].hdr.tag == OMAP_TAG_SERIAL_CONSOLE)
- continue;
-
- size = omap[i].hdr.size + sizeof(struct tag_omap_header);
- memcpy(t, &omap[i], size);
-
- /* set uart tag to 0 - disable serial console */
- if (!setup_console_atag && omap[i].hdr.tag == OMAP_TAG_UART)
- t->u.uart.enabled_uarts = 0;
-
- /* change boot reason */
- if (setup_boot_reason_atag &&
- omap[i].hdr.tag == OMAP_TAG_BOOT_REASON) {
- memset(t->u.boot_reason.reason_str, 0, 12);
- strcpy(t->u.boot_reason.reason_str,
- setup_boot_reason_atag);
- }
-
- /* change boot mode */
- if (setup_boot_mode_atag &&
- omap[i].hdr.tag == OMAP_TAG_VERSION_STR &&
- strcmp(omap[i].u.version.component, "boot-mode") == 0) {
- memset(t->u.version.version, 0, 12);
- strcpy(t->u.version.version, setup_boot_mode_atag);
- }
-
- total_size += size;
- t = tag_omap_next(t);
-
- }
-
- params->hdr.tag = ATAG_BOARD;
- params->hdr.size = total_size >> 2;
- params = tag_next(params);
-
- *in_params = params;
-}
-
-static int rx51_video_probe(struct udevice *dev)
-{
- struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
- struct video_priv *uc_priv = dev_get_uclass_priv(dev);
-
- uc_plat->base = 0x8f9c0000;
- uc_plat->size = 800 * 480 * sizeof(u16);
- uc_priv->xsize = 800;
- uc_priv->ysize = 480;
- uc_priv->bpix = VIDEO_BPP16;
-
- video_set_flush_dcache(dev, true);
-
- return 0;
-}
-
-U_BOOT_DRIVER(rx51_video) = {
- .name = "rx51_video",
- .id = UCLASS_VIDEO,
- .probe = rx51_video_probe,
-};
-
-/*
- * Routine: twl4030_regulator_set_mode
- * Description: Set twl4030 regulator mode over i2c powerbus.
- */
-static void twl4030_regulator_set_mode(u8 id, u8 mode)
-{
- u16 msg = MSG_SINGULAR(DEV_GRP_P1, id, mode);
- twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER,
- TWL4030_PM_MASTER_PB_WORD_MSB, msg >> 8);
- twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER,
- TWL4030_PM_MASTER_PB_WORD_LSB, msg & 0xff);
-}
-
-static void omap3_emu_romcode_call(u32 service_id, u32 *parameters)
-{
- u32 i, num_params = *parameters;
- u32 *sram_scratch_space = (u32 *)OMAP3_PUBLIC_SRAM_SCRATCH_AREA;
-
- /*
- * copy the parameters to an un-cached area to avoid coherency
- * issues
- */
- for (i = 0; i < num_params; i++) {
- __raw_writel(*parameters, sram_scratch_space);
- parameters++;
- sram_scratch_space++;
- }
-
- /* Now make the PPA call */
- do_omap3_emu_romcode_call(service_id, OMAP3_PUBLIC_SRAM_SCRATCH_AREA);
-}
-
-void omap3_set_aux_cr_secure(u32 acr)
-{
- struct emu_hal_params_rx51 emu_romcode_params = { 0, };
-
- emu_romcode_params.num_params = 2;
- emu_romcode_params.param1 = acr;
-
- omap3_emu_romcode_call(OMAP3_EMU_HAL_API_WRITE_ACR,
- (u32 *)&emu_romcode_params);
-}
-
-/*
- * Routine: omap3_update_aux_cr_secure_rx51
- * Description: Modify the contents Auxiliary Control Register.
- * Parameters:
- * set_bits - bits to set in ACR
- * clr_bits - bits to clear in ACR
- */
-static void omap3_update_aux_cr_secure_rx51(u32 set_bits, u32 clear_bits)
-{
- u32 acr;
-
- /* Read ACR */
- asm volatile ("mrc p15, 0, %0, c1, c0, 1" : "=r" (acr));
- acr &= ~clear_bits;
- acr |= set_bits;
- omap3_set_aux_cr_secure(acr);
-}
-
-/*
- * Routine: misc_init_r
- * Description: Configure board specific parts.
- */
-int misc_init_r(void)
-{
- struct udevice *dev;
- char buf[12];
- u8 state;
-
- /* disable lp5523 led */
- if (i2c_get_chip_for_busnum(1, 0x32, 1, &dev) == 0)
- dm_i2c_reg_write(dev, 0x00, 0x00);
-
- /* initialize twl4030 power managment */
- twl4030_power_init();
- twl4030_power_mmc_init(0);
- twl4030_power_mmc_init(1);
-
- /* set VSIM to 1.8V */
- twl4030_pmrecv_vsel_cfg(TWL4030_PM_RECEIVER_VSIM_DEDICATED,
- TWL4030_PM_RECEIVER_VSIM_VSEL_18,
- TWL4030_PM_RECEIVER_VSIM_DEV_GRP,
- TWL4030_PM_RECEIVER_DEV_GRP_P1);
-
- /* store I2C access state */
- twl4030_i2c_read_u8(TWL4030_CHIP_PM_MASTER, TWL4030_PM_MASTER_PB_CFG,
- &state);
-
- /* enable I2C access to powerbus (needed for twl4030 regulator) */
- twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, TWL4030_PM_MASTER_PB_CFG,
- 0x02);
-
- /* set VAUX3, VSIM and VMMC1 state to active - enable eMMC memory */
- twl4030_regulator_set_mode(RES_VAUX3, RES_STATE_ACTIVE);
- twl4030_regulator_set_mode(RES_VSIM, RES_STATE_ACTIVE);
- twl4030_regulator_set_mode(RES_VMMC1, RES_STATE_ACTIVE);
-
- /* restore I2C access state */
- twl4030_i2c_write_u8(TWL4030_CHIP_PM_MASTER, TWL4030_PM_MASTER_PB_CFG,
- state);
-
- /* set env variable attkernaddr for relocated kernel */
- sprintf(buf, "%#x", KERNEL_ADDRESS);
- env_set("attkernaddr", buf);
-
- /* initialize omap tags */
- init_omap_tags();
-
- /* reuse atags from previous bootloader */
- reuse_atags();
-
- omap_die_id_display();
- print_cpuinfo();
-
- /*
- * Cortex-A8(r1p0..r1p2) errata 430973 workaround
- * Set IBE bit in Auxiliary Control Register
- *
- * Call this routine only on real secure device
- * Qemu does not implement secure PPA and crash
- */
- if (get_device_type() == HS_DEVICE)
- omap3_update_aux_cr_secure_rx51(1 << 6, 0);
-
- return 0;
-}
-
-static unsigned long int twl_wd_time; /* last time of watchdog reset */
-static unsigned long int twl_i2c_lock;
-
-/*
- * Routine: rx51_watchdog_reset
- * Description: Reset timeout of twl4030 watchdog.
- */
-static int rx51_watchdog_reset(struct udevice *dev)
-{
- u8 timeout = 0;
-
- /* do not reset watchdog too often - max every 4s */
- if (get_timer(twl_wd_time) < 4 * CONFIG_SYS_HZ)
- return 0;
-
- /* localy lock twl4030 i2c bus */
- if (test_and_set_bit(0, &twl_i2c_lock))
- return 0;
-
- /* read actual watchdog timeout */
- twl4030_i2c_read_u8(TWL4030_CHIP_PM_RECEIVER,
- TWL4030_PM_RECEIVER_WATCHDOG_CFG, &timeout);
-
- /* timeout 0 means watchdog is disabled */
- /* reset watchdog timeout to 31s (maximum) */
- if (timeout != 0)
- twl4030_i2c_write_u8(TWL4030_CHIP_PM_RECEIVER,
- TWL4030_PM_RECEIVER_WATCHDOG_CFG, 31);
-
- /* store last watchdog reset time */
- twl_wd_time = get_timer(0);
-
- /* localy unlock twl4030 i2c bus */
- test_and_clear_bit(0, &twl_i2c_lock);
-
- return 0;
-}
-
-static int rx51_watchdog_start(struct udevice *dev, u64 timeout_ms, ulong flags)
-{
- return 0;
-}
-
-static int rx51_watchdog_probe(struct udevice *dev)
-{
- return 0;
-}
-
-static const struct wdt_ops rx51_watchdog_ops = {
- .start = rx51_watchdog_start,
- .reset = rx51_watchdog_reset,
-};
-
-U_BOOT_DRIVER(rx51_watchdog) = {
- .name = "rx51_watchdog",
- .id = UCLASS_WDT,
- .ops = &rx51_watchdog_ops,
- .probe = rx51_watchdog_probe,
-};
-
-/*
- * TWL4030 keypad handler for cfb_console
- */
-
-static const char keymap[] = {
- /* normal */
- 'q', 'o', 'p', ',', '\b', 0, 'a', 's',
- 'w', 'd', 'f', 'g', 'h', 'j', 'k', 'l',
- 'e', '.', 0, '\r', 0, 'z', 'x', 'c',
- 'r', 'v', 'b', 'n', 'm', ' ', 0, 0,
- 't', 0, 0, 0, 0, 0, 0, 0,
- 'y', 0, 0, 0, 0, 0, 0, 0,
- 'u', 0, 0, 0, 0, 0, 0, 0,
- 'i', 5, 6, 0, 0, 0, 0, 0,
- /* fn */
- '1', '9', '0', '=', '\b', 0, '*', '+',
- '2', '#', '-', '_', '(', ')', '&', '!',
- '3', '?', '^', '\r', 0, 156, '$', 238,
- '4', '/', '\\', '"', '\'', '@', 0, '<',
- '5', '|', '>', 0, 0, 0, 0, 0,
- '6', 0, 0, 0, 0, 0, 0, 0,
- '7', 0, 0, 0, 0, 0, 0, 0,
- '8', 16, 17, 0, 0, 0, 0, 0,
-};
-
-static u8 keys[8];
-static u8 old_keys[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-#define KEYBUF_SIZE 32
-static u8 keybuf[KEYBUF_SIZE];
-static u8 keybuf_head;
-static u8 keybuf_tail;
-
-/*
- * Routine: rx51_kp_start
- * Description: Initialize HW keyboard.
- */
-static int rx51_kp_start(struct udevice *dev)
-{
- int ret = 0;
- u8 ctrl;
- ret = twl4030_i2c_read_u8(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_KEYP_CTRL_REG, &ctrl);
-
- if (ret)
- return ret;
-
- /* turn on keyboard and use hardware scanning */
- ctrl |= TWL4030_KEYPAD_CTRL_KBD_ON;
- ctrl |= TWL4030_KEYPAD_CTRL_SOFT_NRST;
- ctrl |= TWL4030_KEYPAD_CTRL_SOFTMODEN;
- ret |= twl4030_i2c_write_u8(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_KEYP_CTRL_REG, ctrl);
- /* enable key event status */
- ret |= twl4030_i2c_write_u8(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_KEYP_IMR1, 0xfe);
- /* enable interrupt generation on rising and falling */
- /* this is a workaround for qemu twl4030 emulation */
- ret |= twl4030_i2c_write_u8(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_KEYP_EDR, 0x57);
- /* enable ISR clear on read */
- ret |= twl4030_i2c_write_u8(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_KEYP_SIH_CTRL, 0x05);
- return 0;
-}
-
-static void rx51_kp_fill(u8 k, u8 mods)
-{
- /* check if some cursor key without meta fn key was pressed */
- if (!(mods & 2) && (k == 18 || k == 31 || k == 33 || k == 34)) {
- keybuf[keybuf_tail++] = '\e';
- keybuf_tail %= KEYBUF_SIZE;
- keybuf[keybuf_tail++] = '[';
- keybuf_tail %= KEYBUF_SIZE;
- if (k == 18) /* up */
- keybuf[keybuf_tail++] = 'A';
- else if (k == 31) /* left */
- keybuf[keybuf_tail++] = 'D';
- else if (k == 33) /* down */
- keybuf[keybuf_tail++] = 'B';
- else if (k == 34) /* right */
- keybuf[keybuf_tail++] = 'C';
- keybuf_tail %= KEYBUF_SIZE;
- return;
- }
-
- if (mods & 2) { /* fn meta key was pressed */
- k = keymap[k+64];
- } else {
- k = keymap[k];
- if (mods & 1) { /* ctrl key was pressed */
- if (k >= 'a' && k <= 'z')
- k -= 'a' - 1;
- }
- if (mods & 4) { /* shift key was pressed */
- if (k >= 'a' && k <= 'z')
- k += 'A' - 'a';
- else if (k == '.')
- k = ':';
- else if (k == ',')
- k = ';';
- }
- }
- keybuf[keybuf_tail++] = k;
- keybuf_tail %= KEYBUF_SIZE;
-}
-
-/*
- * Routine: rx51_kp_tstc
- * Description: Test if key was pressed (from buffer).
- */
-static int rx51_kp_tstc(struct udevice *dev)
-{
- u8 c, r, dk, i;
- u8 intr;
- u8 mods;
-
- /* localy lock twl4030 i2c bus */
- if (test_and_set_bit(0, &twl_i2c_lock))
- return 0;
-
- /* twl4030 remembers up to 2 events */
- for (i = 0; i < 2; i++) {
-
- /* check interrupt register for events */
- twl4030_i2c_read_u8(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_KEYP_ISR1 + (2 * i), &intr);
-
- /* no event */
- if (!(intr&1))
- continue;
-
- /* read the key state */
- twl4030_i2c_read(TWL4030_CHIP_KEYPAD,
- TWL4030_KEYPAD_FULL_CODE_7_0, keys, 8);
-
- /* cut out modifier keys from the keystate */
- mods = keys[4] >> 4;
- keys[4] &= 0x0f;
-
- /* space key is indicated by two different bits */
- keys[3] |= (keys[3] & (1 << 6)) >> 1;
- keys[3] &= ~(1 << 6);
-
- for (c = 0; c < 8; c++) {
-
- /* get newly pressed keys only */
- dk = ((keys[c] ^ old_keys[c])&keys[c]);
- old_keys[c] = keys[c];
-
- /* fill the keybuf */
- for (r = 0; r < 8; r++) {
- if (dk&1)
- rx51_kp_fill((c*8)+r, mods);
- dk = dk >> 1;
- }
-
- }
-
- }
-
- /* localy unlock twl4030 i2c bus */
- test_and_clear_bit(0, &twl_i2c_lock);
-
- return (KEYBUF_SIZE + keybuf_tail - keybuf_head)%KEYBUF_SIZE;
-}
-
-/*
- * Routine: rx51_kp_getc
- * Description: Get last pressed key (from buffer).
- */
-static int rx51_kp_getc(struct udevice *dev)
-{
- keybuf_head %= KEYBUF_SIZE;
- while (!rx51_kp_tstc(dev))
- schedule();
- return keybuf[keybuf_head++];
-}
-
-static int rx51_kp_probe(struct udevice *dev)
-{
- struct keyboard_priv *uc_priv = dev_get_uclass_priv(dev);
- struct stdio_dev *sdev = &uc_priv->sdev;
-
- strcpy(sdev->name, "keyboard");
- return input_stdio_register(sdev);
-}
-
-static const struct keyboard_ops rx51_kp_ops = {
- .start = rx51_kp_start,
- .tstc = rx51_kp_tstc,
- .getc = rx51_kp_getc,
-};
-
-U_BOOT_DRIVER(rx51_kp) = {
- .name = "rx51_kp",
- .id = UCLASS_KEYBOARD,
- .probe = rx51_kp_probe,
- .ops = &rx51_kp_ops,
-};
-
-static const struct mmc_config rx51_mmc_cfg = {
- .host_caps = MMC_MODE_4BIT | MMC_MODE_HS_52MHz | MMC_MODE_HS,
- .f_min = 400000,
- .f_max = 52000000,
- .b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT,
- .voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195,
-};
-
-static const struct omap_hsmmc_plat rx51_mmc[] = {
- { rx51_mmc_cfg, (struct hsmmc *)OMAP_HSMMC1_BASE },
- { rx51_mmc_cfg, (struct hsmmc *)OMAP_HSMMC2_BASE },
-};
-
-U_BOOT_DRVINFOS(rx51_mmc) = {
- { "omap_hsmmc", &rx51_mmc[0] },
- { "omap_hsmmc", &rx51_mmc[1] },
-};
-
-static const struct omap_i2c_plat rx51_i2c[] = {
- { I2C_BASE1, 100000, OMAP_I2C_REV_V1 },
- { I2C_BASE2, 100000, OMAP_I2C_REV_V1 },
- { I2C_BASE3, 100000, OMAP_I2C_REV_V1 },
-};
-
-U_BOOT_DRVINFOS(rx51_i2c) = {
- { "i2c_omap", &rx51_i2c[0] },
- { "i2c_omap", &rx51_i2c[1] },
- { "i2c_omap", &rx51_i2c[2] },
-};
-
-U_BOOT_DRVINFOS(rx51_watchdog) = {
- { "rx51_watchdog" },
-};
-
-U_BOOT_DRVINFOS(rx51_video) = {
- { "rx51_video" },
-};
-
-U_BOOT_DRVINFOS(rx51_kp) = {
- { "rx51_kp" },
-};
-
-static const struct ns16550_plat rx51_serial = {
- .base = CFG_SYS_NS16550_COM3,
- .reg_shift = 2,
- .clock = CFG_SYS_NS16550_CLK,
- .fcr = UART_FCR_DEFVAL,
-};
-
-U_BOOT_DRVINFOS(rx51_uart) = {
- { "omap_serial", &rx51_serial },
-};
diff --git a/board/nokia/rx51/tag_omap.h b/board/nokia/rx51/tag_omap.h
deleted file mode 100644
index b99d6b7..0000000
--- a/board/nokia/rx51/tag_omap.h
+++ /dev/null
@@ -1,294 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2011-2012
- * Pali Rohár <pali@kernel.org>
- *
- * (C) Copyright 2011
- * marcel@mesa.nl, Mesa Consulting B.V.
- *
- * (C) Copyright 2004-2005
- * Nokia Corporation
- */
-
-
-/*
- * Code copied from maemo kernel 2.6.28 file
- * arch/arm/plat-omap/include/mach/board.h
- *
- * Information structures for board-specific data
- *
- * Copyright (C) 2004 Nokia Corporation
- * Written by Juha Yrjölä <juha.yrjola@nokia.com>
- */
-
-/* Different peripheral ids */
-#define OMAP_TAG_CLOCK 0x4f01
-#define OMAP_TAG_SERIAL_CONSOLE 0x4f03
-#define OMAP_TAG_USB 0x4f04
-#define OMAP_TAG_LCD 0x4f05
-#define OMAP_TAG_GPIO_SWITCH 0x4f06
-#define OMAP_TAG_UART 0x4f07
-#define OMAP_TAG_FBMEM 0x4f08
-#define OMAP_TAG_STI_CONSOLE 0x4f09
-#define OMAP_TAG_CAMERA_SENSOR 0x4f0a
-#define OMAP_TAG_PARTITION 0x4f0b
-#define OMAP_TAG_TEA5761 0x4f10
-#define OMAP_TAG_TMP105 0x4f11
-
-#define OMAP_TAG_BOOT_REASON 0x4f80
-#define OMAP_TAG_FLASH_PART_STR 0x4f81
-#define OMAP_TAG_VERSION_STR 0x4f82
-
-#define OMAP_TAG_NOKIA_BT 0x4e01
-#define OMAP_TAG_WLAN_CX3110X 0x4e02
-#define OMAP_TAG_CBUS 0x4e03
-#define OMAP_TAG_EM_ASIC_BB5 0x4e04
-
-
-struct omap_clock_config {
- /* 0 for 12 MHz, 1 for 13 MHz and 2 for 19.2 MHz */
- u8 system_clock_type;
-};
-
-struct omap_serial_console_config {
- u8 console_uart;
- u32 console_speed;
-};
-
-struct omap_sti_console_config {
- unsigned enable:1;
- u8 channel;
-};
-
-struct omap_usb_config {
- /* Configure drivers according to the connectors on your board:
- * - "A" connector (rectagular)
- * ... for host/OHCI use, set "register_host".
- * - "B" connector (squarish) or "Mini-B"
- * ... for device/gadget use, set "register_dev".
- * - "Mini-AB" connector (very similar to Mini-B)
- * ... for OTG use as device OR host, initialize "otg"
- */
- unsigned register_host:1;
- unsigned register_dev:1;
- u8 otg; /* port number, 1-based: usb1 == 2 */
-
- u8 hmc_mode;
-
- /* implicitly true if otg: host supports remote wakeup? */
- u8 rwc;
-
- /* signaling pins used to talk to transceiver on usbN:
- * 0 == usbN unused
- * 2 == usb0-only, using internal transceiver
- * 3 == 3 wire bidirectional
- * 4 == 4 wire bidirectional
- * 6 == 6 wire unidirectional (or TLL)
- */
- u8 pins[3];
-};
-
-struct omap_lcd_config {
- char panel_name[16];
- char ctrl_name[16];
- s16 nreset_gpio;
- u8 data_lines;
-};
-
-struct omap_fbmem_config {
- u32 start;
- u32 size;
-};
-
-struct omap_gpio_switch_config {
- char name[12];
- u16 gpio;
- u8 flags:4;
- u8 type:4;
- unsigned int key_code:24; /* Linux key code */
-};
-
-struct omap_uart_config {
- /* Bit field of UARTs present; bit 0 --> UART1 */
- unsigned int enabled_uarts;
-};
-
-struct omap_tea5761_config {
- u16 enable_gpio;
-};
-
-struct omap_partition_config {
- char name[16];
- unsigned int size;
- unsigned int offset;
- /* same as in include/linux/mtd/partitions.h */
- unsigned int mask_flags;
-};
-
-struct omap_flash_part_str_config {
- char part_table[0];
-};
-
-struct omap_boot_reason_config {
- char reason_str[12];
-};
-
-struct omap_version_config {
- char component[12];
- char version[12];
-};
-
-/*
- * Code copied from maemo kernel 2.6.28 file
- * arch/arm/plat-omap/include/mach/board-nokia.h
- *
- * Information structures for Nokia-specific board config data
- *
- * Copyright (C) 2005 Nokia Corporation
- */
-
-struct omap_bluetooth_config {
- u8 chip_type;
- u8 bt_wakeup_gpio;
- u8 host_wakeup_gpio;
- u8 reset_gpio;
- u8 bt_uart;
- u8 bd_addr[6];
- u8 bt_sysclk;
-};
-
-struct omap_wlan_cx3110x_config {
- u8 chip_type;
- u8 reserverd;
- s16 power_gpio;
- s16 irq_gpio;
- s16 spi_cs_gpio;
-};
-
-struct omap_cbus_config {
- s16 clk_gpio;
- s16 dat_gpio;
- s16 sel_gpio;
-};
-
-struct omap_em_asic_bb5_config {
- s16 retu_irq_gpio;
- s16 tahvo_irq_gpio;
-};
-
-/*
- * omap_tag handling
- *
- * processing omap tag structures
- *
- * Copyright (C) 2011 marcel@mesa.nl, Mesa Consulting B.V.
- * Copyright (C) 2012 Pali Rohár <pali@kernel.org>
- */
-
-/* TI OMAP specific information */
-#define ATAG_BOARD 0x414f4d50
-
-struct tag_omap_header {
- u16 tag;
- u16 size;
-};
-
-struct tag_omap {
- struct tag_omap_header hdr;
- union {
- struct omap_clock_config clock;
- struct omap_serial_console_config serial_console;
- struct omap_sti_console_config sti_console;
- struct omap_usb_config usb;
- struct omap_lcd_config lcd;
- struct omap_fbmem_config fbmem;
- struct omap_gpio_switch_config gpio_switch;
- struct omap_uart_config uart;
- struct omap_tea5761_config tea5761;
- struct omap_partition_config partition;
- struct omap_flash_part_str_config flash_part_str;
- struct omap_boot_reason_config boot_reason;
- struct omap_version_config version;
- struct omap_bluetooth_config bluetooth;
- struct omap_wlan_cx3110x_config wlan_cx3110x;
- struct omap_cbus_config cbus;
- struct omap_em_asic_bb5_config em_asic_bb5;
- } u;
-};
-
-#define tag_omap_next(t) ((struct tag_omap *)((u8 *)(t) + \
- (t)->hdr.size + sizeof(struct tag_omap_header)))
-
-#define OMAP_TAG_HEADER_CONFIG(config, type) \
- .hdr.tag = config, \
- .hdr.size = sizeof(struct type)
-
-#define OMAP_TAG_UART_CONFIG(p1) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_UART, omap_uart_config), \
- .u.uart.enabled_uarts = p1, \
- }
-
-#define OMAP_TAG_SERIAL_CONSOLE_CONFIG(p1, p2) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_SERIAL_CONSOLE, \
- omap_serial_console_config), \
- .u.serial_console.console_uart = p1, \
- .u.serial_console.console_speed = p2, \
- }
-
-#define OMAP_TAG_LCD_CONFIG(p1, p2, p3, p4) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_LCD, omap_lcd_config), \
- .u.lcd.panel_name = p1, \
- .u.lcd.ctrl_name = p2, \
- .u.lcd.nreset_gpio = p3, \
- .u.lcd.data_lines = p4, \
- }
-
-#define OMAP_TAG_GPIO_SWITCH_CONFIG(p1, p2, p3, p4, p5) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_GPIO_SWITCH, \
- omap_gpio_switch_config), \
- .u.gpio_switch.name = p1, \
- .u.gpio_switch.gpio = p2, \
- .u.gpio_switch.flags = p3, \
- .u.gpio_switch.type = p4, \
- .u.gpio_switch.key_code = p5, \
- }
-
-#define OMAP_TAG_WLAN_CX3110X_CONFIG(p1, p2, p3, p4, p5) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_WLAN_CX3110X, \
- omap_wlan_cx3110x_config), \
- .u.wlan_cx3110x.chip_type = p1, \
- .u.wlan_cx3110x.reserverd = p2, \
- .u.wlan_cx3110x.power_gpio = p3, \
- .u.wlan_cx3110x.irq_gpio = p4, \
- .u.wlan_cx3110x.spi_cs_gpio = p5, \
- }
-
-#define OMAP_TAG_PARTITION_CONFIG(p1, p2, p3, p4) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_PARTITION, \
- omap_partition_config), \
- .u.partition.name = p1, \
- .u.partition.size = p2, \
- .u.partition.offset = p3, \
- .u.partition.mask_flags = p4, \
- }
-
-#define OMAP_TAG_BOOT_REASON_CONFIG(p1) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_BOOT_REASON, \
- omap_boot_reason_config), \
- .u.boot_reason.reason_str = p1, \
- }
-
-#define OMAP_TAG_VERSION_STR_CONFIG(p1, p2) \
- { \
- OMAP_TAG_HEADER_CONFIG(OMAP_TAG_VERSION_STR, \
- omap_version_config), \
- .u.version.component = p1, \
- .u.version.version = p2, \
- }
diff --git a/board/raspberrypi/rpi/rpi.env b/board/raspberrypi/rpi/rpi.env
new file mode 100644
index 0000000..3022828
--- /dev/null
+++ b/board/raspberrypi/rpi/rpi.env
@@ -0,0 +1,77 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+
+/* environment for Raspberry Pi boards */
+
+dhcpuboot=usb start; dhcp u-boot.uimg; bootm
+
+/* Environment */
+stdin=serial,usbkbd
+stdout=serial,vidconsole
+stderr=serial,vidconsole
+
+/* DFU over USB/UDC */
+#ifdef CONFIG_CMD_DFU
+dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;
+ config.txt fat 0 1;
+#ifdef CONFIG_ARM64
+dfu_alt_info+=Image fat 0 1
+#else
+dfu_alt_info+=zImage fat 0 1
+#endif
+#endif /* CONFIG_CMD_DFU */
+
+/*
+ * Memory layout for where various images get loaded by boot scripts:
+ *
+ * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this.
+ *
+ * Older versions of the boot firmware place the firmware-loaded DTB at 0x100,
+ * newer versions place it in high memory. So prevent U-Boot from doing its own
+ * DTB + initrd relocation so that we won't accidentally relocate the initrd
+ * over the firmware-loaded DTB and generally try to lay out things starting
+ * from the bottom of RAM.
+ *
+ * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM,
+ * it must be within the first 128M of RAM in order for the kernel's
+ * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed
+ * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The
+ * decompressor also likes to relocate itself to right past the end of the
+ * decompressed kernel, so in total the sum of the compressed and
+ * decompressed kernel needs to be reserved.
+ *
+ * For Aarch64, the kernel image is uncompressed and must be loaded at
+ * text_offset bytes (specified in the header of the Image) into a 2MB
+ * boundary. The 'booti' command relocates the image if necessary. Linux uses
+ * a default text_offset of 0x80000. In summary, loading at 0x80000
+ * satisfies all these constraints and reserving memory up to 0x02400000
+ * permits fairly large (roughly 36M) kernels.
+ *
+ * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
+ * conflict with something else. Reserving 1M for each of them at
+ * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
+ *
+ * On ARM, both the DTB and any possible initrd must be loaded such that they
+ * fit inside the lowmem mapping in Linux. In practice, this usually means not
+ * more than ~700M away from the start of the kernel image but this number can
+ * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
+ * parameter given to the kernel. So reserving memory from low to high
+ * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
+ * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
+ * Even with the smallest possible CPU-GPU memory split of the CPU getting
+ * only 64M, the remaining 25M starting at 0x02700000 should allow quite
+ * large initrds before they start colliding with U-Boot.
+ */
+#ifdef CONFIG_ARM64
+fdt_high=ffffffffffffffff
+initrd_high=ffffffffffffffff
+#else
+fdt_high=ffffffff
+initrd_high=ffffffff
+#endif
+kernel_addr_r=0x00080000
+scriptaddr=0x02400000
+pxefile_addr_r=0x02500000
+fdt_addr_r=0x02600000
+ramdisk_addr_r=0x02700000
+
+boot_targets=mmc usb pxe dhcp
diff --git a/board/starfive/visionfive2/visionfive2-i2c-eeprom.c b/board/starfive/visionfive2/visionfive2-i2c-eeprom.c
index befe788..c334d98 100644
--- a/board/starfive/visionfive2/visionfive2-i2c-eeprom.c
+++ b/board/starfive/visionfive2/visionfive2-i2c-eeprom.c
@@ -504,7 +504,7 @@ int mac_read_from_eeprom(void)
}
// 1, setup ethaddr env
- eth_env_set_enetaddr("eth0addr", pbuf.eeprom.atom4.data.mac0_addr);
+ eth_env_set_enetaddr("ethaddr", pbuf.eeprom.atom4.data.mac0_addr);
eth_env_set_enetaddr("eth1addr", pbuf.eeprom.atom4.data.mac1_addr);
/**
diff --git a/common/dlmalloc.c b/common/dlmalloc.c
index 0f9b726..dcecdb8 100644
--- a/common/dlmalloc.c
+++ b/common/dlmalloc.c
@@ -631,7 +631,7 @@ void mem_malloc_init(ulong start, ulong size)
debug("using memory %#lx-%#lx for malloc()\n", mem_malloc_start,
mem_malloc_end);
-#ifdef CONFIG_SYS_MALLOC_CLEAR_ON_INIT
+#if CONFIG_IS_ENABLED(SYS_MALLOC_CLEAR_ON_INIT)
memset((void *)mem_malloc_start, 0x0, size);
#endif
malloc_bin_reloc();
@@ -2153,7 +2153,7 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size;
/* check if expand_top called, in which case don't need to clear */
-#ifdef CONFIG_SYS_MALLOC_CLEAR_ON_INIT
+#if CONFIG_IS_ENABLED(SYS_MALLOC_CLEAR_ON_INIT)
#if MORECORE_CLEARS
mchunkptr oldtop = top;
INTERNAL_SIZE_T oldtopsize = chunksize(top);
@@ -2184,7 +2184,7 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size;
csz = chunksize(p);
-#ifdef CONFIG_SYS_MALLOC_CLEAR_ON_INIT
+#if CONFIG_IS_ENABLED(SYS_MALLOC_CLEAR_ON_INIT)
#if MORECORE_CLEARS
if (p == oldtop && csz > oldtopsize)
{
diff --git a/common/spl/spl_opensbi.c b/common/spl/spl_opensbi.c
index b0f4007..e2aaa46 100644
--- a/common/spl/spl_opensbi.c
+++ b/common/spl/spl_opensbi.c
@@ -43,11 +43,12 @@ static int spl_opensbi_find_uboot_node(void *blob, int *uboot_node)
return -ENODEV;
}
-void spl_invoke_opensbi(struct spl_image_info *spl_image)
+void __noreturn spl_invoke_opensbi(struct spl_image_info *spl_image)
{
int ret, uboot_node;
ulong uboot_entry;
- void (*opensbi_entry)(ulong hartid, ulong dtb, ulong info);
+ typedef void __noreturn (*opensbi_entry_t)(ulong hartid, ulong dtb, ulong info);
+ opensbi_entry_t opensbi_entry;
if (!spl_image->fdt_addr) {
pr_err("No device tree specified in SPL image\n");
@@ -74,7 +75,7 @@ void spl_invoke_opensbi(struct spl_image_info *spl_image)
opensbi_info.options = CONFIG_SPL_OPENSBI_SCRATCH_OPTIONS;
opensbi_info.boot_hart = gd->arch.boot_hart;
- opensbi_entry = (void (*)(ulong, ulong, ulong))spl_image->entry_point;
+ opensbi_entry = (opensbi_entry_t)spl_image->entry_point;
invalidate_icache_all();
#ifdef CONFIG_SPL_SMP
diff --git a/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig
deleted file mode 100644
index 8e55069..0000000
--- a/configs/nokia_rx51_defconfig
+++ /dev/null
@@ -1,76 +0,0 @@
-CONFIG_ARM=y
-# CONFIG_SYS_THUMB_BUILD is not set
-CONFIG_SYS_L2CACHE_OFF=y
-CONFIG_ARCH_OMAP2PLUS=y
-CONFIG_SYS_MALLOC_LEN=0xc0000
-CONFIG_TARGET_NOKIA_RX51=y
-CONFIG_SYS_LOAD_ADDR=0x80008000
-CONFIG_OPTIMIZE_INLINING=y
-CONFIG_LTO=y
-# CONFIG_FIT is not set
-CONFIG_SUPPORT_RAW_INITRD=y
-CONFIG_BOOTDELAY=30
-CONFIG_AUTOBOOT_KEYED=y
-CONFIG_AUTOBOOT_MENU_SHOW=y
-CONFIG_USE_BOOTCOMMAND=y
-CONFIG_BOOTCOMMAND="run sdboot;run emmcboot;run attachboot;echo"
-CONFIG_USE_PREBOOT=y
-# CONFIG_SYS_DEVICE_NULLDEV is not set
-CONFIG_HUSH_PARSER=y
-CONFIG_SYS_CBSIZE=256
-CONFIG_SYS_PBSIZE=287
-# CONFIG_CMD_BDI is not set
-CONFIG_CMD_BOOTZ=y
-# CONFIG_BOOTM_NETBSD is not set
-# CONFIG_BOOTM_PLAN9 is not set
-# CONFIG_BOOTM_RTEMS is not set
-# CONFIG_BOOTM_VXWORKS is not set
-CONFIG_CMD_BOOTMENU=y
-# CONFIG_CMD_ELF is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EXPORTENV is not set
-# CONFIG_CMD_IMPORTENV is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_SAVEENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_MTD=y
-CONFIG_CMD_ONENAND=y
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_SLEEP is not set
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_FAT=y
-CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
-CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(bootloader)ro,384k(config),256k(log),2m(kernel),2m(initfs),-(rootfs)"
-CONFIG_ENV_OVERWRITE=y
-CONFIG_SYS_RELOC_GD_ENV_ADDR=y
-# CONFIG_NET is not set
-# CONFIG_DM_WARN is not set
-# CONFIG_DM_DEVICE_REMOVE is not set
-# CONFIG_DM_SEQ_ALIAS is not set
-# CONFIG_BLOCK_CACHE is not set
-CONFIG_DM_I2C=y
-CONFIG_DM_KEYBOARD=y
-# CONFIG_MMC_HW_PARTITIONING is not set
-# CONFIG_MMC_VERBOSE is not set
-CONFIG_MMC_OMAP_HS=y
-CONFIG_MTD=y
-CONFIG_DM_SERIAL=y
-CONFIG_SPI=y
-CONFIG_USB=y
-CONFIG_USB_MUSB_UDC=y
-CONFIG_USB_OMAP3=y
-CONFIG_VIDEO=y
-CONFIG_VIDEO_LOGO=y
-# CONFIG_VIDEO_BPP8 is not set
-# CONFIG_VIDEO_BPP32 is not set
-CONFIG_SYS_WHITE_ON_BLACK=y
-CONFIG_SPLASH_SCREEN=y
-CONFIG_WATCHDOG_TIMEOUT_MSECS=31000
-CONFIG_WDT=y
-# CONFIG_GZIP is not set
diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig
index 5da334a..3167bfb 100644
--- a/configs/rpi_0_w_defconfig
+++ b/configs/rpi_0_w_defconfig
@@ -12,8 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-zero-w"
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig
index 9908621..883dab1 100644
--- a/configs/rpi_2_defconfig
+++ b/configs/rpi_2_defconfig
@@ -13,8 +13,8 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2836-rpi-2-b"
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig
index 80885aa..5ff7d98 100644
--- a/configs/rpi_3_32b_defconfig
+++ b/configs/rpi_3_32b_defconfig
@@ -12,8 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/rpi_3_b_plus_defconfig b/configs/rpi_3_b_plus_defconfig
index 0acce8b..31f2a6e 100644
--- a/configs/rpi_3_b_plus_defconfig
+++ b/configs/rpi_3_b_plus_defconfig
@@ -11,8 +11,8 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b-plus"
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig
index bb6fe12..fa6e150 100644
--- a/configs/rpi_3_defconfig
+++ b/configs/rpi_3_defconfig
@@ -11,8 +11,8 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2837-rpi-3-b"
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/rpi_4_32b_defconfig b/configs/rpi_4_32b_defconfig
index f621334..55bf6c0 100644
--- a/configs/rpi_4_32b_defconfig
+++ b/configs/rpi_4_32b_defconfig
@@ -10,9 +10,9 @@ CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_DM_RESET=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_PCI=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
CONFIG_PREBOOT="pci enum; usb start;"
# CONFIG_DISPLAY_CPUINFO is not set
diff --git a/configs/rpi_4_defconfig b/configs/rpi_4_defconfig
index bbc0fd6..6679cce 100644
--- a/configs/rpi_4_defconfig
+++ b/configs/rpi_4_defconfig
@@ -10,9 +10,9 @@ CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_DM_RESET=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_PCI=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
CONFIG_PREBOOT="pci enum; usb start;"
# CONFIG_DISPLAY_CPUINFO is not set
diff --git a/configs/rpi_arm64_defconfig b/configs/rpi_arm64_defconfig
index 5d9a273..26e29ff 100644
--- a/configs/rpi_arm64_defconfig
+++ b/configs/rpi_arm64_defconfig
@@ -10,9 +10,9 @@ CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_DM_RESET=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_PCI=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
CONFIG_PREBOOT="pci enum; usb start;"
# CONFIG_DISPLAY_CPUINFO is not set
diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig
index 550b8dc..0ac5efe 100644
--- a/configs/rpi_defconfig
+++ b/configs/rpi_defconfig
@@ -12,8 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="bcm2835-rpi-b"
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_SYS_LOAD_ADDR=0x1000000
+CONFIG_BOOTSTD_DEFAULTS=y
CONFIG_OF_BOARD_SETUP=y
-CONFIG_DISTRO_DEFAULTS=y
CONFIG_USE_PREBOOT=y
# CONFIG_DISPLAY_CPUINFO is not set
# CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/starfive_visionfive2_defconfig b/configs/starfive_visionfive2_defconfig
index e9b63e5..9df6fce 100644
--- a/configs/starfive_visionfive2_defconfig
+++ b/configs/starfive_visionfive2_defconfig
@@ -30,6 +30,7 @@ CONFIG_SPL_SPI=y
CONFIG_SYS_LOAD_ADDR=0x82000000
CONFIG_SYS_PCI_64BIT=y
CONFIG_PCI=y
+CONFIG_PCI_INIT_R=y
CONFIG_TARGET_STARFIVE_VISIONFIVE2=y
CONFIG_SPL_OPENSBI_LOAD_ADDR=0x40000000
CONFIG_ARCH_RV64I=y
@@ -43,7 +44,7 @@ CONFIG_SD_BOOT=y
CONFIG_USE_BOOTARGS=y
CONFIG_BOOTARGS="console=ttyS0,115200 debug rootwait earlycon=sbi"
CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="setenv fdt_addr ${fdtcontroladdr};fdt addr ${fdtcontroladdr};"
+CONFIG_PREBOOT="nvme scan; usb start; setenv fdt_addr ${fdtcontroladdr}; fdt addr ${fdtcontroladdr};"
CONFIG_DEFAULT_FDT_FILE="starfive/jh7110-starfive-visionfive-2.dtb"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_DISPLAY_BOARDINFO=y
@@ -58,6 +59,8 @@ CONFIG_SYS_SPL_MALLOC=y
CONFIG_HAS_CUSTOM_SPL_MALLOC_START=y
CONFIG_CUSTOM_SYS_SPL_MALLOC_ADDR=0x80000000
CONFIG_SYS_SPL_MALLOC_SIZE=0x400000
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL_SYS_MALLOC_CLEAR_ON_INIT=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x2
CONFIG_SPL_I2C=y
@@ -124,4 +127,9 @@ CONFIG_TIMER_EARLY=y
CONFIG_USB=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PCI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_PCI=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_PCI=y
+CONFIG_USB_STORAGE=y
CONFIG_USB_KEYBOARD=y
diff --git a/doc/board/index.rst b/doc/board/index.rst
index 0194f0a..35dd3bc 100644
--- a/doc/board/index.rst
+++ b/doc/board/index.rst
@@ -32,7 +32,6 @@ Board-specific doc
lg/index
mediatek/index
microchip/index
- nokia/index
nxp/index
openpiton/index
phytec/index
diff --git a/doc/board/nokia/index.rst b/doc/board/nokia/index.rst
deleted file mode 100644
index b68c3c6..0000000
--- a/doc/board/nokia/index.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-.. SPDX-License-Identifier: GPL-2.0+
-
-Nokia
-=====
-
-.. toctree::
- :maxdepth: 2
-
- rx51
diff --git a/doc/board/nokia/rx51.rst b/doc/board/nokia/rx51.rst
deleted file mode 100644
index 93502e2..0000000
--- a/doc/board/nokia/rx51.rst
+++ /dev/null
@@ -1,250 +0,0 @@
-.. SPDX-License-Identifier: GPL-2.0+
-
-Nokia RX-51 aka N900
-====================
-
-The ``nokia_rx51_defconfig`` configuration file results in a ``u-boot.bin``
-which can be chainloaded by the Nokia second stage bootloader (NOLO) in QEMU or
-on a real N900. It does very little hardware configuration because NOLO has
-already configured the board. It is only needed to enable the internal eMMC
-memory via the twl4030 regulator which is not enabled by NOLO.
-
-.. code-block:: bash
-
- make CROSS_COMPILE=arm-linux-gnueabi- nokia_rx51_defconfig u-boot.bin
-
-NOLO is expecting a kernel image and will treat any image it finds in
-OneNAND as such. This u-boot is intended to be flashed to the N900 like
-a kernel. In order to transparently boot the original kernel, it will be
-appended to ``u-boot.bin`` at 0x40000. NOLO will load the entire image into
-(random) memory and execute U-Boot, which saves hardware revision, boot reason
-and boot mode ATAGs set by NOLO. Then the bootscripts will attempt to load
-``uImage``, ``zImage`` or ``boot.scr`` file from a FAT or ext2/3/4 filesystem
-on external SD card or internal eMMC memory. If this fails or keyboard is
-closed then the appended kernel image will be booted using some generated
-and some stored ATAGs (see boot order).
-
-For generating combined image of U-Boot and kernel (either in uImage or zImage
-format) there is a simple script called ``u-boot-gen-combined``. It is available
-in following repository: https://github.com/pali/u-boot-maemo.
-
-To generate the ``combined.bin`` image from ``u-boot.bin`` and ``kernel.bin``
-(in either uImage or zImage format) use:
-
-.. code-block:: bash
-
- sh u-boot-gen-combined u-boot.bin kernel.bin combined.bin
-
-The original Maemo Fremantle PR1.3 zImage kernel binary is available at:
-http://repository.maemo.org/pool/maemo5.0/free/k/kernel/kernel_2.6.28-20103103+0m5_armel.deb
-
-To unpack it (from DEB/AR, TAR and FIASCO) execute the following commands:
-
-.. code-block:: bash
-
- ar x kernel_2.6.28-20103103+0m5_armel.deb data.tar.gz
- tar -O -xf data.tar.gz ./boot/zImage-2.6.28-20103103+0m5.fiasco > kernel_2.6.28-20103103+0m5.fiasco
- 0xFFFF -M kernel_2.6.28-20103103+0m5.fiasco -u
-
-The flashed image must start with a 2 KiB ``NOLO!img`` header which contains
-size of the image. The header consists of the bytes
-``NOLO!img\x02\x00\x00\x00\x00\x00\x00\x00`` followed by the 4 byte little
-endian size of the image. The rest of the 2 KiB header just contains zero bytes.
-
-The Nokia proprietary flasher and also the open source 0xFFFF flasher
-automatically prepend the required ``NOLO!img`` header and both applications
-expect that the image does not contain a ``NOLO!img`` header. Adding a
-``NOLO!img`` header is required only in case of using the ``nandwrite`` tool for
-flashing.
-
-The open source 0xFFFF flasher is available in the following repository:
-https://github.com/pali/0xFFFF
-
-It is possible to load ``u-boot.bin`` via USB to the N900 RAM and boot it
-without needing to flash it. This is done via 0xFFFF running on the host PC:
-
-.. code-block:: bash
-
- 0xFFFF -m u-boot.bin -l -b
-
-0xFFFF also supports flashing a kernel image either via USB or directly on
-N900 device. Flashing u-boot/kernel/combined image is done as:
-
-.. code-block:: bash
-
- 0xFFFF -m combined.bin -f
-
-Via 0xFFFF it is also possible to generate a standard flashable image in
-Nokia FIASCO format which contains metadata information like device
-identification (RX-51) and version string (v2021.04):
-
-.. code-block:: bash
-
- 0xFFFF -m RX-51:v2021.04:kernel:u-boot.bin -g u-boot.fiasco
-
-There is support for the hardware watchdog. The hardware watchdog is started by
-NOLO so U-Boot must reset the watchdog to prevent rebooting the device (but not
-very often, max every 2 seconds). There is also support for framebuffer display
-output with ANSI escape codes and the N900 hardware keyboard input.
-
-When U-Boot is starting it sets the IBE bit in the Auxiliary Control Register,
-which is needed for Thumb-2 ISA support. This is a workaround for erratum
-430973.
-
-Default boot order
-------------------
-
-0. if keyboard is closed boot automatically attached kernel image
-1. try boot from external SD card
-2. try boot from internal eMMC memory
-3. try boot from attached kernel image
-
-Boot from SD or eMMC in this order:
-
-1. boot from FAT partition
-
- a. find ``boot.scr`` on first FAT partition
- b. find ``uImage`` on first FAT partition
- c. find ``zImage`` on first FAT partition
- d. same order for 2nd - 4th FAT partition
-
-2. same as 1. but for ext2/3/4 partition
-
-Available additional commands/variables
----------------------------------------
-
-* run sdboot - Boot from external SD card (see boot order)
-* run emmcboot - Boot from internal eMMC memory (see boot order)
-* run attachboot - Boot attached kernel image (attached to U-Boot binary)
-
-\
-
-* run scriptload - Load boot script ``${mmcscriptfile}``
-* run scriptboot - Run loaded boot script
-* run kernload - Load kernel image ``${mmckernfile}``
-* run initrdload - Load initrd image ``${mmcinitrdfile}``
-* run kernboot - Boot loaded kernel image
-* run kerninitrdboot - Boot loaded kernel image with loaded initrd image
-
-\
-
-* run trymmcscriptboot - Try to load and boot script ``${mmcscriptfile}``
-* run trymmckernboot - Try to load and boot kernel image ``${mmckernfile}``
-* run trymmckerninitrdboot - Try to load and boot kernel image ``${mmckernfile}``
- with initrd image ``${mmcinitrdfile}``
-
-Additional variables for loading files from mmc
------------------------------------------------
-
-* mmc ``${mmcnum}`` (0 - external, 1 - internal)
-* partition number ``${mmcpart}`` (1 - 4)
-* partition type ``${mmctype}`` (fat, ext2, ext4; ext2 is just alias for ext4)
-
-Additional variables for booting a kernel
------------------------------------------
-
-* ``setup_omap_atag`` - Add OMAP table into atags structure (needed for maemo kernel)
-* ``setup_console_atag`` - Enable serial console in OMAP table
-* ``setup_boot_reason_atag`` - Change boot reason in OMAP table
-* ``setup_boot_mode_atag`` - Change boot mode in OMAP table
-
-Variable ``setup_omap_atag`` is automatically set when booting attached kernel.
-When variable ``setup_omap_atag`` is set, variable ``setup_console_atag`` is unset
-and u-boot standard output is set to serial then ``setup_console_atag`` is
-automatically set to 1. So output from Maemo kernel would go to serial port.
-
-UBIFS support
--------------
-
-UBIFS support is disabled, because U-Boot image is too big and cannot be
-flashed with attached kernel image to RX-51 kernel nand area. For enabling
-UBIFS support add following lines into file ``configs/nokia_rx51_defconfig``::
-
- CONFIG_CMD_UBI=y
- CONFIG_CMD_UBIFS=y
- CONFIG_MTD_UBI_BEB_LIMIT=10
-
-Early output
-------------
-
-Early U-Boot output can be enabled on serial console by adding following lines
-into file ``configs/nokia_rx51_defconfig``::
-
- CONFIG_DEBUG_UART=y
- CONFIG_DEBUG_UART_OMAP=y
- CONFIG_DEBUG_UART_SHIFT=2
- CONFIG_DEBUG_UART_BASE=0x49020000
- CONFIG_DEBUG_UART_CLOCK=48000000
-
-Note that early output is not available on USB tty console.
-
-Verbose debug output
---------------------
-
-Verbose debug output with maximal log level can be enabled by adding following
-lines into file ``configs/nokia_rx51_defconfig``::
-
- CONFIG_DM_DEBUG=y
- CONFIG_LOG=y
- CONFIG_LOGLEVEL=9
- CONFIG_LOG_MAX_LEVEL=9
- CONFIG_LOG_DEFAULT_LEVEL=9
-
-And compiling U-Boot by additional make parameter ``KCPPFLAGS=-DLOG_DEBUG``.
-
-Run in QEMU
------------
-
-Download and compile Linaro version of qemu which contains ``n900`` qemu
-machine. Source code is available in qemu-linaro git repository and the
-last working version is at commit 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1.
-
-Use following commands to compile ``qemu-system-arm`` binary with ``n900``
-qemu machine support:
-
-.. code-block:: bash
-
- git clone https://git.linaro.org/qemu/qemu-linaro.git
- cd qemu-linaro
- git checkout 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1
- ./configure --enable-system --target-list=arm-softmmu --disable-werror
- make -j4
- cd ..
- ln -s qemu-linaro/arm-softmmu/qemu-system-arm .
-
-Using ``n900`` qemu machine requires proprietary Nokia qemu ``qflasher`` tool
-(in reality it is just generator of qemu MTD images) with first stage images
-(``xloader-qemu.bin`` and ``secondary-qemu.bin``), similar what is required
-on the real HW. License of flasher and images allows non-commercial
-redistribution and it is available at maemo.org website:
-
-.. code-block:: bash
-
- wget -c http://repository.maemo.org/qemu-n900/qemu-n900.tar.gz
- tar -xf qemu-n900.tar.gz
-
-To generate qemu bootable MTD image ``mtd.img`` from U-Boot binary
-``u-boot.bin`` and unpacked first stage images, run following command:
-
-.. code-block:: bash
-
- ./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k u-boot.bin -m rx51 -o mtd.img
-
-Instead of ``u-boot.bin`` binary it is possible to also used combined
-U-Boot + kernel binary ``combined.bin``.
-
-Finally, to boot ``mtd.img`` with graphics display and keyboard with optional
-serial console on current terminal, run:
-
-.. code-block:: bash
-
- ./qemu-system-arm -M n900 -mtdblock mtd.img -serial /dev/tty
-
-Additionally it is possible to emulate also eMMC and uSD card by appending
-qemu ``-sd`` arguments:
-
-.. code-block:: bash
-
- ./qemu-system-arm -M n900 -mtdblock mtd.img -sd emmc.img -sd sd.img -serial /dev/tty
-
-For more examples, look into the ``test/nokia_rx51_test.sh`` CI testing script.
diff --git a/doc/board/starfive/visionfive2.rst b/doc/board/starfive/visionfive2.rst
index 941899a..460f23a 100644
--- a/doc/board/starfive/visionfive2.rst
+++ b/doc/board/starfive/visionfive2.rst
@@ -20,6 +20,8 @@ The support for following drivers are already enabled:
3. StarFive JH7110 reset Driver.
4. Cadence QSPI controller Driver.
5. MMC SPI Driver for MMC/SD support.
+6. PLDA PCIE controller driver.
+7. On-board VL805 PCIE-USB controller driver.
Booting from MMC using U-Boot SPL
---------------------------------
diff --git a/doc/develop/release_cycle.rst b/doc/develop/release_cycle.rst
index 50d33df..346cf29 100644
--- a/doc/develop/release_cycle.rst
+++ b/doc/develop/release_cycle.rst
@@ -70,7 +70,7 @@ For the next scheduled release, release candidates were made on::
* U-Boot v2023.10-rc3 was released on Mon 21 August 2023.
-.. * U-Boot v2023.10-rc4 was released on Mon 04 September 2023.
+* U-Boot v2023.10-rc4 was released on Mon 04 September 2023.
.. * U-Boot v2023.10-rc5 was released on Mon 18 September 2023.
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
index a1e0899..8c54bc9 100644
--- a/drivers/serial/Kconfig
+++ b/drivers/serial/Kconfig
@@ -218,6 +218,7 @@ config DEBUG_UART
choice
prompt "Select which UART will provide the debug UART"
depends on DEBUG_UART
+ default DEBUG_SBI_CONSOLE if RISCV_SMODE
default DEBUG_UART_NS16550
config DEBUG_UART_ALTERA_JTAGUART
@@ -289,11 +290,13 @@ config DEBUG_EFI_CONSOLE
config DEBUG_SBI_CONSOLE
bool "SBI"
- depends on SBI_V01
+ depends on RISCV_SMODE
help
Select this to enable a debug console which calls back to SBI to
output to the console. This can be useful for early debugging of
U-Boot when running on top of SBI (Supervisor Binary Interface).
+ This implementation of the debug UART is not available while in
+ M-mode (e.g. during SPL).
config DEBUG_UART_S5P
bool "Samsung S5P"
diff --git a/drivers/serial/serial_sbi.c b/drivers/serial/serial_sbi.c
index b9f35ed..a51a96c 100644
--- a/drivers/serial/serial_sbi.c
+++ b/drivers/serial/serial_sbi.c
@@ -3,6 +3,8 @@
#include <debug_uart.h>
#include <asm/sbi.h>
+#ifdef CONFIG_SBI_V01
+
static inline void _debug_uart_init(void)
{
}
@@ -13,4 +15,22 @@ static inline void _debug_uart_putc(int c)
sbi_console_putchar(c);
}
+#else
+
+static int sbi_dbcn_available;
+
+static inline void _debug_uart_init(void)
+{
+ if (CONFIG_IS_ENABLED(RISCV_SMODE))
+ sbi_dbcn_available = sbi_probe_extension(SBI_EXT_DBCN);
+}
+
+static inline void _debug_uart_putc(int ch)
+{
+ if (CONFIG_IS_ENABLED(RISCV_SMODE) && sbi_dbcn_available)
+ sbi_dbcn_write_byte(ch);
+}
+
+#endif
+
DEBUG_UART_FUNCS
diff --git a/drivers/timer/riscv_timer.c b/drivers/timer/riscv_timer.c
index 3627ed7..28a6a68 100644
--- a/drivers/timer/riscv_timer.c
+++ b/drivers/timer/riscv_timer.c
@@ -13,6 +13,7 @@
#include <common.h>
#include <dm.h>
#include <errno.h>
+#include <fdt_support.h>
#include <timer.h>
#include <asm/csr.h>
@@ -53,9 +54,26 @@ u64 notrace timer_early_get_count(void)
static int riscv_timer_probe(struct udevice *dev)
{
struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
+ u32 rate;
- /* clock frequency was passed from the cpu driver as driver data */
- uc_priv->clock_rate = dev->driver_data;
+ /* When this function was called from the CPU driver, clock
+ * frequency is passed as driver data.
+ */
+ rate = dev->driver_data;
+
+ /* When called from an FDT match, the rate needs to be looked up. */
+ if (!rate && gd->fdt_blob) {
+ rate = fdt_getprop_u32_default(gd->fdt_blob,
+ "/cpus", "timebase-frequency", 0);
+ }
+
+ uc_priv->clock_rate = rate;
+
+ /* With rate==0, timer uclass post_probe might later fail with -EINVAL.
+ * Give a hint at the cause for debugging.
+ */
+ if (!rate)
+ log_err("riscv_timer_probe with invalid clock rate 0!\n");
return 0;
}
@@ -64,9 +82,15 @@ static const struct timer_ops riscv_timer_ops = {
.get_count = riscv_timer_get_count,
};
+static const struct udevice_id riscv_timer_ids[] = {
+ { .compatible = "riscv,timer", },
+ { }
+};
+
U_BOOT_DRIVER(riscv_timer) = {
.name = "riscv_timer",
.id = UCLASS_TIMER,
+ .of_match = of_match_ptr(riscv_timer_ids),
.probe = riscv_timer_probe,
.ops = &riscv_timer_ops,
.flags = DM_FLAG_PRE_RELOC,
diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h
deleted file mode 100644
index 54eea32..0000000
--- a/include/configs/nokia_rx51.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2011-2012
- * Pali Rohár <pali@kernel.org>
- *
- * (C) Copyright 2010
- * Alistair Buxton <a.j.buxton@gmail.com>
- *
- * Derived from Beagle Board code:
- * (C) Copyright 2006-2008
- * Texas Instruments.
- * Richard Woodruff <r-woodruff2@ti.com>
- * Syed Mohammed Khasim <x0khasim@ti.com>
- *
- * Configuration settings for the Nokia RX-51 aka N900.
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- */
-
-#include <asm/arch/cpu.h> /* get chip and board defs */
-#include <asm/arch/omap.h>
-#include <asm/arch/mem.h>
-#include <linux/stringify.h>
-
-/* Clock Defines */
-#define V_OSCK 26000000 /* Clock output from T2 */
-#define V_SCLK (V_OSCK >> 1)
-
-/*
- * Hardware drivers
- */
-
-/*
- * NS16550 Configuration
- */
-#define V_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */
-
-#define CFG_SYS_NS16550_CLK V_NS16550_CLK
-
-/*
- * select serial console configuration
- */
-#define CFG_SYS_NS16550_COM3 OMAP34XX_UART3
-
-#define CFG_SYS_BAUDRATE_TABLE { 4800, 9600, 19200, 38400, 57600, 115200 }
-
-#define GPIO_SLIDE 71
-
-/*
- * Board ONENAND Info.
- */
-
-#define CFG_SYS_ONENAND_BASE ONENAND_MAP
-
-/* Environment information */
-#define CFG_EXTRA_ENV_SETTINGS \
- "usbtty=cdc_acm\0" \
- "stdin=usbtty,serial,keyboard\0" \
- "stdout=usbtty,serial,vidconsole\0" \
- "stderr=usbtty,serial,vidconsole\0" \
- "slide=gpio input " __stringify(GPIO_SLIDE) "\0" \
- "switchmmc=mmc dev ${mmcnum}\0" \
- "kernaddr=0x82008000\0" \
- "initrdaddr=0x84008000\0" \
- "scriptaddr=0x86008000\0" \
- "fileloadaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
- "fileload=${mmctype}load mmc ${mmcnum}:${mmcpart} " \
- "${fileloadaddr} ${mmcfile}\0" \
- "kernload=setenv fileloadaddr ${kernaddr};" \
- "setenv mmcfile ${mmckernfile};" \
- "run fileload\0" \
- "initrdload=setenv fileloadaddr ${initrdaddr};" \
- "setenv mmcfile ${mmcinitrdfile};" \
- "run fileload\0" \
- "scriptload=setenv fileloadaddr ${scriptaddr};" \
- "setenv mmcfile ${mmcscriptfile};" \
- "run fileload\0" \
- "scriptboot=echo Running ${mmcscriptfile} from mmc " \
- "${mmcnum}:${mmcpart} ...; source ${scriptaddr}\0" \
- "kernboot=echo Booting ${mmckernfile} from mmc " \
- "${mmcnum}:${mmcpart} ...; bootm ${kernaddr} || " \
- "bootz ${kernaddr}\0" \
- "kerninitrdboot=echo Booting ${mmckernfile} ${mmcinitrdfile} from mmc "\
- "${mmcnum}:${mmcpart} ...; bootm ${kernaddr} ${initrdaddr} || " \
- "bootz ${kernaddr} ${initrdaddr}\0" \
- "attachboot=echo Booting attached kernel image ...;" \
- "setenv setup_omap_atag 1;" \
- "bootm ${attkernaddr} || bootz ${attkernaddr};" \
- "setenv setup_omap_atag\0" \
- "trymmcscriptboot=run switchmmc && run scriptload && run scriptboot\0" \
- "trymmckernboot=run switchmmc && run kernload && run kernboot\0" \
- "trymmckerninitrdboot=run switchmmc && run initrdload && " \
- "run kernload && run kerninitrdboot\0" \
- "trymmcpartboot=setenv mmcscriptfile boot.scr; run trymmcscriptboot;" \
- "setenv mmckernfile uImage; run trymmckernboot;" \
- "setenv mmckernfile zImage; run trymmckernboot\0" \
- "trymmcallpartboot=setenv mmcpart 1; run trymmcpartboot;" \
- "setenv mmcpart 2; run trymmcpartboot;" \
- "setenv mmcpart 3; run trymmcpartboot;" \
- "setenv mmcpart 4; run trymmcpartboot\0" \
- "trymmcboot=if run switchmmc; then " \
- "setenv mmctype fat;" \
- "run trymmcallpartboot;" \
- "setenv mmctype ext4;" \
- "run trymmcallpartboot;" \
- "fi\0" \
- "emmcboot=setenv mmcnum 1; run trymmcboot\0" \
- "sdboot=setenv mmcnum 0; run trymmcboot\0" \
- "trymmcbootmenu=setenv mmctype fat && run trymmcscriptboot || " \
- "setenv mmctype ext4 && run trymmcscriptboot\0" \
- "preboot=setenv mmcpart 1; setenv mmcscriptfile bootmenu.scr;" \
- "setenv mmcnum 0 && run trymmcbootmenu || " \
- "setenv mmcnum 1 && run trymmcbootmenu;" \
- "if run slide; then true; else " \
- "setenv bootmenu_delay 0;" \
- "setenv bootdelay 0;" \
- "fi\0" \
- "menucmd=bootmenu\0" \
- "bootmenu_0=Attached kernel=run attachboot\0" \
- "bootmenu_1=Internal eMMC=run emmcboot\0" \
- "bootmenu_2=External SD card=run sdboot\0" \
- "bootmenu_3=U-Boot boot order=boot\0" \
- "bootmenu_delay=30\0" \
- ""
-
-#define CFG_POSTBOOTMENU \
- "echo;" \
- "echo Extra commands:;" \
- "echo run sdboot - Boot from SD card slot.;" \
- "echo run emmcboot - Boot internal eMMC memory.;" \
- "echo run attachboot - Boot attached kernel image.;" \
- "echo"
-
-/*
- * OMAP3 has 12 GP timers, they can be driven by the system clock
- * (12/13/16.8/19.2/38.4MHz) or by 32KHz clock. We use 13MHz (V_SCLK).
- * This rate is divided by a local divisor.
- */
-#define CFG_SYS_TIMERBASE (OMAP34XX_GPT2)
-
-/*
- * Physical Memory Map
- */
-#define PHYS_SDRAM_1 OMAP34XX_SDRC_CS0
-
-/*
- * FLASH and environment organization
- */
-
-#define CFG_SYS_SDRAM_BASE PHYS_SDRAM_1
-#define CFG_SYS_INIT_RAM_ADDR 0x4020f800
-#define CFG_SYS_INIT_RAM_SIZE 0x800
-
-/*
- * Attached kernel image
- */
-
-#define SDRAM_SIZE 0x10000000 /* 256 MB */
-#define SDRAM_END (CFG_SYS_SDRAM_BASE + SDRAM_SIZE)
-
-#define IMAGE_MAXSIZE 0x1FF800 /* 2 MB - 2 kB */
-#define KERNEL_OFFSET 0x40000 /* 256 kB */
-#define KERNEL_MAXSIZE (IMAGE_MAXSIZE-KERNEL_OFFSET)
-#define KERNEL_ADDRESS (SDRAM_END-KERNEL_MAXSIZE)
-
-/* Reserve protected RAM for attached kernel */
-#define CFG_PRAM ((KERNEL_MAXSIZE >> 10)+1)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index 4da982f..8e56bdc 100644
--- a/include/configs/rpi.h
+++ b/include/configs/rpi.h
@@ -13,8 +13,6 @@
#include <asm/arch/base.h>
#endif
-/* Architecture, CPU, etc.*/
-
/* Use SoC timer for AArch32, but architected timer for AArch64 */
#ifndef CONFIG_ARM64
#define CFG_SYS_TIMER_RATE 1000000
@@ -33,136 +31,4 @@
*/
#define CFG_SYS_SDRAM_SIZE SZ_128M
-/* Devices */
-/* LCD */
-
-/* DFU over USB/UDC */
-#ifdef CONFIG_CMD_DFU
-#ifdef CONFIG_ARM64
-#define KERNEL_FILENAME "Image"
-#else
-#define KERNEL_FILENAME "zImage"
-#endif
-
-#define ENV_DFU_SETTINGS \
- "dfu_alt_info=u-boot.bin fat 0 1;uboot.env fat 0 1;" \
- "config.txt fat 0 1;" \
- KERNEL_FILENAME " fat 0 1\0"
-#else
-#define ENV_DFU_SETTINGS ""
-#endif
-
-/* Console configuration */
-
-/* Environment */
-
-/* Shell */
-
-/* Environment */
-#define ENV_DEVICE_SETTINGS \
- "stdin=serial,usbkbd\0" \
- "stdout=serial,vidconsole\0" \
- "stderr=serial,vidconsole\0"
-
-#ifdef CONFIG_ARM64
-#define FDT_HIGH "ffffffffffffffff"
-#define INITRD_HIGH "ffffffffffffffff"
-#else
-#define FDT_HIGH "ffffffff"
-#define INITRD_HIGH "ffffffff"
-#endif
-
-/*
- * Memory layout for where various images get loaded by boot scripts:
- *
- * I suspect address 0 is used as the SMP pen on the RPi2, so avoid this.
- *
- * Older versions of the boot firmware place the firmware-loaded DTB at 0x100,
- * newer versions place it in high memory. So prevent U-Boot from doing its own
- * DTB + initrd relocation so that we won't accidentally relocate the initrd
- * over the firmware-loaded DTB and generally try to lay out things starting
- * from the bottom of RAM.
- *
- * kernel_addr_r has different constraints on ARM and Aarch64. For 32-bit ARM,
- * it must be within the first 128M of RAM in order for the kernel's
- * CONFIG_AUTO_ZRELADDR option to work. The kernel itself will be decompressed
- * to 0x8000 but the decompressor clobbers 0x4000-0x8000 as well. The
- * decompressor also likes to relocate itself to right past the end of the
- * decompressed kernel, so in total the sum of the compressed and and
- * decompressed kernel needs to be reserved.
- *
- * For Aarch64, the kernel image is uncompressed and must be loaded at
- * text_offset bytes (specified in the header of the Image) into a 2MB
- * boundary. The 'booti' command relocates the image if necessary. Linux uses
- * a default text_offset of 0x80000. In summary, loading at 0x80000
- * satisfies all these constraints and reserving memory up to 0x02400000
- * permits fairly large (roughly 36M) kernels.
- *
- * scriptaddr and pxefile_addr_r can be pretty much anywhere that doesn't
- * conflict with something else. Reserving 1M for each of them at
- * 0x02400000-0x02500000 and 0x02500000-0x02600000 should be plenty.
- *
- * On ARM, both the DTB and any possible initrd must be loaded such that they
- * fit inside the lowmem mapping in Linux. In practice, this usually means not
- * more than ~700M away from the start of the kernel image but this number can
- * be larger OR smaller depending on e.g. the 'vmalloc=xxxM' command line
- * parameter given to the kernel. So reserving memory from low to high
- * satisfies this constraint again. Reserving 1M at 0x02600000-0x02700000 for
- * the DTB leaves rest of the free RAM to the initrd starting at 0x02700000.
- * Even with the smallest possible CPU-GPU memory split of the CPU getting
- * only 64M, the remaining 25M starting at 0x02700000 should allow quite
- * large initrds before they start colliding with U-Boot.
- */
-#define ENV_MEM_LAYOUT_SETTINGS \
- "fdt_high=" FDT_HIGH "\0" \
- "initrd_high=" INITRD_HIGH "\0" \
- "kernel_addr_r=0x00080000\0" \
- "scriptaddr=0x02400000\0" \
- "pxefile_addr_r=0x02500000\0" \
- "fdt_addr_r=0x02600000\0" \
- "ramdisk_addr_r=0x02700000\0"
-
-#if IS_ENABLED(CONFIG_CMD_MMC)
- #define BOOT_TARGET_MMC(func) \
- func(MMC, mmc, 0) \
- func(MMC, mmc, 1) \
- func(MMC, mmc, 2)
-#else
- #define BOOT_TARGET_MMC(func)
-#endif
-
-#if IS_ENABLED(CONFIG_CMD_USB)
- #define BOOT_TARGET_USB(func) func(USB, usb, 0)
-#else
- #define BOOT_TARGET_USB(func)
-#endif
-
-#if CONFIG_IS_ENABLED(CMD_PXE)
- #define BOOT_TARGET_PXE(func) func(PXE, pxe, na)
-#else
- #define BOOT_TARGET_PXE(func)
-#endif
-
-#if CONFIG_IS_ENABLED(CMD_DHCP)
- #define BOOT_TARGET_DHCP(func) func(DHCP, dhcp, na)
-#else
- #define BOOT_TARGET_DHCP(func)
-#endif
-
-#define BOOT_TARGET_DEVICES(func) \
- BOOT_TARGET_MMC(func) \
- BOOT_TARGET_USB(func) \
- BOOT_TARGET_PXE(func) \
- BOOT_TARGET_DHCP(func)
-
-#include <config_distro_bootcmd.h>
-
-#define CFG_EXTRA_ENV_SETTINGS \
- "dhcpuboot=usb start; dhcp u-boot.uimg; bootm\0" \
- ENV_DEVICE_SETTINGS \
- ENV_DFU_SETTINGS \
- ENV_MEM_LAYOUT_SETTINGS \
- BOOTENV
-
-
#endif
diff --git a/include/spl.h b/include/spl.h
index 92bcaa9..93e9064 100644
--- a/include/spl.h
+++ b/include/spl.h
@@ -862,7 +862,7 @@ void __noreturn spl_optee_entry(void *arg0, void *arg1, void *arg2, void *arg3);
/**
* spl_invoke_opensbi - boot using a RISC-V OpenSBI image
*/
-void spl_invoke_opensbi(struct spl_image_info *spl_image);
+void __noreturn spl_invoke_opensbi(struct spl_image_info *spl_image);
/**
* board_return_to_bootrom - allow for boards to continue with the boot ROM
diff --git a/test/nokia_rx51_test.sh b/test/nokia_rx51_test.sh
deleted file mode 100755
index dca9ef3..0000000
--- a/test/nokia_rx51_test.sh
+++ /dev/null
@@ -1,420 +0,0 @@
-#!/bin/bash -e
-# SPDX-License-Identifier: GPL-2.0+
-# (C) 2020 Pali Rohár <pali@kernel.org>
-
-# External tools needed for this test:
-echo '
- wget
- git
- truncate
- tar
- dpkg
- dd
- make
- gcc
- arm-linux-gnueabi-gcc
- fakeroot (homepage http://fakeroot-ng.lingnu.com/)
- mcopy (from mtools, homepage http://www.gnu.org/software/mtools/)
- mformat (from mtools, homepage http://www.gnu.org/software/mtools/)
- /usr/sbin/mkfs.ubifs (from mtd-utils, homepage http://www.linux-mtd.infradead.org/)
- /usr/sbin/ubinize (from mtd-utils, homepage http://www.linux-mtd.infradead.org/)
- /lib/ld-linux.so.2 (32-bit x86 version of LD loader, needed for qflasher)
-' | while read tool info; do
- if test -z "$tool"; then continue; fi
- if ! which $tool 1>/dev/null 2>&1; then
- echo "Tool $tool was not found and is required to run this test"
- echo "First install $tool $info"
- exit 1
- fi
-done || exit 1
-
-echo
-echo "============================================================"
-echo "========== Compiling U-Boot for Nokia RX-51 board =========="
-echo "============================================================"
-echo
-
-# First compile u-boot-ubifs.bin binary with UBI/UBIFS support for Nokia RX-51 board according to doc/board/nokia/rx51.rst
-make nokia_rx51_config
-cat >> .config << EOF
-CONFIG_CMD_UBI=y
-CONFIG_CMD_UBIFS=y
-CONFIG_MTD_UBI_BEB_LIMIT=10
-EOF
-make olddefconfig
-make -j4 u-boot.bin CROSS_COMPILE=arm-linux-gnueabi-
-mv u-boot.bin u-boot-ubifs.bin
-
-# Then compile standard u-boot.bin binary for Nokia RX-51 board
-make nokia_rx51_config
-make -j4 u-boot.bin CROSS_COMPILE=arm-linux-gnueabi-
-
-# And then do all stuff in temporary directory
-mkdir -p nokia_rx51_tmp
-cd nokia_rx51_tmp
-
-test -f mkimage || ln -s ../tools/mkimage .
-test -f u-boot.bin || ln -s ../u-boot.bin .
-test -f u-boot-ubifs.bin || ln -s ../u-boot-ubifs.bin .
-
-echo
-echo "=========================================================================="
-echo "========== Downloading and compiling qemu from qemu-linaro fork =========="
-echo "=========================================================================="
-echo
-
-# Download and compile linaro version qemu which has support for n900 machine
-# Last working commit is 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1
-if ! test -f qemu-system-arm; then
- test -d qemu-linaro || git clone https://git.linaro.org/qemu/qemu-linaro.git
- cd qemu-linaro
- git checkout 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1
- ./configure --enable-system --target-list=arm-softmmu --python=/usr/bin/python2.7 --disable-sdl --disable-gtk --disable-curses --audio-drv-list= --audio-card-list= --disable-werror --disable-xen --disable-xen-pci-passthrough --disable-brlapi --disable-vnc --disable-curl --disable-slirp --disable-kvm --disable-user --disable-linux-user --disable-bsd-user --disable-guest-base --disable-uuid --disable-vde --disable-linux-aio --disable-cap-ng --disable-attr --disable-blobs --disable-docs --disable-spice --disable-libiscsi --disable-smartcard-nss --disable-usb-redir --disable-guest-agent --disable-seccomp --disable-glusterfs --disable-nptl --disable-fdt
- make -j4
- cd ..
- ln -s qemu-linaro/arm-softmmu/qemu-system-arm .
-fi
-
-echo
-echo "==================================================="
-echo "========== Downloading external binaries =========="
-echo "==================================================="
-echo
-
-# Download qflasher and nolo images
-# This is proprietary qemu flasher tool with first stage images, but license allows non-commercial redistribution
-if ! test -f qflasher || ! test -f xloader-qemu.bin || ! test -f secondary-qemu.bin; then
- test -f qemu-n900.tar.gz || wget -c http://repository.maemo.org/qemu-n900/qemu-n900.tar.gz
- tar -xf qemu-n900.tar.gz
-fi
-
-# Download Maemo script u-boot-gen-combined
-if ! test -f u-boot-gen-combined; then
- test -d u-boot-maemo || git clone https://github.com/pali/u-boot-maemo.git
- chmod +x u-boot-maemo/debian/u-boot-gen-combined
- ln -s u-boot-maemo/debian/u-boot-gen-combined .
-fi
-
-# Download Maemo fiasco kernel
-if ! test -d kernel_2.6.28; then
- test -f kernel_2.6.28-20103103+0m5_armel.deb || wget -c http://repository.maemo.org/pool/maemo5.0/free/k/kernel/kernel_2.6.28-20103103+0m5_armel.deb
- dpkg -x kernel_2.6.28-20103103+0m5_armel.deb kernel_2.6.28
-fi
-
-# Download Maemo libc
-if ! test -d libc6_2.5.1; then
- test -f libc6_2.5.1-1eglibc27+0m5_armel.deb || wget -c http://repository.maemo.org/pool/maemo5.0/free/g/glibc/libc6_2.5.1-1eglibc27+0m5_armel.deb
- dpkg -x libc6_2.5.1-1eglibc27+0m5_armel.deb libc6_2.5.1
-fi
-
-# Download Maemo busybox
-if ! test -d busybox_1.10.2; then
- test -f busybox_1.10.2.legal-1osso30+0m5_armel.deb || wget -c http://repository.maemo.org/pool/maemo5.0/free/b/busybox/busybox_1.10.2.legal-1osso30+0m5_armel.deb
- dpkg -x busybox_1.10.2.legal-1osso30+0m5_armel.deb busybox_1.10.2
-fi
-
-echo
-echo "======================================="
-echo "========== Generating images =========="
-echo "======================================="
-echo
-
-# Generate kernel image in zImage and uImage format from FIASCO format
-dd if=kernel_2.6.28/boot/zImage-2.6.28-20103103+0m5.fiasco of=zImage-2.6.28-omap1 skip=95 bs=1
-./mkimage -A arm -O linux -T kernel -C none -a 80008000 -e 80008000 -n zImage-2.6.28-omap1 -d zImage-2.6.28-omap1 uImage-2.6.28-omap1
-
-# Generate rootfs directory
-mkdir -p rootfs
-mkdir -p rootfs/dev/
-mkdir -p rootfs/bin/
-mkdir -p rootfs/sbin/
-mkdir -p rootfs/lib/
-cp -a busybox_1.10.2/bin/busybox rootfs/bin/
-cp -a libc6_2.5.1/lib/ld-linux.so.3 rootfs/lib/
-cp -a libc6_2.5.1/lib/ld-2.5.so rootfs/lib/
-cp -a libc6_2.5.1/lib/libc.so.6 rootfs/lib/
-cp -a libc6_2.5.1/lib/libc-2.5.so rootfs/lib/
-cp -a libc6_2.5.1/lib/libcrypt.so.1 rootfs/lib/
-cp -a libc6_2.5.1/lib/libcrypt-2.5.so rootfs/lib/
-test -f rootfs/bin/sh || ln -sf busybox rootfs/bin/sh
-test -f rootfs/sbin/poweroff || ln -sf ../bin/busybox rootfs/sbin/poweroff
-cat > rootfs/sbin/preinit << EOF
-#!/bin/sh
-echo
-echo "Successfully booted"
-echo
-/sbin/poweroff -f
-EOF
-chmod +x rootfs/sbin/preinit
-
-# Generate ubifs image from rootfs directory
-# NOTE: Character device on host filesystem can be created only by root
-# But we do not need it on host filesystem, just in ubifs image
-# So run mknod and mkfs.ubifs commands under fakeroot program
-# which via LD_PRELOAD simulate mknod() and stat() functions
-# so mkfs.ubifs will see dev/console as character device and
-# put it correctly as character device into final ubifs image
-# Therefore we can run whole script as non-root nobody user
-fakeroot sh -c '
- rm -f rootfs/dev/console;
- mknod rootfs/dev/console c 5 1;
- /usr/sbin/mkfs.ubifs -m 2048 -e 129024 -c 2047 -r rootfs ubifs.img;
-'
-
-# Generate ubi image with rootfs on first volume
-cat > ubi.ini << EOF
-[rootfs]
-mode=ubi
-image=ubifs.img
-vol_id=0
-vol_size=230MiB # 1870 LEBs
-vol_type=dynamic
-vol_name=rootfs
-vol_alignment=1
-vol_flags=autoresize
-EOF
-/usr/sbin/ubinize -o ubi.img -p 128KiB -m 2048 -s 512 ubi.ini
-
-# Generate ubi image with rootfs on first volume and kernel in zImage format on second volume for UBI booting
-cp ubi.ini ubi_with_kernel.ini
-cat >> ubi_with_kernel.ini << EOF
-[kernel]
-mode=ubi
-image=zImage-2.6.28-omap1
-vol_id=1
-vol_size=2MiB
-vol_type=dynamic
-vol_name=kernel
-vol_alignment=1
-EOF
-/usr/sbin/ubinize -o ubi_with_kernel.img -p 128KiB -m 2048 -s 512 ubi_with_kernel.ini
-
-# Generate bootmenu for U-Boot serial console testing
-cat > bootmenu_uboot << EOF
-setenv bootmenu_0 'Serial console test=echo; echo "Testing serial console"; echo; echo "Successfully booted"; echo; poweroff';
-setenv bootmenu_1;
-setenv bootmenu_delay 1;
-setenv bootdelay 1;
-EOF
-./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu_uboot -d bootmenu_uboot bootmenu_uboot.scr
-
-# Generate bootmenu for eMMC booting (uImage)
-cat > bootmenu_emmc << EOF
-setenv bootmenu_0 'uImage-2.6.28-omap1 from eMMC=setenv mmcnum 1; setenv mmcpart 1; setenv mmctype fat; setenv bootargs; setenv setup_omap_atag 1; setenv mmckernfile uImage-2.6.28-omap1; run trymmckernboot';
-setenv bootmenu_1;
-setenv bootmenu_delay 1;
-setenv bootdelay 1;
-EOF
-./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu_emmc -d bootmenu_emmc bootmenu_emmc.scr
-
-# Generate bootmenu for eMMC booting (zImage)
-cat > bootmenu_emmc2 << EOF
-setenv bootmenu_0 'zImage-2.6.28-omap1 from eMMC=setenv mmcnum 1; setenv mmcpart 1; setenv mmctype fat; setenv bootargs; setenv setup_omap_atag 1; setenv mmckernfile zImage-2.6.28-omap1; run trymmckernboot';
-setenv bootmenu_1;
-setenv bootmenu_delay 1;
-setenv bootdelay 1;
-EOF
-./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu_emmc2 -d bootmenu_emmc2 bootmenu_emmc2.scr
-
-# Generate bootmenu for OneNAND booting (uImage)
-cat > bootmenu_nand << EOF
-setenv bootmenu_0 'uImage-2.6.28-omap1 from OneNAND=setenv bootargs; setenv setup_omap_atag 1; mtd read initfs \${kernaddr} && bootm \${kernaddr}';
-setenv bootmenu_1;
-setenv bootmenu_delay 1;
-setenv bootdelay 1;
-EOF
-./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu_nand -d bootmenu_nand bootmenu_nand.scr
-
-# Generate bootmenu for UBI booting (zImage)
-cat > bootmenu_ubi << EOF
-setenv bootmenu_0 'zImage-2.6.28-omap1 from UBI=setenv bootargs; setenv setup_omap_atag 1; ubi part rootfs && ubi read \${kernaddr} kernel && bootz \${kernaddr}';
-setenv bootmenu_1;
-setenv bootmenu_delay 1;
-setenv bootdelay 1;
-EOF
-./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu_ubi -d bootmenu_ubi bootmenu_ubi.scr
-
-# Generate bootmenu for default booting
-cat > bootmenu_default << EOF
-setenv bootmenu_delay 1;
-setenv bootdelay 1;
-EOF
-./mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n bootmenu_default -d bootmenu_default bootmenu_default.scr
-
-# Generate combined image from u-boot and Maemo fiasco kernel
-./u-boot-gen-combined u-boot.bin zImage-2.6.28-omap1 combined_zimage.bin
-./u-boot-gen-combined u-boot.bin uImage-2.6.28-omap1 combined_uimage.bin
-
-# Generate combined hack image from u-boot and Maemo fiasco kernel (kernel starts at 2MB offset and qflasher puts 2kB header before supplied image)
-cp u-boot.bin combined_hack.bin
-dd if=uImage-2.6.28-omap1 of=combined_hack.bin bs=1024 seek=$((2048-2))
-
-# Generate FAT32 eMMC image for U-Boot serial console testing
-truncate -s 50MiB emmc_uboot.img
-mformat -m 0xf8 -F -h 4 -s 16 -c 1 -t $((50*1024*1024/(4*16*512))) :: -i emmc_uboot.img
-mcopy bootmenu_uboot.scr ::/bootmenu.scr -i emmc_uboot.img
-
-# Generate FAT32 eMMC image for eMMC booting (uImage)
-truncate -s 50MiB emmc_emmc.img
-mformat -m 0xf8 -F -h 4 -s 16 -c 1 -t $((50*1024*1024/(4*16*512))) :: -i emmc_emmc.img
-mcopy uImage-2.6.28-omap1 ::/uImage-2.6.28-omap1 -i emmc_emmc.img
-mcopy bootmenu_emmc.scr ::/bootmenu.scr -i emmc_emmc.img
-
-# Generate FAT32 eMMC image for eMMC booting (zImage)
-truncate -s 50MiB emmc_emmc2.img
-mformat -m 0xf8 -F -h 4 -s 16 -c 1 -t $((50*1024*1024/(4*16*512))) :: -i emmc_emmc2.img
-mcopy zImage-2.6.28-omap1 ::/zImage-2.6.28-omap1 -i emmc_emmc2.img
-mcopy bootmenu_emmc2.scr ::/bootmenu.scr -i emmc_emmc2.img
-
-# Generate FAT32 eMMC image for OneNAND booting (uImage)
-truncate -s 50MiB emmc_nand.img
-mformat -m 0xf8 -F -h 4 -s 16 -c 1 -t $((50*1024*1024/(4*16*512))) :: -i emmc_nand.img
-mcopy bootmenu_nand.scr ::/bootmenu.scr -i emmc_nand.img
-
-# Generate FAT32 eMMC image for UBI booting (zImage)
-truncate -s 50MiB emmc_ubi.img
-mformat -m 0xf8 -F -h 4 -s 16 -c 1 -t $((50*1024*1024/(4*16*512))) :: -i emmc_ubi.img
-mcopy bootmenu_ubi.scr ::/bootmenu.scr -i emmc_ubi.img
-
-# Generate FAT32 eMMC image for default booting
-truncate -s 50MiB emmc_default.img
-mformat -m 0xf8 -F -h 4 -s 16 -c 1 -t $((50*1024*1024/(4*16*512))) :: -i emmc_default.img
-mcopy bootmenu_default.scr ::/bootmenu.scr -i emmc_default.img
-
-# Generate MTD image for U-Boot serial console testing
-rm -f mtd_uboot.img
-./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k u-boot.bin -m rx51 -o mtd_uboot.img
-
-# Generate MTD image for RAM booting from bootloader nolo images, compiled image and rootfs image
-rm -f mtd_ram.img
-./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k combined_uimage.bin -r ubi.img -m rx51 -o mtd_ram.img
-rm -f mtd_ram2.img
-./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k combined_zimage.bin -r ubi.img -m rx51 -o mtd_ram2.img
-
-# Generate MTD image for eMMC booting from bootloader nolo images, u-boot image and rootfs image
-rm -f mtd_emmc.img
-./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k u-boot.bin -r ubi.img -m rx51 -o mtd_emmc.img
-
-# Generate MTD image for OneNAND booting from bootloader nolo images, combined hacked image and rootfs image
-# Kernel image is put into initfs area, but qflasher reject to copy kernel image into initfs area because it does not have initfs signature
-# This is hack to workaround this problem, tell qflasher that kernel area for u-boot is bigger and put big combined hacked image (u-boot + kernel with correct offset)
-rm -f mtd_nand.img
-./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k combined_hack.bin -r ubi.img -m rx51 -p k=4094,i=2 -o mtd_nand.img
-
-# Generate MTD image for UBI booting from bootloader nolo images, u-boot image with UBI/UBIFS support and rootfs image with kernel volume
-rm -f mtd_ubi.img
-./qflasher -v -x xloader-qemu.bin -s secondary-qemu.bin -k u-boot-ubifs.bin -r ubi_with_kernel.img -m rx51 -o mtd_ubi.img
-
-echo
-echo "======================================================"
-echo "========== Running test images in n900 qemu =========="
-echo "======================================================"
-echo
-
-# Run MTD image in qemu and wait for 300s if U-Boot prints testing string to serial console and poweroff
-rm -f qemu_uboot.log
-./qemu-system-arm -M n900 -mtdblock mtd_uboot.img -sd emmc_uboot.img -serial /dev/stdout -display none > qemu_uboot.log &
-qemu_pid=$!
-tail -F qemu_uboot.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-# Run MTD image in qemu and wait for 300s if uImage kernel from RAM is correctly booted
-rm -f qemu_ram.log
-./qemu-system-arm -M n900 -mtdblock mtd_ram.img -serial /dev/stdout -display none > qemu_ram.log &
-qemu_pid=$!
-tail -F qemu_ram.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-# Run MTD image in qemu and wait for 300s if zImage kernel from RAM is correctly booted
-rm -f qemu_ram2.log
-./qemu-system-arm -M n900 -mtdblock mtd_ram2.img -sd emmc_default.img -serial /dev/stdout -display none > qemu_ram2.log &
-qemu_pid=$!
-tail -F qemu_ram2.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-# Run MTD image in qemu and wait for 300s if uImage kernel from eMMC is correctly booted
-rm -f qemu_emmc.log
-./qemu-system-arm -M n900 -mtdblock mtd_emmc.img -sd emmc_emmc.img -serial /dev/stdout -display none > qemu_emmc.log &
-qemu_pid=$!
-tail -F qemu_emmc.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-# Run MTD image in qemu and wait for 300s if zImage kernel from eMMC is correctly booted
-rm -f qemu_emmc2.log
-./qemu-system-arm -M n900 -mtdblock mtd_emmc.img -sd emmc_emmc2.img -serial /dev/stdout -display none > qemu_emmc2.log &
-qemu_pid=$!
-tail -F qemu_emmc2.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-# Run MTD image in qemu and wait for 300s if kernel from OneNAND is correctly booted
-rm -f qemu_nand.log
-./qemu-system-arm -M n900 -mtdblock mtd_nand.img -sd emmc_nand.img -serial /dev/stdout -display none > qemu_nand.log &
-qemu_pid=$!
-tail -F qemu_nand.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-# Run MTD image in qemu and wait for 300s if kernel from UBI is correctly booted
-rm -f qemu_ubi.log
-./qemu-system-arm -M n900 -mtdblock mtd_ubi.img -sd emmc_ubi.img -serial /dev/stdout -display none > qemu_ubi.log &
-qemu_pid=$!
-tail -F qemu_ubi.log &
-tail_pid=$!
-sleep 300 &
-sleep_pid=$!
-wait -n $sleep_pid $qemu_pid || true
-kill -9 $tail_pid $sleep_pid $qemu_pid 2>/dev/null || true
-wait || true
-
-echo
-echo "============================="
-echo "========== Results =========="
-echo "============================="
-echo
-
-if grep -q 'Successfully booted' qemu_uboot.log; then echo "U-Boot serial console is working"; else echo "U-Boot serial console test failed"; fi
-if grep -q 'Successfully booted' qemu_ram.log; then echo "Kernel (uImage) was successfully booted from RAM"; else echo "Failed to boot kernel (uImage) from RAM"; fi
-if grep -q 'Successfully booted' qemu_ram2.log; then echo "Kernel (zImage) was successfully booted from RAM"; else echo "Failed to boot kernel (zImage) from RAM"; fi
-if grep -q 'Successfully booted' qemu_emmc.log; then echo "Kernel (uImage) was successfully booted from eMMC"; else echo "Failed to boot kernel (uImage) from eMMC"; fi
-if grep -q 'Successfully booted' qemu_emmc2.log; then echo "Kernel (zImage) was successfully booted from eMMC"; else echo "Failed to boot kernel (zImage) from eMMC"; fi
-if grep -q 'Successfully booted' qemu_nand.log; then echo "Kernel (uImage) was successfully booted from OneNAND"; else echo "Failed to boot kernel (uImage) from OneNAND"; fi
-if grep -q 'Successfully booted' qemu_ubi.log; then echo "Kernel (zImage) was successfully booted from UBI"; else echo "Failed to boot kernel (zImage) from UBI"; fi
-
-echo
-
-if grep -q 'Successfully booted' qemu_uboot.log && grep -q 'Successfully booted' qemu_ram.log && grep -q 'Successfully booted' qemu_ram2.log && grep -q 'Successfully booted' qemu_emmc.log && grep -q 'Successfully booted' qemu_emmc2.log && grep -q 'Successfully booted' qemu_nand.log && grep -q 'Successfully booted' qemu_ubi.log; then
- echo "All tests passed"
- exit 0
-else
- echo "Some tests failed"
- exit 1
-fi
diff --git a/tools/docker/Dockerfile b/tools/docker/Dockerfile
index 3d2b64a..ff16829 100644
--- a/tools/docker/Dockerfile
+++ b/tools/docker/Dockerfile
@@ -185,27 +185,6 @@ RUN git clone https://gitlab.com/qemu-project/qemu.git /tmp/qemu && \
make -j$(nproc) all install && \
rm -rf /tmp/qemu
-# Build QEMU supporting Nokia n900 emulation
-RUN mkdir -p /opt/nokia && \
- cd /tmp && \
- git clone https://git.linaro.org/qemu/qemu-linaro.git && \
- cd /tmp/qemu-linaro && \
- git checkout 8f8d8e0796efe1a6f34cdd83fb798f3c41217ec1 && \
- ./configure --enable-system --target-list=arm-softmmu \
- --python=/usr/bin/python2.7 --disable-sdl --disable-gtk \
- --disable-curses --audio-drv-list= --audio-card-list= \
- --disable-werror --disable-xen --disable-xen-pci-passthrough \
- --disable-brlapi --disable-vnc --disable-curl --disable-slirp \
- --disable-kvm --disable-user --disable-linux-user --disable-bsd-user \
- --disable-guest-base --disable-uuid --disable-vde --disable-linux-aio \
- --disable-cap-ng --disable-attr --disable-blobs --disable-docs \
- --disable-spice --disable-libiscsi --disable-smartcard-nss \
- --disable-usb-redir --disable-guest-agent --disable-seccomp \
- --disable-glusterfs --disable-nptl --disable-fdt && \
- make -j$(nproc) && \
- cp /tmp/qemu-linaro/arm-softmmu/qemu-system-arm /opt/nokia && \
- rm -rf /tmp/qemu-linaro
-
# Build genimage (required by some targets to generate disk images)
RUN wget -O - https://github.com/pengutronix/genimage/releases/download/v14/genimage-14.tar.xz | tar -C /tmp -xJ && \
cd /tmp/genimage-14 && \
@@ -249,16 +228,6 @@ RUN mkdir /tmp/trace && \
sudo make install && \
rm -rf /tmp/trace
-# Files to run Nokia RX-51 (aka N900) tests
-RUN mkdir -p /opt/nokia && \
- cd /opt/nokia && \
- wget https://raw.githubusercontent.com/pali/u-boot-maemo/master/debian/u-boot-gen-combined && \
- chmod 0755 u-boot-gen-combined && \
- wget http://repository.maemo.org/qemu-n900/qemu-n900.tar.gz && \
- wget http://repository.maemo.org/pool/maemo5.0/free/k/kernel/kernel_2.6.28-20103103+0m5_armel.deb && \
- wget http://repository.maemo.org/pool/maemo5.0/free/g/glibc/libc6_2.5.1-1eglibc27+0m5_armel.deb && \
- wget http://repository.maemo.org/pool/maemo5.0/free/b/busybox/busybox_1.10.2.legal-1osso30+0m5_armel.deb
-
# Create our user/group
RUN echo uboot ALL=NOPASSWD: ALL > /etc/sudoers.d/uboot
RUN useradd -m -U uboot