U-Boot
Threads by month
- ----- 2025 -----
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2000 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
May 2021
- 191 participants
- 563 discussions

17 Jun '21
From: Wasim Khan <wasim.khan(a)nxp.com>
lx2160ardb Rev-C board has i2c node for thermal monitors
connected to different chip offset.
Add device tree fixup to use lx2160ardb dts and apply
thernal node fixups for lx2160ardb Rev-C board.
Signed-off-by: Wasim Khan <wasim.khan(a)nxp.com>
---
board/freescale/lx2160a/lx2160a.c | 119 +++++++++++++++++++++++++++++-
1 file changed, 118 insertions(+), 1 deletion(-)
diff --git a/board/freescale/lx2160a/lx2160a.c b/board/freescale/lx2160a/lx2160a.c
index 47a7024f33..8f75b48f95 100644
--- a/board/freescale/lx2160a/lx2160a.c
+++ b/board/freescale/lx2160a/lx2160a.c
@@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+
/*
- * Copyright 2018-2020 NXP
+ * Copyright 2018-2021 NXP
*/
#include <common.h>
@@ -726,6 +726,116 @@ void board_quiesce_devices(void)
}
#endif
+#if CONFIG_IS_ENABLED(TARGET_LX2160ARDB)
+int fdt_fixup_add_thermal(void *blob, int mux_node, int channel, int reg)
+{
+ int err;
+ int noff;
+ int offset;
+ char channel_node_name[50];
+ char thermal_node_name[50];
+ u32 phandle;
+
+ snprintf(channel_node_name, sizeof(channel_node_name),
+ "i2c@%x", channel);
+ debug("channel_node_name = %s\n", channel_node_name);
+
+ snprintf(thermal_node_name, sizeof(thermal_node_name),
+ "temperature-sensor@%x", reg);
+ debug("thermal_node_name = %s\n", thermal_node_name);
+
+ err = fdt_increase_size(blob, 200);
+ if (err) {
+ printf("fdt_increase_size: err=%s\n", fdt_strerror(err));
+ return err;
+ }
+
+ noff = fdt_subnode_offset(blob, mux_node, (const char *)
+ channel_node_name);
+ if (noff < 0) {
+ /* channel node not found - create it */
+ noff = fdt_add_subnode(blob, mux_node, channel_node_name);
+ if (noff < 0) {
+ printf("fdt_add_subnode: err=%s\n", fdt_strerror(err));
+ return err;
+ }
+ fdt_setprop_u32 (blob, noff, "#address-cells", 1);
+ fdt_setprop_u32 (blob, noff, "#size-cells", 0);
+ fdt_setprop_u32 (blob, noff, "reg", channel);
+ }
+
+ /* Create thermal node*/
+ offset = fdt_add_subnode(blob, noff, thermal_node_name);
+ fdt_setprop(blob, offset, "compatible", "nxp,sa56004",
+ strlen("nxp,sa56004") + 1);
+ fdt_setprop_u32 (blob, offset, "reg", reg);
+
+ /* fixup phandle*/
+ noff = fdt_node_offset_by_compatible(blob, -1, "regulator-fixed");
+ if (noff < 0) {
+ printf("%s : failed to get phandle\n", __func__);
+ return noff;
+ }
+ phandle = fdt_get_phandle(blob, noff);
+ fdt_setprop_u32 (blob, offset, "vcc-supply", phandle);
+
+ return 0;
+}
+
+void fdt_fixup_delete_thermal(void *blob, int mux_node, int channel, int reg)
+{
+ int node;
+ int value;
+ int err;
+ int subnode;
+
+ fdt_for_each_subnode(subnode, blob, mux_node) {
+ value = fdtdec_get_uint(blob, subnode, "reg", -1);
+ if (value == channel) {
+ /* delete thermal node */
+ fdt_for_each_subnode(node, blob, subnode) {
+ value = fdtdec_get_uint(blob, node, "reg", -1);
+ err = fdt_node_check_compatible(blob, node,
+ "nxp,sa56004");
+ if (!err && value == reg) {
+ fdt_del_node(blob, node);
+ break;
+ }
+ }
+ }
+ }
+}
+
+void fdt_fixup_i2c_thermal_node(void *blob)
+{
+ int i2coffset;
+ int mux_node;
+ int reg;
+ int err;
+
+ i2coffset = fdt_node_offset_by_compat_reg(blob, "fsl,vf610-i2c",
+ 0x2000000);
+ if (i2coffset != -FDT_ERR_NOTFOUND) {
+ fdt_for_each_subnode(mux_node, blob, i2coffset) {
+ reg = fdtdec_get_uint(blob, mux_node, "reg", -1);
+ err = fdt_node_check_compatible(blob, mux_node,
+ "nxp,pca9547");
+ if (!err && reg == 0x77) {
+ fdt_fixup_delete_thermal(blob, mux_node,
+ 0x3, 0x4d);
+ err = fdt_fixup_add_thermal(blob, mux_node,
+ 0x3, 0x48);
+ if (err)
+ printf("%s: Add thermal node failed\n",
+ __func__);
+ }
+ }
+ } else {
+ printf("%s: i2c node not found\n", __func__);
+ }
+}
+#endif
+
#ifdef CONFIG_OF_BOARD_SETUP
int ft_board_setup(void *blob, struct bd_info *bd)
{
@@ -737,6 +847,7 @@ int ft_board_setup(void *blob, struct bd_info *bd)
u64 mc_memory_base = 0;
u64 mc_memory_size = 0;
u16 total_memory_banks;
+ u8 board_rev;
ft_cpu_setup(blob, bd);
@@ -791,6 +902,12 @@ int ft_board_setup(void *blob, struct bd_info *bd)
#endif
fdt_fixup_icid(blob);
+if (IS_ENABLED(CONFIG_TARGET_LX2160ARDB)) {
+ board_rev = (QIXIS_READ(arch) & 0xf) - 1 + 'A';
+ if (board_rev == 'C')
+ fdt_fixup_i2c_thermal_node(blob);
+ }
+
return 0;
}
#endif
--
2.25.1
3
3
Add support for disabling AHB bus and read entire flash contents via IP
bus only. Please note, this enables IP bus read using a quirk which can
be enabled directly in device-type data or in existence of an errata
where AHB bus may need to be disabled.
Signed-off-by: Kuldeep Singh <kuldeep.singh(a)nxp.com>
---
drivers/spi/nxp_fspi.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c
index 6c5bad4c2c..e1b3d2d77b 100644
--- a/drivers/spi/nxp_fspi.c
+++ b/drivers/spi/nxp_fspi.c
@@ -304,6 +304,9 @@
#define POLL_TOUT 5000
#define NXP_FSPI_MAX_CHIPSELECT 4
+/* Access flash memory using IP bus only */
+#define FSPI_QUIRK_USE_IP_ONLY BIT(0)
+
struct nxp_fspi_devtype_data {
unsigned int rxfifo;
unsigned int txfifo;
@@ -338,6 +341,11 @@ struct nxp_fspi {
const struct nxp_fspi_devtype_data *devtype_data;
};
+static inline int needs_ip_only(struct nxp_fspi *f)
+{
+ return f->devtype_data->quirks & FSPI_QUIRK_USE_IP_ONLY;
+}
+
/*
* R/W functions for big- or little-endian registers:
* The FSPI controller's endianness is independent of
@@ -769,12 +777,14 @@ static int nxp_fspi_exec_op(struct spi_slave *slave,
nxp_fspi_prepare_lut(f, op);
/*
- * If we have large chunks of data, we read them through the AHB bus
- * by accessing the mapped memory. In all other cases we use
- * IP commands to access the flash.
+ * If we have large chunks of data, we read them through the AHB bus by
+ * accessing the mapped memory. In all other cases we use IP commands
+ * to access the flash. Read via AHB bus may be corrupted due to
+ * existence of an errata and therefore discard AHB read in such cases.
*/
if (op->data.nbytes > (f->devtype_data->rxfifo - 4) &&
- op->data.dir == SPI_MEM_DATA_IN) {
+ op->data.dir == SPI_MEM_DATA_IN &&
+ !needs_ip_only(f)) {
nxp_fspi_read_ahb(f, op);
} else {
if (op->data.nbytes && op->data.dir == SPI_MEM_DATA_OUT)
@@ -808,6 +818,12 @@ static int nxp_fspi_adjust_op_size(struct spi_slave *slave,
op->data.nbytes = ALIGN_DOWN(op->data.nbytes, 8);
}
+ /* Limit data bytes to RX FIFO in case of IP read only */
+ if (needs_ip_only(f) &&
+ op->data.dir == SPI_MEM_DATA_IN &&
+ op->data.nbytes > f->devtype_data->rxfifo)
+ op->data.nbytes = f->devtype_data->rxfifo;
+
return 0;
}
--
2.25.1
2
5
This board has not been converted to CONFIG_DM_USB by the deadline.
Remove it.
Cc: Pali Rohár <pali(a)kernel.org>
Signed-off-by: Tom Rini <trini(a)konsulko.com>
---
I assume you'll be trying to fix this so I've not removed all of the
test related scripts.
---
.azure-pipelines.yml | 13 -
.gitlab-ci.yml | 7 -
arch/arm/mach-omap2/omap3/Kconfig | 4 -
board/nokia/rx51/Kconfig | 12 -
board/nokia/rx51/MAINTAINERS | 8 -
board/nokia/rx51/Makefile | 7 -
board/nokia/rx51/lowlevel_init.S | 196 --------
board/nokia/rx51/rx51.c | 724 ------------------------------
board/nokia/rx51/tag_omap.h | 294 ------------
configs/nokia_rx51_defconfig | 69 ---
doc/README.nokia_rx51 | 94 ----
include/configs/nokia_rx51.h | 249 ----------
test/nokia_rx51_test.sh | 296 ------------
13 files changed, 1973 deletions(-)
delete mode 100644 board/nokia/rx51/Kconfig
delete mode 100644 board/nokia/rx51/MAINTAINERS
delete mode 100644 board/nokia/rx51/Makefile
delete mode 100644 board/nokia/rx51/lowlevel_init.S
delete mode 100644 board/nokia/rx51/rx51.c
delete mode 100644 board/nokia/rx51/tag_omap.h
delete mode 100644 configs/nokia_rx51_defconfig
delete mode 100644 doc/README.nokia_rx51
delete mode 100644 include/configs/nokia_rx51.h
delete mode 100755 test/nokia_rx51_test.sh
diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml
index 438139660219..90d5e4dc7244 100644
--- a/.azure-pipelines.yml
+++ b/.azure-pipelines.yml
@@ -160,19 +160,6 @@ jobs:
# 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: |
- ./tools/buildman/buildman --fetch-arch arm
- export PATH=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/:$PATH
- test/nokia_rx51_test.sh
-
- job: test_py
displayName: 'test.py'
pool:
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5bf6f151b4fc..95aacdd9d74d 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -163,13 +163,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:
- - ./tools/buildman/buildman --fetch-arch arm;
- export PATH=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/:$PATH;
- test/nokia_rx51_test.sh
-
# Test sandbox with test.py
sandbox test.py:
variables:
diff --git a/arch/arm/mach-omap2/omap3/Kconfig b/arch/arm/mach-omap2/omap3/Kconfig
index 81c898b66e34..3c67a334d81c 100644
--- a/arch/arm/mach-omap2/omap3/Kconfig
+++ b/arch/arm/mach-omap2/omap3/Kconfig
@@ -105,9 +105,6 @@ config TARGET_OMAP3_LOGIC
select OMAP3_GPIO_6
imply CMD_DM
-config TARGET_NOKIA_RX51
- bool "Nokia RX51"
-
config TARGET_TAO3530
bool "TAO3530"
select OMAP3_GPIO_2
@@ -160,7 +157,6 @@ source "board/timll/devkit8000/Kconfig"
source "board/ti/evm/Kconfig"
source "board/isee/igep00x0/Kconfig"
source "board/logicpd/omap3som/Kconfig"
-source "board/nokia/rx51/Kconfig"
source "board/lg/sniper/Kconfig"
endif
diff --git a/board/nokia/rx51/Kconfig b/board/nokia/rx51/Kconfig
deleted file mode 100644
index ec6a571a2263..000000000000
--- a/board/nokia/rx51/Kconfig
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_NOKIA_RX51
-
-config SYS_BOARD
- default "rx51"
-
-config SYS_VENDOR
- default "nokia"
-
-config SYS_CONFIG_NAME
- default "nokia_rx51"
-
-endif
diff --git a/board/nokia/rx51/MAINTAINERS b/board/nokia/rx51/MAINTAINERS
deleted file mode 100644
index 58b16bf9a95c..000000000000
--- a/board/nokia/rx51/MAINTAINERS
+++ /dev/null
@@ -1,8 +0,0 @@
-RX51 BOARD
-M: Pali Rohár <pali(a)kernel.org>
-S: Maintained
-F: board/nokia/rx51/
-F: include/configs/nokia_rx51.h
-F: configs/nokia_rx51_defconfig
-F: doc/README.nokia_rx51
-F: test/nokia_rx51_test.sh
diff --git a/board/nokia/rx51/Makefile b/board/nokia/rx51/Makefile
deleted file mode 100644
index 842f9e6a650e..000000000000
--- a/board/nokia/rx51/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0+
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd(a)denx.de.
-
-obj-y := rx51.o
-obj-y += lowlevel_init.o
diff --git a/board/nokia/rx51/lowlevel_init.S b/board/nokia/rx51/lowlevel_init.S
deleted file mode 100644
index 1466d976fc4b..000000000000
--- a/board/nokia/rx51/lowlevel_init.S
+++ /dev/null
@@ -1,196 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2011-2012
- * Pali Rohár <pali(a)kernel.org>
- */
-
-#include <config.h>
-
-relocaddr: /* address of this relocaddr section after coping */
- .word . /* address of section (calculated at compile time) */
-
-startaddr: /* address of u-boot after copying */
- .word CONFIG_SYS_TEXT_BASE
-
-kernaddr: /* address of kernel after copying */
- .word KERNEL_ADDRESS
-
-kernsize: /* maximal size of kernel image */
- .word KERNEL_MAXSIZE
-
-kernoffs: /* offset of kernel image in loaded u-boot */
- .word KERNEL_OFFSET
-
-imagesize: /* maximal size of image */
- .word IMAGE_MAXSIZE
-
-ih_magic: /* IH_MAGIC in big endian from include/image.h */
- .word 0x56190527
-
-/*
- * Routine: save_boot_params (called after reset from start.S)
- * Description: Copy attached kernel to address KERNEL_ADDRESS
- * Copy u-boot to address CONFIG_SYS_TEXT_BASE
- * Return to copied u-boot address
- */
-
-.global save_boot_params
-save_boot_params:
- /* Get return address */
- ldr lr, =save_boot_params_ret
-
-/* Copy valid attached kernel to address KERNEL_ADDRESS */
-
-copy_kernel_start:
- adr r0, relocaddr /* r0 - address of section relocaddr */
- ldr r1, relocaddr /* r1 - address of relocaddr after relocation */
- cmp r0, r1
-
- /* r4 - calculated offset */
- subhi r4, r0, r1
- sublo r4, r1, r0
-
- /* r0 - start of kernel before */
- ldr r0, startaddr
- addhi r0, r0, r4
- sublo r0, r0, r4
- ldr r1, kernoffs
- add 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]
-
- /* check for valid kernel uImage */
- ldr r4, [r0] /* r4 - 4 bytes header of kernel */
- ldr r5, ih_magic /* r5 - IH_MAGIC */
- cmp r4, r5
- bne copy_kernel_end /* skip if invalid image */
-
-copy_kernel_loop:
- ldmdb r1!, {r3 - r10}
- stmdb r2!, {r3 - r10}
- cmp r1, r0
- bhi copy_kernel_loop
-
-copy_kernel_end:
- mov r5, #0
- str r5, [r0] /* remove 4 bytes header of kernel */
-
-
-/* Fix u-boot code */
-
-fix_start:
- adr r0, relocaddr /* r0 - address of section relocaddr */
- ldr r1, relocaddr /* r1 - address of relocaddr after relocation */
- cmp r0, r1
-
- beq copy_uboot_end /* skip if u-boot is on correct address */
-
- /* r5 - calculated offset */
- subhi r5, r0, r1
- sublo r5, r1, r0
-
- /* r6 - maximal u-boot size */
- ldr r6, imagesize
-
- /* r1 - start of u-boot after */
- ldr r1, startaddr
-
- /* r0 - start of u-boot before */
- addhi r0, r1, r5
- sublo r0, r1, r5
-
- /* check if we need to move uboot copy code before calling it */
- cmp r5, r6
- bhi copy_uboot_start /* now coping u-boot code directly is safe */
-
-
-copy_code_start:
- /* r0 - start of u-boot before */
- /* r1 - start of u-boot after */
- /* r6 - maximal u-boot size */
-
- /* r7 - maximal kernel size */
- ldr r7, kernsize
-
- /* r4 - end of kernel before */
- add r4, r0, r6
- add r4, r4, r7
-
- /* r5 - end of u-boot after */
- ldr r5, startaddr
- add r5, r5, r6
-
- /* r2 - start of loop code after */
- cmp r4, r5 /* higher address (r4 or r5) */
- movhs r2, r4
- movlo r2, r5
-
- /* r3 - end of loop code before */
- adr r3, end
-
- /* r4 - end of loop code after */
- adr r4, copy_uboot_start
- sub r4, r3, r4
- add r4, r2, r4
-
-copy_code_loop:
- ldmdb r3!, {r7 - r10}
- stmdb r4!, {r7 - r10}
- cmp r4, r2
- bhi copy_code_loop
-
-copy_code_end:
- mov pc, r2
-
-
-/*
- * Copy u-boot to address CONFIG_SYS_TEXT_BASE
- *
- * Nokia X-Loader loading secondary image to address 0x80400000
- * NOLO loading boot image to random place, so it doesn't really
- * matter what is set in CONFIG_SYS_TEXT_BASE. We have to copy
- * u-boot to CONFIG_SYS_TEXT_BASE address.
- */
-
-copy_uboot_start:
- /* r0 - start of u-boot before */
- /* r1 - start of u-boot after */
- /* r6 - maximal u-boot size */
-
- /* r2 - end of u-boot after */
- add r2, r1, r6
-
- /* condition for copying from left to right */
- cmp r0, r1
- addlo r1, r0, r6 /* r1 - end of u-boot before */
- blo copy_uboot_loop_right
-
-copy_uboot_loop_left:
- ldmia r0!, {r3 - r10}
- stmia r1!, {r3 - r10}
- cmp r1, r2
- blo copy_uboot_loop_left
- b copy_uboot_end
-
-copy_uboot_loop_right:
- ldmdb r1!, {r3 - r10}
- stmdb r2!, {r3 - r10}
- cmp r1, r0
- bhi copy_uboot_loop_right
-
-copy_uboot_end:
- bx lr
-
-end:
diff --git a/board/nokia/rx51/rx51.c b/board/nokia/rx51/rx51.c
deleted file mode 100644
index 7bd5fbd71520..000000000000
--- a/board/nokia/rx51/rx51.c
+++ /dev/null
@@ -1,724 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * (C) Copyright 2012
- * Ивайло Димитров <freemangordon(a)abv.bg>
- *
- * (C) Copyright 2011-2012
- * Pali Rohár <pali(a)kernel.org>
- *
- * (C) Copyright 2010
- * Alistair Buxton <a.j.buxton(a)gmail.com>
- *
- * Derived from Beagle Board and 3430 SDP code:
- * (C) Copyright 2004-2008
- * Texas Instruments, <www.ti.com>
- *
- * Author :
- * Sunil Kumar <sunilsaini05(a)gmail.com>
- * Shashi Ranjan <shashiranjanmca05(a)gmail.com>
- *
- * Richard Woodruff <r-woodruff2(a)ti.com>
- * Syed Mohammed Khasim <khasim(a)ti.com>
- */
-
-#include <common.h>
-#include <dm.h>
-#include <env.h>
-#include <init.h>
-#include <watchdog.h>
-#include <malloc.h>
-#include <twl4030.h>
-#include <i2c.h>
-#include <video_fb.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;
-
-GraphicDevice gdev;
-
-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],
- CONFIG_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;
-}
-
-/*
- * Routine: get_board_revision
- * Description: Return board revision.
- */
-u32 get_board_rev(void)
-{
- return simple_strtol(hw_build_ptr, NULL, 16);
-}
-
-/*
- * 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 *)¶ms->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;
-}
-
-/*
- * Routine: video_hw_init
- * Description: Set up the GraphicDevice depending on sys_boot.
- */
-void *video_hw_init(void)
-{
- /* fill in Graphic Device */
- gdev.frameAdrs = 0x8f9c0000;
- gdev.winSizeX = 800;
- gdev.winSizeY = 480;
- gdev.gdfBytesPP = 2;
- gdev.gdfIndex = GDF_16BIT_565RGB;
- memset((void *)gdev.frameAdrs, 0, 0xbb800);
- return (void *) &gdev;
-}
-
-/*
- * 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: hw_watchdog_reset
- * Description: Reset timeout of twl4030 watchdog.
- */
-void hw_watchdog_reset(void)
-{
- u8 timeout = 0;
-
- /* do not reset watchdog too often - max every 4s */
- if (get_timer(twl_wd_time) < 4 * CONFIG_SYS_HZ)
- return;
-
- /* localy lock twl4030 i2c bus */
- if (test_and_set_bit(0, &twl_i2c_lock))
- return;
-
- /* 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);
-}
-
-/*
- * 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,
- '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_init
- * Description: Initialize HW keyboard.
- */
-int rx51_kp_init(void)
-{
- 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).
- */
-int rx51_kp_tstc(struct stdio_dev *sdev)
-{
- 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;
-
- 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).
- */
-int rx51_kp_getc(struct stdio_dev *sdev)
-{
- keybuf_head %= KEYBUF_SIZE;
- while (!rx51_kp_tstc(sdev))
- WATCHDOG_RESET();
- return keybuf[keybuf_head++];
-}
-
-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] },
-};
diff --git a/board/nokia/rx51/tag_omap.h b/board/nokia/rx51/tag_omap.h
deleted file mode 100644
index b99d6b7de17f..000000000000
--- a/board/nokia/rx51/tag_omap.h
+++ /dev/null
@@ -1,294 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2011-2012
- * Pali Rohár <pali(a)kernel.org>
- *
- * (C) Copyright 2011
- * marcel(a)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(a)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(a)mesa.nl, Mesa Consulting B.V.
- * Copyright (C) 2012 Pali Rohár <pali(a)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/configs/nokia_rx51_defconfig b/configs/nokia_rx51_defconfig
deleted file mode 100644
index f79613260f3e..000000000000
--- a/configs/nokia_rx51_defconfig
+++ /dev/null
@@ -1,69 +0,0 @@
-CONFIG_ARM=y
-# CONFIG_SYS_THUMB_BUILD is not set
-CONFIG_ARCH_OMAP2PLUS=y
-CONFIG_SYS_TEXT_BASE=0x80008000
-CONFIG_NR_DRAM_BANKS=2
-CONFIG_TARGET_NOKIA_RX51=y
-CONFIG_OPTIMIZE_INLINING=y
-# CONFIG_SYS_MALLOC_F is not set
-# CONFIG_FIT is not set
-CONFIG_BOOTDELAY=30
-CONFIG_AUTOBOOT_KEYED=y
-CONFIG_AUTOBOOT_MENU_SHOW=y
-CONFIG_USE_PREBOOT=y
-CONFIG_PREBOOT="run preboot"
-CONFIG_CONSOLE_MUX=y
-# CONFIG_SYS_DEVICE_NULLDEV is not set
-CONFIG_HUSH_PARSER=y
-CONFIG_SYS_PROMPT="Nokia RX-51 # "
-# CONFIG_CMD_BDI is not set
-# 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=y
-# 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_MMC_HW_PARTITIONING is not set
-# CONFIG_MMC_VERBOSE is not set
-CONFIG_MMC_OMAP_HS=y
-CONFIG_MTD=y
-CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
-CONFIG_SPI=y
-CONFIG_USB=y
-CONFIG_USB_MUSB_UDC=y
-CONFIG_USB_OMAP3=y
-CONFIG_CFB_CONSOLE=y
-CONFIG_CFB_CONSOLE_ANSI=y
-# CONFIG_VGA_AS_SINGLE_DEVICE is not set
-CONFIG_SPLASH_SCREEN=y
-# CONFIG_GZIP is not set
diff --git a/doc/README.nokia_rx51 b/doc/README.nokia_rx51
deleted file mode 100644
index 84d1912ddd2b..000000000000
--- a/doc/README.nokia_rx51
+++ /dev/null
@@ -1,94 +0,0 @@
-Board: Nokia RX-51 aka N900
-
-This board definition results in a u-boot.bin which can be chainloaded
-from NOLO in qemu or on a real N900. It does very little hardware config
-because NOLO has already configured the board. Only needed is enabling
-internal eMMC memory via twl4030 regulator which is not enabled by NOLO.
-
-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 hw revision, boot reason
-and boot mode ATAGs set by NOLO. Then the bootscripts will attempt to load
-uImage or boot.scr from a fat, ext2/ext3 or ext4 filesystem in 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 there is a simple script
-called u-boot-gen-combined. It is available in following repository:
-
- https://github.com/pali/u-boot-maemo
-
-There is support for hardware watchdog. Hardware watchdog is started by
-NOLO so u-boot must kick watchdog to prevent reboot device (but not very
-often, max every 2 seconds). There is also support for framebuffer display
-output with ANSI escape codes and the N900 HW keyboard input.
-
-When U-Boot is starting it enable IBE bit in Auxiliary Control Register,
-which is needed for Thumb-2 ISA support. It is workaround for errata 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.
- * 1.1 find boot.scr on first fat partition
- * 1.2 find uImage on first fat partition
- * 1.3 same order for 2. - 4. fat partition
- * 2. same as 1. but for ext2/3 partition
- * 3. same as 1. but for ext4 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)
- * parition type ${mmctype} (fat, ext2, ext4)
-
-Additional variables for booting kernel:
-
- * setup_omap_atag - Add OMAP table into atags structure (needs 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 zImage 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_FASTMAP=y
- CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h
deleted file mode 100644
index 23368de624e1..000000000000
--- a/include/configs/nokia_rx51.h
+++ /dev/null
@@ -1,249 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2011-2012
- * Pali Rohár <pali(a)kernel.org>
- *
- * (C) Copyright 2010
- * Alistair Buxton <a.j.buxton(a)gmail.com>
- *
- * Derived from Beagle Board code:
- * (C) Copyright 2006-2008
- * Texas Instruments.
- * Richard Woodruff <r-woodruff2(a)ti.com>
- * Syed Mohammed Khasim <x0khasim(a)ti.com>
- *
- * Configuration settings for the Nokia RX-51 aka N900.
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- */
-#define CONFIG_SYS_L2CACHE_OFF /* pretend there is no L2 CACHE */
-
-#define CONFIG_MACH_TYPE MACH_TYPE_NOKIA_RX51
-
-#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)
-
-#define CONFIG_SKIP_LOWLEVEL_INIT /* X-Loader set everything up */
-
-#define CONFIG_CMDLINE_TAG /* enable passing kernel command line string */
-#define CONFIG_INITRD_TAG /* enable passing initrd */
-#define CONFIG_REVISION_TAG /* enable passing revision tag*/
-#define CONFIG_SETUP_MEMORY_TAGS /* enable memory tag */
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_UBI_SIZE (512 << 10)
-#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + CONFIG_UBI_SIZE + \
- (128 << 10))
-
-/*
- * Hardware drivers
- */
-
-/*
- * NS16550 Configuration
- */
-#define V_NS16550_CLK 48000000 /* 48MHz (APLL96/2) */
-
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE (-4)
-#define CONFIG_SYS_NS16550_CLK V_NS16550_CLK
-
-/*
- * select serial console configuration
- */
-#define CONFIG_SYS_NS16550_COM3 OMAP34XX_UART3
-
-#define CONFIG_SYS_BAUDRATE_TABLE { 4800, 9600, 19200, 38400, 57600, 115200 }
-
-/* USB device configuration */
-#define CONFIG_USB_DEVICE
-#define CONFIG_USB_TTY
-#define CONFIG_USBD_VENDORID 0x0421
-#define CONFIG_USBD_PRODUCTID_CDCACM 0x01c8
-#define CONFIG_USBD_PRODUCTID_GSERIAL 0x01c8
-#define CONFIG_USBD_MANUFACTURER "Nokia"
-#define CONFIG_USBD_PRODUCT_NAME "N900 (U-Boot)"
-
-#define GPIO_SLIDE 71
-
-/*
- * Board ONENAND Info.
- */
-
-#define CONFIG_SYS_ONENAND_BASE ONENAND_MAP
-
-/* Watchdog support */
-#define CONFIG_HW_WATCHDOG
-
-/*
- * Framebuffer
- */
-/* Video console */
-#define CONFIG_VIDEO_LOGO
-#define VIDEO_FB_16BPP_PIXEL_SWAP
-#define VIDEO_FB_16BPP_WORD_SWAP
-
-/* functions for cfb_console */
-#define VIDEO_KBD_INIT_FCT rx51_kp_init()
-#define VIDEO_TSTC_FCT rx51_kp_tstc
-#define VIDEO_GETC_FCT rx51_kp_getc
-#ifndef __ASSEMBLY__
-struct stdio_dev;
-int rx51_kp_init(void);
-int rx51_kp_tstc(struct stdio_dev *sdev);
-int rx51_kp_getc(struct stdio_dev *sdev);
-#endif
-
-/* Environment information */
-#define CONFIG_EXTRA_ENV_SETTINGS \
- "usbtty=cdc_acm\0" \
- "stdin=usbtty,serial,vga\0" \
- "stdout=usbtty,serial,vga\0" \
- "stderr=usbtty,serial,vga\0" \
- "slide=gpio input " __stringify(GPIO_SLIDE) "\0" \
- "switchmmc=mmc dev ${mmcnum}\0" \
- "kernaddr=0x82008000\0" \
- "initrdaddr=0x84008000\0" \
- "scriptaddr=0x86008000\0" \
- "fileload=${mmctype}load mmc ${mmcnum}:${mmcpart} " \
- "${loadaddr} ${mmcfile}\0" \
- "kernload=setenv loadaddr ${kernaddr};" \
- "setenv mmcfile ${mmckernfile};" \
- "run fileload\0" \
- "initrdload=setenv loadaddr ${initrdaddr};" \
- "setenv mmcfile ${mmcinitrdfile};" \
- "run fileload\0" \
- "scriptload=setenv loadaddr ${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}\0" \
- "kerninitrdboot=echo Booting ${mmckernfile} ${mmcinitrdfile} from mmc "\
- "${mmcnum}:${mmcpart} ...; bootm ${kernaddr} ${initrdaddr}\0" \
- "attachboot=echo Booting attached kernel image ...;" \
- "setenv setup_omap_atag 1;" \
- "bootm ${attkernaddr};" \
- "setenv setup_omap_atag\0" \
- "trymmcscriptboot=if run switchmmc; then " \
- "if run scriptload; then " \
- "run scriptboot;" \
- "fi;" \
- "fi\0" \
- "trymmckernboot=if run switchmmc; then " \
- "if run kernload; then " \
- "run kernboot;" \
- "fi;" \
- "fi\0" \
- "trymmckerninitrdboot=if run switchmmc; then " \
- "if run initrdload; then " \
- "if run kernload; then " \
- "run kerninitrdboot;" \
- "fi;" \
- "fi; " \
- "fi\0" \
- "trymmcpartboot=setenv mmcscriptfile boot.scr; run trymmcscriptboot;" \
- "setenv mmckernfile uImage; 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" \
- "preboot=setenv mmcnum 1; setenv mmcpart 1;" \
- "setenv mmcscriptfile bootmenu.scr;" \
- "if run switchmmc; then " \
- "setenv mmctype fat;" \
- "if run scriptload; then run scriptboot; else " \
- "setenv mmctype ext4;" \
- "if run scriptload; then run scriptboot; fi;" \
- "fi;" \
- "fi;" \
- "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 CONFIG_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"
-
-#define CONFIG_BOOTCOMMAND \
- "run sdboot;" \
- "run emmcboot;" \
- "run attachboot;" \
- "echo"
-
-/* default load address */
-#define CONFIG_SYS_LOAD_ADDR (OMAP34XX_SDRC_CS0)
-
-/*
- * 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 CONFIG_SYS_TIMERBASE (OMAP34XX_GPT2)
-#define CONFIG_SYS_PTV 2 /* Divisor: 2^(PTV+1) => 8 */
-
-/*
- * Physical Memory Map
- */
-#define PHYS_SDRAM_1 OMAP34XX_SDRC_CS0
-
-/*
- * FLASH and environment organization
- */
-
-#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR 0x4020f800
-#define CONFIG_SYS_INIT_RAM_SIZE 0x800
-#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + \
- CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-
-/*
- * Attached kernel image
- */
-
-#define SDRAM_SIZE 0x10000000 /* 256 MB */
-#define SDRAM_END (CONFIG_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 CONFIG_PRAM ((KERNEL_MAXSIZE >> 10)+1)
-
-#endif /* __CONFIG_H */
diff --git a/test/nokia_rx51_test.sh b/test/nokia_rx51_test.sh
deleted file mode 100755
index ee45e8d6dd58..000000000000
--- a/test/nokia_rx51_test.sh
+++ /dev/null
@@ -1,296 +0,0 @@
-#!/bin/bash -e
-# SPDX-License-Identifier: GPL-2.0+
-# (C) 2020 Pali Rohár <pali(a)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/)
-' | 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.bin binary for Nokia RX-51 board
-make nokia_rx51_config
-make -j4 u-boot.bin ARCH=arm 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 .
-
-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 --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
-wget -c http://repository.maemo.org/qemu-n900/qemu-n900.tar.gz
-tar -xf qemu-n900.tar.gz
-
-# 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
-wget -c http://repository.maemo.org/pool/maemo5.0/free/k/kernel/kernel_2.6.28-20103…
-dpkg -x kernel_2.6.28-20103103+0m5_armel.deb kernel_2.6.28
-
-# Download Maemo libc
-wget -c http://repository.maemo.org/pool/maemo5.0/free/g/glibc/libc6_2.5.1-1eglibc2…
-dpkg -x libc6_2.5.1-1eglibc27+0m5_armel.deb libc6_2.5.1
-
-# Download Maemo busybox
-wget -c http://repository.maemo.org/pool/maemo5.0/free/b/busybox/busybox_1.10.2.leg…
-dpkg -x busybox_1.10.2.legal-1osso30+0m5_armel.deb busybox_1.10.2
-
-echo
-echo "======================================="
-echo "========== Generating images =========="
-echo "======================================="
-echo
-
-# 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 ubi config file for ubi rootfs image
-cat > ubi.ini << EOF
-[rootfs]
-mode=ubi
-image=ubifs.img
-vol_id=0
-vol_size=160MiB
-vol_type=dynamic
-vol_name=rootfs
-vol_alignment=1
-vol_flags=autoresize
-EOF
-
-# Generate ubi rootfs 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;
-'
-/usr/sbin/ubinize -o ubi.img -p 128KiB -m 2048 -s 512 ubi.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
-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 OneNAND booting
-cat > bootmenu_nand << EOF
-setenv bootmenu_0 'uImage-2.6.28-omap1 from OneNAND=mtd read initfs \${kernaddr}; setenv bootargs; setenv setup_omap_atag 1; 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 combined image from u-boot and Maemo fiasco kernel
-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
-./u-boot-gen-combined u-boot.bin uImage-2.6.28-omap1 combined.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
-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 OneNAND booting
-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 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.bin -r ubi.img -m rx51 -o mtd_ram.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
-
-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 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 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 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
-
-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 was successfully booted from RAM"; else echo "Failed to boot kernel from RAM"; fi
-if grep -q 'Successfully booted' qemu_emmc.log; then echo "Kernel was successfully booted from eMMC"; else echo "Failed to boot kernel from eMMC"; fi
-if grep -q 'Successfully booted' qemu_nand.log; then echo "Kernel was successfully booted from OneNAND"; else echo "Failed to boot kernel from OneNAND"; fi
-
-echo
-
-if grep -q 'Successfully booted' qemu_uboot.log && grep -q 'Successfully booted' qemu_ram.log && grep -q 'Successfully booted' qemu_emmc.log && grep -q 'Successfully booted' qemu_nand.log; then
- echo "All tests passed"
- exit 0
-else
- echo "Some tests failed"
- exit 1
-fi
--
2.17.1
7
28
Linux uses the prefix "ethernet" whereas u-boot uses "eth". This is from
the linux tree:
$ grep "eth[0-9].*=.*&" arch/**/*dts{,i}|wc -l
0
$ grep "ethernet[0-9].*=.*&" arch/**/*dts{,i}|wc -l
633
In u-boot device trees both prefixes are used. Until recently the only
user of the ethernet alias was the sandbox test device tree. This
changed with commit fc054d563bfb ("net: Introduce DSA class for Ethernet
switches"). There, the MAC addresses are inherited based on the devices
sequence IDs which is in turn given by the device tree.
Before there are more users in u-boot and both worlds will differ even
more, rename the alias prefix to "ethernet" to match the linux ones.
Also adapt the test cases and rename any old aliases in the u-boot
device trees.
Cc: David Wu <david.wu(a)rock-chips.com>
Signed-off-by: Michael Walle <michael(a)walle.cc>
---
Vladimir, I didn't do another patch to rename any ethernet aliases to
"eth". Though kontron boards contain "ethernetN" aliases, all in tree
variants don't make use of it. So there is nothing to be fixed.
arch/arm/dts/fsl-ls1028a-rdb.dts | 12 ++++++------
arch/sandbox/dts/test.dts | 10 +++++-----
net/eth-uclass.c | 4 ++--
test/dm/ofnode.c | 2 +-
test/dm/test-fdt.c | 2 +-
5 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/arch/arm/dts/fsl-ls1028a-rdb.dts b/arch/arm/dts/fsl-ls1028a-rdb.dts
index 3432fca352..82a8c0a0cd 100644
--- a/arch/arm/dts/fsl-ls1028a-rdb.dts
+++ b/arch/arm/dts/fsl-ls1028a-rdb.dts
@@ -15,12 +15,12 @@
compatible = "fsl,ls1028a-rdb", "fsl,ls1028a";
aliases {
spi0 = &fspi;
- eth0 = &enetc0;
- eth1 = &enetc2;
- eth2 = &mscc_felix_port0;
- eth3 = &mscc_felix_port1;
- eth4 = &mscc_felix_port2;
- eth5 = &mscc_felix_port3;
+ ethernet0 = &enetc0;
+ ethernet1 = &enetc2;
+ ethernet2 = &mscc_felix_port0;
+ ethernet3 = &mscc_felix_port1;
+ ethernet4 = &mscc_felix_port2;
+ ethernet5 = &mscc_felix_port3;
};
};
diff --git a/arch/sandbox/dts/test.dts b/arch/sandbox/dts/test.dts
index 3ef3ba0b17..7a5d4aa71d 100644
--- a/arch/sandbox/dts/test.dts
+++ b/arch/sandbox/dts/test.dts
@@ -14,11 +14,11 @@
aliases {
console = &uart0;
- eth0 = "/eth@10002000";
- eth2 = &swp_0;
- eth3 = ð_3;
- eth4 = &dsa_eth0;
- eth5 = ð_5;
+ ethernet0 = "/eth@10002000";
+ ethernet2 = &swp_0;
+ ethernet3 = ð_3;
+ ethernet4 = &dsa_eth0;
+ ethernet5 = ð_5;
gpio1 = &gpio_a;
gpio2 = &gpio_b;
gpio3 = &gpio_c;
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 0b4260dc5b..5146bd6666 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -605,8 +605,8 @@ static int eth_pre_remove(struct udevice *dev)
return 0;
}
-UCLASS_DRIVER(eth) = {
- .name = "eth",
+UCLASS_DRIVER(ethernet) = {
+ .name = "ethernet",
.id = UCLASS_ETH,
.post_bind = eth_post_bind,
.pre_unbind = eth_pre_unbind,
diff --git a/test/dm/ofnode.c b/test/dm/ofnode.c
index c539134296..3b708b63eb 100644
--- a/test/dm/ofnode.c
+++ b/test/dm/ofnode.c
@@ -213,7 +213,7 @@ static int dm_test_ofnode_read_aliases(struct unit_test_state *uts)
ofnode node;
int size;
- node = ofnode_get_aliases_node("eth3");
+ node = ofnode_get_aliases_node("ethernet3");
ut_assert(ofnode_valid(node));
ut_asserteq_str("sbe5", ofnode_get_name(node));
diff --git a/test/dm/test-fdt.c b/test/dm/test-fdt.c
index 6e83aeecd9..98972665f2 100644
--- a/test/dm/test-fdt.c
+++ b/test/dm/test-fdt.c
@@ -183,7 +183,7 @@ static int dm_test_alias_highest_id(struct unit_test_state *uts)
{
int ret;
- ret = dev_read_alias_highest_id("eth");
+ ret = dev_read_alias_highest_id("ethernet");
ut_asserteq(5, ret);
ret = dev_read_alias_highest_id("gpio");
--
2.20.1
5
6

[PATCH] net: use a more deterministic approach to get the active ethernet device
by Michael Walle 14 Jun '21
by Michael Walle 14 Jun '21
14 Jun '21
If the environment variable "ethact" is not set, the first device in the
uclass is returned. This depends on the probing order of the ethernet
devices. Moreover it is not not configurable at all.
Try to return the ethernet device with sequence id 0 first which then
can be configured by the aliases in a device tree. Fall back to the old
mechanism in case of an error.
Signed-off-by: Michael Walle <michael(a)walle.cc>
---
net/eth-uclass.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 34ca731d1e..0b4260dc5b 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -69,8 +69,11 @@ void eth_set_current_to_next(void)
/*
* Typically this will simply return the active device.
* In the case where the most recent active device was unset, this will attempt
- * to return the first device. If that device doesn't exist or fails to probe,
- * this function will return NULL.
+ * to return the device with sequence id 0 (which can be configured by the
+ * device tree). If this fails, fall back to just getting the first device.
+ * The latter is non-deterministic and depends on the order of the probing.
+ * If that device doesn't exist or fails to probe, this function will return
+ * NULL.
*/
struct udevice *eth_get_dev(void)
{
@@ -80,9 +83,13 @@ struct udevice *eth_get_dev(void)
if (!uc_priv)
return NULL;
- if (!uc_priv->current)
- eth_errno = uclass_first_device(UCLASS_ETH,
- &uc_priv->current);
+ if (!uc_priv->current) {
+ eth_errno = uclass_get_device_by_seq(UCLASS_ETH, 0,
+ &uc_priv->current);
+ if (eth_errno)
+ eth_errno = uclass_first_device(UCLASS_ETH,
+ &uc_priv->current);
+ }
return uc_priv->current;
}
--
2.20.1
2
3

14 Jun '21
This supports Falcon boot support for Microchip SAMA5D3 Xplained,
tested on raw MMC, and on raw NAND.
spl_start_uboot() is has the simplest possible implementation.
It doesn't test the environment because enabling environment support
currently causes the SPL to exceed its maximum size (64 KiB).
It doesn't check the serial for incoming characters either because
this functionality currently doesn't seem to work from the SPL
on this board.
Settings for Falcon boot from at FAT partition are also added to
avoid compile failures when CONFIG_SPL_OS_BOOT is enabled, but this
particular case is currently not functional as adding FAT and
partition support cause the SPL to be too big again.
Signed-off-by: Michael Opdenacker <michael.opdenacker(a)bootlin.com>
---
board/atmel/sama5d3_xplained/sama5d3_xplained.c | 7 +++++++
include/configs/sama5d3_xplained.h | 14 ++++++++++++++
2 files changed, 21 insertions(+)
diff --git a/board/atmel/sama5d3_xplained/sama5d3_xplained.c b/board/atmel/sama5d3_xplained/sama5d3_xplained.c
index db9603f584..c25bf42e0a 100644
--- a/board/atmel/sama5d3_xplained/sama5d3_xplained.c
+++ b/board/atmel/sama5d3_xplained/sama5d3_xplained.c
@@ -132,6 +132,13 @@ void spl_board_init(void)
#endif
}
+#ifdef CONFIG_SPL_OS_BOOT
+int spl_start_uboot(void)
+{
+ return 0;
+}
+#endif
+
static void ddr2_conf(struct atmel_mpddrc_config *ddr2)
{
ddr2->md = (ATMEL_MPDDRC_MD_DBW_32_BITS | ATMEL_MPDDRC_MD_DDR2_SDRAM);
diff --git a/include/configs/sama5d3_xplained.h b/include/configs/sama5d3_xplained.h
index 1113214bcf..4c25964b43 100644
--- a/include/configs/sama5d3_xplained.h
+++ b/include/configs/sama5d3_xplained.h
@@ -79,4 +79,18 @@
#define CONFIG_SYS_NAND_BLOCK_SIZE 0x20000
#define CONFIG_SYS_NAND_BAD_BLOCK_POS 0x0
+/* Falcon boot support on raw MMC */
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x100 /* 128 KiB */
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS (CONFIG_CMD_SPL_WRITE_SIZE / 512)
+/* U-Boot proper stored by default at 0x200 (256 KiB) */
+#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x1000 /* 2MB */
+#define CONFIG_SYS_SPL_ARGS_ADDR 0x22000000
+
+/* Falcon boot support on FAT on MMC */
+#define CONFIG_SPL_FS_LOAD_ARGS_NAME "args"
+#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
+
+/* Falcon boot support on raw NAND */
+#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x1a0000
+
#endif
--
2.25.1
2
1
Add hash and hash verify commands. These would be useful for
verifying copied data.
Signed-off-by: Eugen Hristev <eugen.hristev(a)microchip.com>
---
configs/sam9x60ek_mmc_defconfig | 2 ++
configs/sam9x60ek_nandflash_defconfig | 2 ++
configs/sam9x60ek_qspiflash_defconfig | 2 ++
configs/sama5d27_som1_ek_mmc1_defconfig | 2 ++
configs/sama5d27_som1_ek_mmc_defconfig | 2 ++
configs/sama5d27_som1_ek_qspiflash_defconfig | 2 ++
configs/sama5d27_wlsom1_ek_mmc_defconfig | 2 ++
configs/sama5d27_wlsom1_ek_qspiflash_defconfig | 2 ++
configs/sama5d2_icp_mmc_defconfig | 2 ++
configs/sama5d2_ptc_ek_mmc_defconfig | 2 ++
configs/sama5d2_ptc_ek_nandflash_defconfig | 2 ++
configs/sama5d2_xplained_emmc_defconfig | 2 ++
configs/sama5d2_xplained_mmc_defconfig | 2 ++
configs/sama5d2_xplained_qspiflash_defconfig | 2 ++
configs/sama5d2_xplained_spiflash_defconfig | 2 ++
configs/sama5d3_xplained_mmc_defconfig | 2 ++
configs/sama5d3_xplained_nandflash_defconfig | 2 ++
configs/sama5d4_xplained_mmc_defconfig | 2 ++
configs/sama5d4_xplained_nandflash_defconfig | 2 ++
configs/sama5d4_xplained_spiflash_defconfig | 2 ++
configs/sama7g5ek_mmc1_defconfig | 2 ++
configs/sama7g5ek_mmc_defconfig | 2 ++
22 files changed, 44 insertions(+)
diff --git a/configs/sam9x60ek_mmc_defconfig b/configs/sam9x60ek_mmc_defconfig
index 81d2724580..e5b5226324 100644
--- a/configs/sam9x60ek_mmc_defconfig
+++ b/configs/sam9x60ek_mmc_defconfig
@@ -31,6 +31,8 @@ CONFIG_CMD_NAND_TRIMFFS=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
CONFIG_ENV_IS_IN_FAT=y
diff --git a/configs/sam9x60ek_nandflash_defconfig b/configs/sam9x60ek_nandflash_defconfig
index 779b59f483..0cf940f8d7 100644
--- a/configs/sam9x60ek_nandflash_defconfig
+++ b/configs/sam9x60ek_nandflash_defconfig
@@ -32,6 +32,8 @@ CONFIG_CMD_NAND_TRIMFFS=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_FAT=y
CONFIG_CMD_UBI=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sam9x60ek_qspiflash_defconfig b/configs/sam9x60ek_qspiflash_defconfig
index 694c74bd63..57a87a67e9 100644
--- a/configs/sam9x60ek_qspiflash_defconfig
+++ b/configs/sam9x60ek_qspiflash_defconfig
@@ -33,6 +33,8 @@ CONFIG_CMD_NAND_TRIMFFS=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_FAT=y
CONFIG_CMD_UBI=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d27_som1_ek_mmc1_defconfig b/configs/sama5d27_som1_ek_mmc1_defconfig
index 66b5f25703..fbc07360d8 100644
--- a/configs/sama5d27_som1_ek_mmc1_defconfig
+++ b/configs/sama5d27_som1_ek_mmc1_defconfig
@@ -39,6 +39,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d27_som1_ek_mmc_defconfig b/configs/sama5d27_som1_ek_mmc_defconfig
index b7d3b64d15..6be9cc1896 100644
--- a/configs/sama5d27_som1_ek_mmc_defconfig
+++ b/configs/sama5d27_som1_ek_mmc_defconfig
@@ -40,6 +40,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d27_som1_ek_qspiflash_defconfig b/configs/sama5d27_som1_ek_qspiflash_defconfig
index 4425fa610f..2467f4041f 100644
--- a/configs/sama5d27_som1_ek_qspiflash_defconfig
+++ b/configs/sama5d27_som1_ek_qspiflash_defconfig
@@ -40,6 +40,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d27_wlsom1_ek_mmc_defconfig b/configs/sama5d27_wlsom1_ek_mmc_defconfig
index c60d4c6be5..83901980ff 100644
--- a/configs/sama5d27_wlsom1_ek_mmc_defconfig
+++ b/configs/sama5d27_wlsom1_ek_mmc_defconfig
@@ -42,6 +42,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d27_wlsom1_ek_qspiflash_defconfig b/configs/sama5d27_wlsom1_ek_qspiflash_defconfig
index 44124cdf49..3cb1ff62aa 100644
--- a/configs/sama5d27_wlsom1_ek_qspiflash_defconfig
+++ b/configs/sama5d27_wlsom1_ek_qspiflash_defconfig
@@ -46,6 +46,8 @@ CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_icp_mmc_defconfig b/configs/sama5d2_icp_mmc_defconfig
index 88d6e1f5b0..c9e82d03b8 100644
--- a/configs/sama5d2_icp_mmc_defconfig
+++ b/configs/sama5d2_icp_mmc_defconfig
@@ -41,6 +41,8 @@ CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_ptc_ek_mmc_defconfig b/configs/sama5d2_ptc_ek_mmc_defconfig
index 8df3b3e6d5..b738e3fcab 100644
--- a/configs/sama5d2_ptc_ek_mmc_defconfig
+++ b/configs/sama5d2_ptc_ek_mmc_defconfig
@@ -32,6 +32,8 @@ CONFIG_CMD_NAND=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_ptc_ek_nandflash_defconfig b/configs/sama5d2_ptc_ek_nandflash_defconfig
index 6d57551b34..89ff40d16c 100644
--- a/configs/sama5d2_ptc_ek_nandflash_defconfig
+++ b/configs/sama5d2_ptc_ek_nandflash_defconfig
@@ -32,6 +32,8 @@ CONFIG_CMD_NAND=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_xplained_emmc_defconfig b/configs/sama5d2_xplained_emmc_defconfig
index bd6dbff564..1f3f728442 100644
--- a/configs/sama5d2_xplained_emmc_defconfig
+++ b/configs/sama5d2_xplained_emmc_defconfig
@@ -38,6 +38,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_xplained_mmc_defconfig b/configs/sama5d2_xplained_mmc_defconfig
index add797b7ca..8c637c4e79 100644
--- a/configs/sama5d2_xplained_mmc_defconfig
+++ b/configs/sama5d2_xplained_mmc_defconfig
@@ -40,6 +40,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_xplained_qspiflash_defconfig b/configs/sama5d2_xplained_qspiflash_defconfig
index 4dbe6de722..ea3e3b54b5 100644
--- a/configs/sama5d2_xplained_qspiflash_defconfig
+++ b/configs/sama5d2_xplained_qspiflash_defconfig
@@ -40,6 +40,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d2_xplained_spiflash_defconfig b/configs/sama5d2_xplained_spiflash_defconfig
index 64ca9dd2a2..5b6d1f4442 100644
--- a/configs/sama5d2_xplained_spiflash_defconfig
+++ b/configs/sama5d2_xplained_spiflash_defconfig
@@ -44,6 +44,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama5d3_xplained_mmc_defconfig b/configs/sama5d3_xplained_mmc_defconfig
index 3538dfd1bc..162a59d94e 100644
--- a/configs/sama5d3_xplained_mmc_defconfig
+++ b/configs/sama5d3_xplained_mmc_defconfig
@@ -40,6 +40,8 @@ CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_FAT=y
diff --git a/configs/sama5d3_xplained_nandflash_defconfig b/configs/sama5d3_xplained_nandflash_defconfig
index c763a8dc59..978b4ed19a 100644
--- a/configs/sama5d3_xplained_nandflash_defconfig
+++ b/configs/sama5d3_xplained_nandflash_defconfig
@@ -40,6 +40,8 @@ CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_EXT4_WRITE=y
CONFIG_CMD_FAT=y
diff --git a/configs/sama5d4_xplained_mmc_defconfig b/configs/sama5d4_xplained_mmc_defconfig
index 03f2aa18b5..0754ead165 100644
--- a/configs/sama5d4_xplained_mmc_defconfig
+++ b/configs/sama5d4_xplained_mmc_defconfig
@@ -39,6 +39,8 @@ CONFIG_CMD_NAND=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
diff --git a/configs/sama5d4_xplained_nandflash_defconfig b/configs/sama5d4_xplained_nandflash_defconfig
index 007ee7740e..05e67c7a7e 100644
--- a/configs/sama5d4_xplained_nandflash_defconfig
+++ b/configs/sama5d4_xplained_nandflash_defconfig
@@ -39,6 +39,8 @@ CONFIG_CMD_NAND=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
diff --git a/configs/sama5d4_xplained_spiflash_defconfig b/configs/sama5d4_xplained_spiflash_defconfig
index af85192d0b..5828f375dc 100644
--- a/configs/sama5d4_xplained_spiflash_defconfig
+++ b/configs/sama5d4_xplained_spiflash_defconfig
@@ -44,6 +44,8 @@ CONFIG_CMD_NAND=y
CONFIG_CMD_USB=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
diff --git a/configs/sama7g5ek_mmc1_defconfig b/configs/sama7g5ek_mmc1_defconfig
index c73b8de0ea..337b58bc91 100644
--- a/configs/sama7g5ek_mmc1_defconfig
+++ b/configs/sama7g5ek_mmc1_defconfig
@@ -33,6 +33,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
diff --git a/configs/sama7g5ek_mmc_defconfig b/configs/sama7g5ek_mmc_defconfig
index 9326f53444..1dbf5276dc 100644
--- a/configs/sama7g5ek_mmc_defconfig
+++ b/configs/sama7g5ek_mmc_defconfig
@@ -33,6 +33,8 @@ CONFIG_CMD_MMC=y
CONFIG_CMD_DHCP=y
CONFIG_CMD_MII=y
CONFIG_CMD_PING=y
+CONFIG_CMD_HASH=y
+CONFIG_HASH_VERIFY=y
CONFIG_CMD_EXT4=y
CONFIG_CMD_FAT=y
CONFIG_OF_CONTROL=y
--
2.25.1
2
1

12 Jun '21
Revert some changes of commit 3a97da12ee7b ("net: dwc_eth_qos: add dwc
eqos for imx support") that were probably added by mistake.
One of these changes can lead to received data corruption (enabling
FUP and FEP bits). Another causes invalid register rxq_ctrl0 settings
for some platforms. And another makes some writes at unknown memory
location.
Fixes: 3a97da12ee7b ("net: dwc_eth_qos: add dwc eqos for imx support")
Signed-off-by: Daniil Stas <daniil.stas(a)posteo.net>
Cc: Ye Li <ye.li(a)nxp.com>
Cc: Fugang Duan <fugang.duan(a)nxp.com>
Cc: Peng Fan <peng.fan(a)nxp.com>
Cc: Ramon Fried <rfried.dev(a)gmail.com>
Cc: Joe Hershberger <joe.hershberger(a)ni.com>
Cc: Patrice Chotard <patrice.chotard(a)foss.st.com>
Cc: Patrick Delaunay <patrick.delaunay(a)foss.st.com>
---
drivers/net/dwc_eth_qos.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 2f088c758f..b012bed517 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/drivers/net/dwc_eth_qos.c
@@ -172,8 +172,6 @@ struct eqos_mtl_regs {
#define EQOS_MTL_RXQ0_OPERATION_MODE_RFA_MASK 0x3f
#define EQOS_MTL_RXQ0_OPERATION_MODE_EHFC BIT(7)
#define EQOS_MTL_RXQ0_OPERATION_MODE_RSF BIT(5)
-#define EQOS_MTL_RXQ0_OPERATION_MODE_FEP BIT(4)
-#define EQOS_MTL_RXQ0_OPERATION_MODE_FUP BIT(3)
#define EQOS_MTL_RXQ0_DEBUG_PRXQ_SHIFT 16
#define EQOS_MTL_RXQ0_DEBUG_PRXQ_MASK 0x7fff
@@ -1222,7 +1220,6 @@ static int eqos_start(struct udevice *dev)
}
/* Configure MTL */
- writel(0x60, &eqos->mtl_regs->txq0_quantum_weight - 0x100);
/* Enable Store and Forward mode for TX */
/* Program Tx operating mode */
@@ -1236,9 +1233,7 @@ static int eqos_start(struct udevice *dev)
/* Enable Store and Forward mode for RX, since no jumbo frame */
setbits_le32(&eqos->mtl_regs->rxq0_operation_mode,
- EQOS_MTL_RXQ0_OPERATION_MODE_RSF |
- EQOS_MTL_RXQ0_OPERATION_MODE_FEP |
- EQOS_MTL_RXQ0_OPERATION_MODE_FUP);
+ EQOS_MTL_RXQ0_OPERATION_MODE_RSF);
/* Transmit/Receive queue fifo size; use all RAM for 1 queue */
val = readl(&eqos->mac_regs->hw_feature1);
@@ -1314,12 +1309,6 @@ static int eqos_start(struct udevice *dev)
eqos->config->config_mac <<
EQOS_MAC_RXQ_CTRL0_RXQ0EN_SHIFT);
- clrsetbits_le32(&eqos->mac_regs->rxq_ctrl0,
- EQOS_MAC_RXQ_CTRL0_RXQ0EN_MASK <<
- EQOS_MAC_RXQ_CTRL0_RXQ0EN_SHIFT,
- 0x2 <<
- EQOS_MAC_RXQ_CTRL0_RXQ0EN_SHIFT);
-
/* Multicast and Broadcast Queue Enable */
setbits_le32(&eqos->mac_regs->unused_0a4,
0x00100000);
--
2.31.1
2
2

12 Jun '21
commit f1bcad22dd19 ("net: e1000: add support for writing to EEPROM")
adds support for storing hwaddr in EEPROM however i210 devices do not
support this and thus results in errors such as:
Warning: e1000#0 failed to set MAC address'
Check if a flash device is present and if not return -ENOSYS indicating
this is not supported.
Signed-off-by: Tim Harvey <tharvey(a)gateworks.com>
---
drivers/net/e1000.c | 4 ++++
drivers/net/e1000.h | 1 +
2 files changed, 5 insertions(+)
diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c
index 694114eca7..60613b7df0 100644
--- a/drivers/net/e1000.c
+++ b/drivers/net/e1000.c
@@ -5673,6 +5673,10 @@ static int e1000_write_hwaddr(struct eth_device *dev)
DEBUGOUT("%s: mac=%pM\n", __func__, mac);
+ if ((hw->eeprom.type == e1000_eeprom_invm) &&
+ !(E1000_READ_REG(hw, EECD) & E1000_EECD_FLASH_DETECTED_I210))
+ return -ENOSYS;
+
memset(current_mac, 0, 6);
/* Read from EEPROM, not from registers, to make sure
diff --git a/drivers/net/e1000.h b/drivers/net/e1000.h
index 072851ba31..082154a997 100644
--- a/drivers/net/e1000.h
+++ b/drivers/net/e1000.h
@@ -1245,6 +1245,7 @@ struct e1000_hw {
#define E1000_EECD_FLUPD 0x00080000 /* Update FLASH */
#define E1000_EECD_FLUPD_I210 0x00800000 /* Update FLASH */
#define E1000_EECD_FLUDONE_I210 0x04000000 /* Update FLASH done*/
+#define E1000_EECD_FLASH_DETECTED_I210 0x00080000 /* FLASH detected */
#define E1000_FLUDONE_ATTEMPTS 20000
#define E1000_EECD_AUPDEN 0x00100000 /* Enable Autonomous FLASH update */
#define E1000_EECD_SHADV 0x00200000 /* Shadow RAM Data Valid */
--
2.17.1
2
3
Hi Peng,
Have you managed to boot a mainline kernel with mainline U-Boot on a
imx8qxp mek?
Here is what I get:
U-Boot SPL 2020.01-00369-ge80a8b0222-dirty (Jan 13 2020 - 12:30:21 -0300)
Normal Boot
WDT: Not found!
Trying to boot from MMC2_2
Load image from MMC/SD 0x46800
U-Boot 2020.01-00369-ge80a8b0222-dirty (Jan 13 2020 - 12:30:21 -0300)
CPU: NXP i.MX8QXP RevB A35 at 1200 MHz at 32C
Model: Freescale i.MX8QXP MEK
Board: iMX8QXP MEK
Build: SCFW 550f3079, SECO-FW d7523fe8, ATF 70fa7bc
Boot: SD1
DRAM: 3 GiB
Failed to enable ipg clk
MMC: FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
In: serial@5a060000
Out: serial@5a060000
Err: serial@5a060000
Net: Failed to enable ipg clk
Warning: ethernet@5b040000 (eth0) using random MAC address - e2:9c:db:94:fc:d5
eth0: ethernet@5b040000
Hit any key to stop autoboot: 0
switch to partitions #0, OK
mmc1 is current device
26221056 bytes read in 1134 ms (22.1 MiB/s)
Booting from mmc ...
13953 bytes read in 14 ms (972.7 KiB/s)
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Using Device Tree in place at 0000000083000000, end 0000000083006680
Starting kernel ...
[It hangs here]
Booting a NXP kernel also did not work.
Any ideas?
Regards,
Fabio Estevam
8
17