]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Merge tag 'u-boot-imx-20230905' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx
authorTom Rini <trini@konsulko.com>
Tue, 5 Sep 2023 13:05:16 +0000 (09:05 -0400)
committerTom Rini <trini@konsulko.com>
Tue, 5 Sep 2023 13:05:16 +0000 (09:05 -0400)
Fixes for release
-----------------

- imx9: fix DRAM calculation
- thermal: fixes
- fixed for DM, DH and Gateworks boards

CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/17639

47 files changed:
.azure-pipelines.yml
.gitlab-ci.yml
Kconfig
MAINTAINERS
Makefile
arch/arm/Kconfig
arch/arm/mach-omap2/omap3/Kconfig
arch/riscv/cpu/jh7110/Kconfig
arch/riscv/dts/jh7110.dtsi
arch/riscv/include/asm/sbi.h
arch/riscv/lib/sbi.c
board/CZ.NIC/turris_mox/MAINTAINERS
board/CZ.NIC/turris_omnia/MAINTAINERS
board/nokia/rx51/Kconfig [deleted file]
board/nokia/rx51/MAINTAINERS [deleted file]
board/nokia/rx51/Makefile [deleted file]
board/nokia/rx51/lowlevel_init.S [deleted file]
board/nokia/rx51/rx51.c [deleted file]
board/nokia/rx51/tag_omap.h [deleted file]
board/raspberrypi/rpi/rpi.env [new file with mode: 0644]
board/starfive/visionfive2/visionfive2-i2c-eeprom.c
common/dlmalloc.c
common/spl/spl_opensbi.c
configs/nokia_rx51_defconfig [deleted file]
configs/rpi_0_w_defconfig
configs/rpi_2_defconfig
configs/rpi_3_32b_defconfig
configs/rpi_3_b_plus_defconfig
configs/rpi_3_defconfig
configs/rpi_4_32b_defconfig
configs/rpi_4_defconfig
configs/rpi_arm64_defconfig
configs/rpi_defconfig
configs/starfive_visionfive2_defconfig
doc/board/index.rst
doc/board/nokia/index.rst [deleted file]
doc/board/nokia/rx51.rst [deleted file]
doc/board/starfive/visionfive2.rst
doc/develop/release_cycle.rst
drivers/serial/Kconfig
drivers/serial/serial_sbi.c
drivers/timer/riscv_timer.c
include/configs/nokia_rx51.h [deleted file]
include/configs/rpi.h
include/spl.h
test/nokia_rx51_test.sh [deleted file]
tools/docker/Dockerfile

index 0304be8a60ffa82b4d240e8c78642665a301dd73..da701e42dac59d46265b6f3b19263c6bf8644739 100644 (file)
@@ -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:
index 1df13261c2d2b3bb23c8e7f2d7ed151f1529f579..2ceeb947f7ce16ed86c9dfbbcf576a5485cece77 100644 (file)
@@ -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 91170bf8d223299740cb2a4740d3490625e55711..6ba605a56415c16fc085f6257f9b2c64b8457290 100644 (file)
--- 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
index 17309e25f2846230ee651250bc18fccfaa21656a..0a10a436bcec41a729990c603c8021abfd08b726 100644 (file)
@@ -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
index 033daf1695c0ae505e665b5206db4a0bc23584e8..9be24c4ec6138a6e614bca84beca897dd8d4607c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 VERSION = 2023
 PATCHLEVEL = 10
 SUBLEVEL =
-EXTRAVERSION = -rc3
+EXTRAVERSION = -rc4
 NAME =
 
 # *DOCUMENTATION*
index 97c25b4f146d8d7d822c736c8160b393f7223959..328e2ddc33af55449322b62c4caff7a7a799fdf1 100644 (file)
@@ -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
index 671e4791c67f2eeae4bfc59c92043054a7051ec2..3e3e7bd259eec67c5b0eb9d53d01ca4b11c8299a 100644 (file)
@@ -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
index 8469ee7de5dd8d71aa37330373fc290336108743..e5549a01b83671b4cdeb9222a9e59fa69181cfd6 100644 (file)
@@ -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
index 081b833331bc39c1d71455e9ec43946a7c99cf82..ec237a46ffbaad6e67ca0566b993b4d2b2785fed 100644 (file)
                };
        };
 
+       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";
index 009a26885c6ff1138bf6fbe17b650f24a497b61d..bf4c9af6220216b21db3ef061a02c7fe5d35722a 100644 (file)
@@ -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
index 8724e3a4600fca93fda445f48194c575b274c19e..55a3bc3b5c9d47ab0bfaccc813bdc36a815a76d5 100644 (file)
@@ -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
 
 /**
index b29ce92ccd77d9714fdbf4113ae7af588a863518..5f0551e2e1dcea92760bd5953029d4df534a2565 100644 (file)
@@ -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/
index 8bff97cc2737366c25e827974654d60a4e8b7b34..effce8a753b443bb7db08339525bcb90d808d995 100644 (file)
@@ -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 (file)
index c884543..0000000
+++ /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 (file)
index 25f8b3c..0000000
+++ /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 (file)
index 842f9e6..0000000
+++ /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 (file)
index 44f32f1..0000000
+++ /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 (file)
index 238b963..0000000
+++ /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 (file)
index b99d6b7..0000000
+++ /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 (file)
index 0000000..3022828
--- /dev/null
@@ -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
index befe7888c400a38fb5f047f22985161b2b8da695..c334d98cf6e5d479a2485dcb582ce8b0587e2977 100644 (file)
@@ -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);
 
        /**
index 0f9b7262d51234aff2e4a77adfe1100a27d97ddb..dcecdb8623c814ba664f0c151e70bbdac8610501 100644 (file)
@@ -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)
     {
index b0f40076c34533bdfa18bc2ae95cc9aead7ce6b4..e2aaa460468c9c92502567916421799945cf3408 100644 (file)
@@ -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 (file)
index 8e55069..0000000
+++ /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
index 5da334a8bcf98d8089326a7308a63d45b86c7ead..3167bfbe48f72cd08cebcf528e0004a5f67e6873 100644 (file)
@@ -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
index 9908621607121dd1442dbeea37e168851cec0179..883dab16170227c16d713c37867f482f931800e0 100644 (file)
@@ -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
index 80885aa9488d28e9015a6fe082cfac93e07b52a3..5ff7d987a4313b6737327e881f7a5244fbd7970f 100644 (file)
@@ -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
index 0acce8b883f84a71ba2db1fbb42a1d0f82e6d1fb..31f2a6eb310c5d72183f30af8d71cf50dfe11a05 100644 (file)
@@ -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
index bb6fe128061b540ec72ece09bbaf3f51277a9a2e..fa6e1507d64090d641d9c8cb4ccf6d2a49d264eb 100644 (file)
@@ -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
index f6213340971e16c956047e36e006529fcc013df3..55bf6c0770f0d161e2c3b9dd3a5e2d1a7975eafc 100644 (file)
@@ -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
index bbc0fd6c649a376a02915ac826fb34940cef3abf..6679cce9a1652b85fa296272ce8e2878ae64075c 100644 (file)
@@ -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
index 5d9a273cb92082f823a08c696b9bfc4c58db47e6..26e29ffb5a1f7b1ebcb8e8df32ed638fb9b84712 100644 (file)
@@ -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
index 550b8dcb9587a0c630ddec04e4715a70daa47876..0ac5efec717b73ea60cf494963bf27424aaac252 100644 (file)
@@ -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
index e9b63e5b847224d04967075a5b26d9dc036211ed..9df6fcee0f50e122189ce00a7ecdaa58ddf39aba 100644 (file)
@@ -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
index 0194f0aaa3e2908f2d1ea8238184010ef97b7718..35dd3bcf5fad23e8e940a219870fd63b0fe9bb35 100644 (file)
@@ -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 (file)
index b68c3c6..0000000
+++ /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 (file)
index 93502e2..0000000
+++ /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.
index 941899a0a4e98cb1d367cd93ac647b86e1261067..460f23aec3a169a485bfe633559507bd090a4061 100644 (file)
@@ -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
 ---------------------------------
index 50d33df4211efcba9cf9d4647a2425dc614e4c23..346cf29ef39ffcd520c7a4bb19eef0bc6714e201 100644 (file)
@@ -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.
 
index a1e089962a91b79878c2684fcb2e2906c3a8dc2a..8c54bc9c4702d7023e89570d715c45613a5d47eb 100644 (file)
@@ -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"
index b9f35ed36e681135e631539fa4da3a99f9898f73..a51a96c1ef045f5f6354f2ddf71fa5576aa978dc 100644 (file)
@@ -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
index 3627ed79b8196b11d129cea6872a1bafbb3139af..28a6a6870b8194b9c4443181665cac4cfb0cf2fe 100644 (file)
@@ -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 (file)
index 54eea32..0000000
+++ /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 */
index 4da982f73578e94a224b2b4f6961120ebd662504..8e56bdc84a8955984c64547b66ec576b0941e30c 100644 (file)
@@ -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
  */
 #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
index 92bcaa90a4afe4b3d51217d27b7173feeef74b03..93e906431e7dc093d5d78e8dd1de1fa55c2bcccb 100644 (file)
@@ -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 (executable)
index dca9ef3..0000000
+++ /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
index 3d2b64a355f3f8cbcaf841106ec59edded2977e6..ff16829887d954715ae9e27997e97cd713e5e907 100644 (file)
@@ -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