aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2023-06-21 14:39:38 -0400
committerTom Rini <trini@konsulko.com>2023-06-21 14:39:38 -0400
commit43dc016497ff9fd39139833852b0214f625fa4ca (patch)
tree27d68ac47a07e9a8cb54cf93065385d630f2d659
parent5f024d10bbae9e52396191b8dadf0e8ddb059c85 (diff)
parent230038f8ef0e2e7db8e40957a3b35109d8f7459f (diff)
downloadu-boot-43dc016497ff9fd39139833852b0214f625fa4ca.zip
u-boot-43dc016497ff9fd39139833852b0214f625fa4ca.tar.gz
u-boot-43dc016497ff9fd39139833852b0214f625fa4ca.tar.bz2
Merge branch '2023-06-20-assorted-update' into next
- Assorted updates and improvements
-rw-r--r--arch/arm/cpu/armv7/psci.S6
-rw-r--r--common/stdio.c8
-rw-r--r--configs/am64x_evm_a53_defconfig1
-rw-r--r--configs/am64x_evm_r5_defconfig1
-rw-r--r--configs/synquacer_developerbox_defconfig2
-rw-r--r--doc/sphinx/requirements.txt2
-rw-r--r--drivers/spi/omap3_spi.c20
-rw-r--r--include/omap3_spi.h4
-rw-r--r--include/stdio_dev.h7
-rw-r--r--include/test/suites.h1
-rw-r--r--lib/ecdsa/ecdsa-libcrypto.c16
-rw-r--r--test/cmd/Makefile1
-rw-r--r--test/cmd/bdinfo.c188
-rw-r--r--test/cmd_ut.c6
-rw-r--r--test/py/requirements.txt4
-rw-r--r--test/test-main.c2
16 files changed, 238 insertions, 31 deletions
diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S
index 6c066e5..4142872 100644
--- a/arch/arm/cpu/armv7/psci.S
+++ b/arch/arm/cpu/armv7/psci.S
@@ -311,11 +311,11 @@ ENTRY(psci_cpu_entry)
bl psci_arch_cpu_entry
bl psci_get_cpu_id @ CPU ID => r0
- mov r2, r0 @ CPU ID => r2
bl psci_get_context_id @ context id => r0
- mov r1, r0 @ context id => r1
- mov r0, r2 @ CPU ID => r0
+ push {r0} @ save context id
+ bl psci_get_cpu_id @ CPU ID => r0
bl psci_get_target_pc @ target PC => r0
+ pop {r1} @ context id => r1
b _do_nonsec_entry
ENDPROC(psci_cpu_entry)
diff --git a/common/stdio.c b/common/stdio.c
index cbedfdd..894cbd3 100644
--- a/common/stdio.c
+++ b/common/stdio.c
@@ -386,11 +386,3 @@ int stdio_add_devices(void)
return 0;
}
-
-int stdio_init(void)
-{
- stdio_init_tables();
- stdio_add_devices();
-
- return 0;
-}
diff --git a/configs/am64x_evm_a53_defconfig b/configs/am64x_evm_a53_defconfig
index b817e62..6485ed1 100644
--- a/configs/am64x_evm_a53_defconfig
+++ b/configs/am64x_evm_a53_defconfig
@@ -1,6 +1,7 @@
CONFIG_ARM=y
CONFIG_SKIP_LOWLEVEL_INIT=y
CONFIG_ARCH_K3=y
+CONFIG_TI_SECURE_DEVICE=y
CONFIG_SYS_MALLOC_LEN=0x2000000
CONFIG_SYS_MALLOC_F_LEN=0x8000
CONFIG_SPL_GPIO=y
diff --git a/configs/am64x_evm_r5_defconfig b/configs/am64x_evm_r5_defconfig
index 96cb437..45d3265 100644
--- a/configs/am64x_evm_r5_defconfig
+++ b/configs/am64x_evm_r5_defconfig
@@ -1,5 +1,6 @@
CONFIG_ARM=y
CONFIG_ARCH_K3=y
+CONFIG_TI_SECURE_DEVICE=y
CONFIG_SYS_MALLOC_LEN=0x2000000
CONFIG_SYS_MALLOC_F_LEN=0x80000
CONFIG_SPL_GPIO=y
diff --git a/configs/synquacer_developerbox_defconfig b/configs/synquacer_developerbox_defconfig
index 8e7236b..17d70ef 100644
--- a/configs/synquacer_developerbox_defconfig
+++ b/configs/synquacer_developerbox_defconfig
@@ -2,7 +2,7 @@ CONFIG_ARM=y
CONFIG_ARCH_SYNQUACER=y
CONFIG_POSITION_INDEPENDENT=y
CONFIG_SYS_MALLOC_LEN=0x1000000
-CONFIG_SYS_MALLOC_F_LEN=0x400
+CONFIG_SYS_MALLOC_F_LEN=0x4000
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xe0000000
CONFIG_SF_DEFAULT_SPEED=31250000
diff --git a/doc/sphinx/requirements.txt b/doc/sphinx/requirements.txt
index f9f6cc6..aed4492 100644
--- a/doc/sphinx/requirements.txt
+++ b/doc/sphinx/requirements.txt
@@ -11,7 +11,7 @@ packaging==21.3
Pygments==2.11.2
pyparsing==3.0.7
pytz==2022.1
-requests==2.27.1
+requests==2.31.0
six==1.16.0
snowballstemmer==2.2.0
Sphinx==3.4.3
diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c
index 1cbb5d4..ff7b55f 100644
--- a/drivers/spi/omap3_spi.c
+++ b/drivers/spi/omap3_spi.c
@@ -347,20 +347,28 @@ static void _omap3_spi_set_wordlen(struct omap3_spi_priv *priv)
omap3_spi_write_chconf(priv, confr);
}
-static void spi_reset(struct mcspi *regs)
+static void spi_reset(struct omap3_spi_priv *priv)
{
unsigned int tmp;
- writel(OMAP3_MCSPI_SYSCONFIG_SOFTRESET, &regs->sysconfig);
+ writel(OMAP3_MCSPI_SYSCONFIG_SOFTRESET, &priv->regs->sysconfig);
do {
- tmp = readl(&regs->sysstatus);
+ tmp = readl(&priv->regs->sysstatus);
} while (!(tmp & OMAP3_MCSPI_SYSSTATUS_RESETDONE));
writel(OMAP3_MCSPI_SYSCONFIG_AUTOIDLE |
OMAP3_MCSPI_SYSCONFIG_ENAWAKEUP |
- OMAP3_MCSPI_SYSCONFIG_SMARTIDLE, &regs->sysconfig);
+ OMAP3_MCSPI_SYSCONFIG_SMARTIDLE, &priv->regs->sysconfig);
- writel(OMAP3_MCSPI_WAKEUPENABLE_WKEN, &regs->wakeupenable);
+ writel(OMAP3_MCSPI_WAKEUPENABLE_WKEN, &priv->regs->wakeupenable);
+
+ /*
+ * Set the same default mode for each channel, especially CS polarity
+ * which must be common for all SPI slaves before any transfer.
+ */
+ for (priv->cs = 0 ; priv->cs < OMAP4_MCSPI_CHAN_NB ; priv->cs++)
+ _omap3_spi_set_mode(priv);
+ priv->cs = 0;
}
static void _omap3_spi_claim_bus(struct omap3_spi_priv *priv)
@@ -430,7 +438,7 @@ static int omap3_spi_probe(struct udevice *dev)
priv->pin_dir = plat->pin_dir;
priv->wordlen = SPI_DEFAULT_WORDLEN;
- spi_reset(priv->regs);
+ spi_reset(priv);
return 0;
}
diff --git a/include/omap3_spi.h b/include/omap3_spi.h
index cae3770..5381431 100644
--- a/include/omap3_spi.h
+++ b/include/omap3_spi.h
@@ -46,6 +46,8 @@
#define OMAP4_MCSPI_REG_OFFSET 0x100
+#define OMAP4_MCSPI_CHAN_NB 4
+
/* OMAP3 McSPI registers */
struct mcspi_channel {
unsigned int chconf; /* 0x2C, 0x40, 0x54, 0x68 */
@@ -64,7 +66,7 @@ struct mcspi {
unsigned int wakeupenable; /* 0x20 */
unsigned int syst; /* 0x24 */
unsigned int modulctrl; /* 0x28 */
- struct mcspi_channel channel[4];
+ struct mcspi_channel channel[OMAP4_MCSPI_CHAN_NB];
/* channel0: 0x2C - 0x3C, bus 0 & 1 & 2 & 3 */
/* channel1: 0x40 - 0x50, bus 0 & 1 */
/* channel2: 0x54 - 0x64, bus 0 & 1 */
diff --git a/include/stdio_dev.h b/include/stdio_dev.h
index 3105928..77bf8a8 100644
--- a/include/stdio_dev.h
+++ b/include/stdio_dev.h
@@ -84,13 +84,6 @@ int stdio_init_tables(void);
*/
int stdio_add_devices(void);
-/**
- * stdio_init() - Sets up stdio ready for use
- *
- * This calls stdio_init_tables() and stdio_add_devices()
- */
-int stdio_init(void);
-
void stdio_print_current_devices(void);
/**
diff --git a/include/test/suites.h b/include/test/suites.h
index 7349ce5..1c7dc65 100644
--- a/include/test/suites.h
+++ b/include/test/suites.h
@@ -28,6 +28,7 @@ int cmd_ut_category(const char *name, const char *prefix,
int do_ut_addrmap(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[]);
+int do_ut_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
int do_ut_bootm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]);
int do_ut_bootstd(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[]);
diff --git a/lib/ecdsa/ecdsa-libcrypto.c b/lib/ecdsa/ecdsa-libcrypto.c
index d5939af..5fa9be1 100644
--- a/lib/ecdsa/ecdsa-libcrypto.c
+++ b/lib/ecdsa/ecdsa-libcrypto.c
@@ -111,16 +111,30 @@ static size_t ecdsa_key_size_bytes(const EC_KEY *key)
return EC_GROUP_order_bits(group) / 8;
}
+static int default_password(char *buf, int size, int rwflag, void *u)
+{
+ strncpy(buf, (char *)u, size);
+ buf[size - 1] = '\0';
+ return strlen(buf);
+}
+
static int read_key(struct signer *ctx, const char *key_name)
{
FILE *f = fopen(key_name, "r");
+ const char *key_pass;
if (!f) {
fprintf(stderr, "Can not get key file '%s'\n", key_name);
return -ENOENT;
}
- ctx->evp_key = PEM_read_PrivateKey(f, NULL, NULL, NULL);
+ key_pass = getenv("MKIMAGE_SIGN_PASSWORD");
+ if (key_pass) {
+ ctx->evp_key = PEM_read_PrivateKey(f, NULL, default_password, (void *)key_pass);
+
+ } else {
+ ctx->evp_key = PEM_read_PrivateKey(f, NULL, NULL, NULL);
+ }
fclose(f);
if (!ctx->evp_key) {
fprintf(stderr, "Can not read key from '%s'\n", key_name);
diff --git a/test/cmd/Makefile b/test/cmd/Makefile
index 055adc6..a3cf983 100644
--- a/test/cmd/Makefile
+++ b/test/cmd/Makefile
@@ -10,6 +10,7 @@ obj-$(CONFIG_CMD_PAUSE) += test_pause.o
endif
obj-y += exit.o mem.o
obj-$(CONFIG_CMD_ADDRMAP) += addrmap.o
+obj-$(CONFIG_CMD_BDI) += bdinfo.o
obj-$(CONFIG_CMD_FDT) += fdt.o
obj-$(CONFIG_CONSOLE_TRUETYPE) += font.o
obj-$(CONFIG_CMD_LOADM) += loadm.o
diff --git a/test/cmd/bdinfo.c b/test/cmd/bdinfo.c
new file mode 100644
index 0000000..9068df7
--- /dev/null
+++ b/test/cmd/bdinfo.c
@@ -0,0 +1,188 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Tests for bdinfo command
+ *
+ * Copyright 2023 Marek Vasut <marek.vasut+renesas@mailbox.org>
+ */
+
+#include <common.h>
+#include <console.h>
+#include <mapmem.h>
+#include <asm/global_data.h>
+#include <dm/uclass.h>
+#include <test/suites.h>
+#include <test/ut.h>
+#include <dm.h>
+#include <env.h>
+#include <lmb.h>
+#include <net.h>
+#include <video.h>
+#include <vsprintf.h>
+#include <asm/cache.h>
+#include <asm/global_data.h>
+#include <display_options.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Declare a new bdinfo test */
+#define BDINFO_TEST(_name, _flags) UNIT_TEST(_name, _flags, bdinfo_test)
+
+static void bdinfo_test_num_l(struct unit_test_state *uts,
+ const char *name, ulong value)
+{
+ ut_assert_nextline("%-12s= 0x%0*lx", name, 2 * (int)sizeof(value), value);
+}
+
+static void bdinfo_test_num_ll(struct unit_test_state *uts,
+ const char *name, unsigned long long value)
+{
+ ut_assert_nextline("%-12s= 0x%.*llx", name, 2 * (int)sizeof(ulong), value);
+}
+
+static void test_eth(struct unit_test_state *uts)
+{
+ const int idx = eth_get_dev_index();
+ uchar enetaddr[6];
+ char name[10];
+ int ret;
+
+ if (idx)
+ sprintf(name, "eth%iaddr", idx);
+ else
+ strcpy(name, "ethaddr");
+
+ ret = eth_env_get_enetaddr_by_index("eth", idx, enetaddr);
+
+ ut_assert_nextline("current eth = %s", eth_get_name());
+ if (!ret)
+ ut_assert_nextline("%-12s= (not set)", name);
+ else
+ ut_assert_nextline("%-12s= %pM", name, enetaddr);
+ ut_assert_nextline("IP addr = %s", env_get("ipaddr"));
+}
+
+static void test_video_info(struct unit_test_state *uts)
+{
+ const struct udevice *dev;
+ struct uclass *uc;
+
+ uclass_id_foreach_dev(UCLASS_VIDEO, dev, uc) {
+ ut_assert_nextline("%-12s= %s %sactive", "Video", dev->name,
+ device_active(dev) ? "" : "in");
+ if (device_active(dev)) {
+ struct video_priv *upriv = dev_get_uclass_priv(dev);
+ struct video_uc_plat *plat = dev_get_uclass_plat(dev);
+
+ bdinfo_test_num_ll(uts, "FB base", (ulong)upriv->fb);
+ if (upriv->copy_fb) {
+ bdinfo_test_num_ll(uts, "FB copy",
+ (ulong)upriv->copy_fb);
+ bdinfo_test_num_l(uts, " copy size",
+ plat->copy_size);
+ }
+ ut_assert_nextline("%-12s= %dx%dx%d", "FB size",
+ upriv->xsize, upriv->ysize,
+ 1 << upriv->bpix);
+ }
+ }
+}
+
+static void lmb_test_dump_region(struct unit_test_state *uts,
+ struct lmb_region *rgn, char *name)
+{
+ unsigned long long base, size, end;
+ enum lmb_flags flags;
+ int i;
+
+ ut_assert_nextline(" %s.cnt = 0x%lx / max = 0x%lx", name, rgn->cnt, rgn->max);
+
+ for (i = 0; i < rgn->cnt; i++) {
+ base = rgn->region[i].base;
+ size = rgn->region[i].size;
+ end = base + size - 1;
+ flags = rgn->region[i].flags;
+
+ ut_assert_nextline(" %s[%d]\t[0x%llx-0x%llx], 0x%08llx bytes flags: %x",
+ name, i, base, end, size, flags);
+ }
+}
+
+static void lmb_test_dump_all(struct unit_test_state *uts, struct lmb *lmb)
+{
+ ut_assert_nextline("lmb_dump_all:");
+ lmb_test_dump_region(uts, &lmb->memory, "memory");
+ lmb_test_dump_region(uts, &lmb->reserved, "reserved");
+}
+
+static int bdinfo_test_move(struct unit_test_state *uts)
+{
+ struct bd_info *bd = gd->bd;
+ int i;
+
+ /* Test moving the working BDINFO to a new location */
+ ut_assertok(console_record_reset_enable());
+ ut_assertok(run_commandf("bdinfo"));
+
+ bdinfo_test_num_l(uts, "boot_params", 0);
+
+ for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
+ if (bd->bi_dram[i].size) {
+ bdinfo_test_num_l(uts, "DRAM bank", i);
+ bdinfo_test_num_ll(uts, "-> start", bd->bi_dram[i].start);
+ bdinfo_test_num_ll(uts, "-> size", bd->bi_dram[i].size);
+ }
+ }
+
+ /* CONFIG_SYS_HAS_SRAM testing not supported */
+ bdinfo_test_num_l(uts, "flashstart", 0);
+ bdinfo_test_num_l(uts, "flashsize", 0);
+ bdinfo_test_num_l(uts, "flashoffset", 0);
+ ut_assert_nextline("baudrate = %lu bps",
+ env_get_ulong("baudrate", 10, 1234));
+ bdinfo_test_num_l(uts, "relocaddr", gd->relocaddr);
+ bdinfo_test_num_l(uts, "reloc off", gd->reloc_off);
+ ut_assert_nextline("%-12s= %u-bit", "Build", (uint)sizeof(void *) * 8);
+
+ if (IS_ENABLED(CONFIG_CMD_NET))
+ test_eth(uts);
+
+ /*
+ * Make sure environment variable "fdtcontroladdr" address
+ * matches mapped control DT address.
+ */
+ ut_assert(map_to_sysmem(gd->fdt_blob) == env_get_hex("fdtcontroladdr", 0x1234));
+ bdinfo_test_num_l(uts, "fdt_blob", (ulong)map_to_sysmem(gd->fdt_blob));
+ bdinfo_test_num_l(uts, "new_fdt", (ulong)map_to_sysmem(gd->new_fdt));
+ bdinfo_test_num_l(uts, "fdt_size", (ulong)gd->fdt_size);
+
+ if (IS_ENABLED(CONFIG_VIDEO))
+ test_video_info(uts);
+
+ /* The gd->multi_dtb_fit may not be available, hence, #if below. */
+#if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
+ bdinfo_test_num_l(uts, "multi_dtb_fit", (ulong)gd->multi_dtb_fit);
+#endif
+
+ if (IS_ENABLED(CONFIG_LMB) && gd->fdt_blob) {
+ struct lmb lmb;
+
+ lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob);
+ lmb_test_dump_all(uts, &lmb);
+ if (IS_ENABLED(CONFIG_OF_REAL))
+ ut_assert_nextline("devicetree = %s", fdtdec_get_srcname());
+ }
+
+ ut_assertok(ut_check_console_end(uts));
+
+ return 0;
+}
+
+BDINFO_TEST(bdinfo_test_move, UT_TESTF_CONSOLE_REC);
+
+int do_ut_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
+{
+ struct unit_test *tests = UNIT_TEST_SUITE_START(bdinfo_test);
+ const int n_ents = UNIT_TEST_SUITE_COUNT(bdinfo_test);
+
+ return cmd_ut_category("bdinfo", "bdinfo_test_", tests, n_ents, argc, argv);
+}
diff --git a/test/cmd_ut.c b/test/cmd_ut.c
index d440da8..0cb5144 100644
--- a/test/cmd_ut.c
+++ b/test/cmd_ut.c
@@ -54,6 +54,9 @@ int cmd_ut_category(const char *name, const char *prefix,
static struct cmd_tbl cmd_ut_sub[] = {
U_BOOT_CMD_MKENT(all, CONFIG_SYS_MAXARGS, 1, do_ut_all, "", ""),
U_BOOT_CMD_MKENT(info, 1, 1, do_ut_info, "", ""),
+#ifdef CONFIG_CMD_BDI
+ U_BOOT_CMD_MKENT(bdinfo, CONFIG_SYS_MAXARGS, 1, do_ut_bdinfo, "", ""),
+#endif
#ifdef CONFIG_BOOTSTD
U_BOOT_CMD_MKENT(bootstd, CONFIG_SYS_MAXARGS, 1, do_ut_bootstd,
"", ""),
@@ -176,6 +179,9 @@ static char ut_help_text[] =
#ifdef CONFIG_CMD_ADDRMAP
"\naddrmap - very basic test of addrmap command"
#endif
+#ifdef CONFIG_CMD_BDI
+ "\nbdinfo - bdinfo command"
+#endif
#ifdef CONFIG_SANDBOX
"\nbloblist - bloblist implementation"
#endif
diff --git a/test/py/requirements.txt b/test/py/requirements.txt
index 86d6266..f7e76bd 100644
--- a/test/py/requirements.txt
+++ b/test/py/requirements.txt
@@ -20,8 +20,8 @@ pytest==6.2.5
pytest-xdist==2.5.0
python-mimeparse==1.6.0
python-subunit==1.3.0
-requests==2.27.1
-setuptools==58.3.0
+requests==2.31.0
+setuptools==65.5.1
six==1.16.0
testtools==2.3.0
traceback2==1.4.0
diff --git a/test/test-main.c b/test/test-main.c
index b3c30d9..2a3b2ba 100644
--- a/test/test-main.c
+++ b/test/test-main.c
@@ -272,7 +272,7 @@ static int dm_test_restore(struct device_node *of_root)
return ret;
dm_scan_plat(false);
if (!CONFIG_IS_ENABLED(OF_PLATDATA))
- dm_scan_fdt(false);
+ dm_extended_scan(false);
return 0;
}