Merge tag 'efi-2024-01-rc1' of https://source.denx.de/u-boot/custodians/u-boot-efi
Pull request efi-2024-01-rc1
Documentation:
* Bump urllib3 version
* Migrate Renesas board docs to rst
* Link an introduction video
UEFI
* Use same GUID as EDK II for auto-created boot options
* Clean up BitBlt test
diff --git a/doc/README.rmobile b/doc/README.rmobile
deleted file mode 100644
index 524d839..0000000
--- a/doc/README.rmobile
+++ /dev/null
@@ -1,99 +0,0 @@
-Summary
-=======
-
-This README is about U-Boot support for Renesas's ARM Cortex-A9 based RMOBILE[1]
-and Cortex-A9/A53/A57 based R-Car[2] family of SoCs. Renesas's RMOBILE/R-Car SoC
-family contains an ARM Cortex-A9/A53/A57.
-
-Currently the following boards are supported:
-
-| SoC | Board | defconfig
-|===============+========================================+===================
-| R8A73A0 | KMC KZM-A9-GT [3] | kzm9g_config
-| R8A7734 | Atmark-Techno Armadillo-800-EVA [4] | armadillo-800eva_config
-|===============+========================================+===================
-| R8A7790 H2 | Renesas Electronics Lager | lager_defconfig
-| | Renesas Electronics Stout | stout_defconfig
-|---------------+----------------------------------------+-------------------
-| R8A7791 M2-W | Renesas Electronics Koelsch | koelsch_defconfig
-| | Renesas Electronics Porter | porter_defconfig
-|---------------+----------------------------------------+-------------------
-| R8A7792 V2H | Renesas Electronics Blanche | blanche_defconfig
-|---------------+----------------------------------------+-------------------
-| R8A7793 M2-N | Renesas Electronics Gose | gose_defconfig
-|---------------+----------------------------------------+-------------------
-| R8A7794 E2 | Renesas Electronics Alt | alt_defconfig
-| | Renesas Electronics Silk | silk_defconfig
-|===============+========================================+===================
-| R8A7795 H3 | Renesas Electronics Salvator-XS ES2.0+ | r8a7795_salvator-x_defconfig
-| R8A7795 H3 | Renesas Electronics ULCB ES2.0+ | r8a7795_ulcb
-|---------------+----------------------------------------+-------------------
-| R8A7796 M3-W | Renesas Electronics Salvator-X | r8a7796_salvator-x_defconfig
-| R8A7796 M3-W | Renesas Electronics ULCB | r8a7796_ulcb
-|---------------+----------------------------------------+-------------------
-| R8A77965 M3-N | Renesas Electronics Salvator-XS | r8a77965_salvator-x_defconfig
-| R8A77965 M3-N | Renesas Electronics ULCB | r8a77965_ulcb
-|---------------+----------------------------------------+-------------------
-| R8A77970 V3M | Renesas Electronics Eagle | r8a77970_eagle_defconfig
-| R8A77970 V3M | Renesas Electronics V3MSK | r8a77970_v3msk_defconfig
-|---------------+----------------------------------------+-------------------
-| R8A77995 D3 | Renesas Electronics Draak | r8a77995_draak_defconfig
-'===============+========================================+===================
-
-Toolchain
-=========
-
-Either ARMv7 toolchain for 32bit Cortex-A9 systems or ARMv8 (aarch64)
-toolchain for 64bit Cortex-A53/A57 systems. Currently we compile the
-32bit systems with -march=armv5 to allow more compilers to work. (For
-U-Boot code this has no performance impact.)
-
-Currently, ELDK[5], Linaro[6], CodeSourcery[7] and Emdebian[8] supports
-ARMv7. Modern distributions also contain ARMv7 and ARMv8 crosstoolchains
-in their package feeds.
-
-Build
-=====
-
-Locate defconfig in the table above. Then apply standard build procedure:
-
- make <board>_defconfig
- make
-
- Note: Armadillo-800-EVA's U-Boot supports booting from SDcard only.
- Please see "B.2 Appendix B Boot Specifications" in hardware manual.
-
-Links
-=====
-
-[1] Renesas RMOBILE:
-
-http://am.renesas.com/products/soc/assp/mobile/r_mobile/index.jsp
-
-[2] Renesas R-Car:
-
-http://am.renesas.com/products/soc/assp/automotive/index.jsp
-
-[3] KZM-A9-GT
-
-http://www.kmckk.co.jp/kzma9-gt/index.html
-
-[4] Armadillo-800-EVA
-
-http://armadillo.atmark-techno.com/armadillo-800-EVA
-
-[5] ELDK
-
-http://www.denx.de/wiki/view/ELDK-5/WebHome#Section_1.6.
-
-[6] Linaro
-
-http://www.linaro.org/downloads/
-
-[7] CodeSourcey
-
-http://www.mentor.com/embedded-software/codesourcery
-
-[8] Emdebian
-
-http://www.emdebian.org/crosstools.html
diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst
index 04dee8d..7d961e8 100644
--- a/doc/board/renesas/renesas.rst
+++ b/doc/board/renesas/renesas.rst
@@ -9,37 +9,230 @@
This document describes the information about Renesas supported boards
and their usage steps.
-Renesas boards
---------------
+Renesas SoC based boards
+------------------------
Renesas is a SoC solutions provider for automotive and industrial applications.
-U-Boot supports several Renesas SoC families:
+.. list-table:: Supported Renesas SoC based boards
+ :widths: 10, 25, 15, 10, 25
+ :header-rows: 1
-* R-Car Gen2 (32-bit)
- - Blanche board
- - Gose board
- - Koelsch board
- - Lager board
- - Silk board
- - Porter board
- - Stout board
-* R-Car Gen3 (64-bit)
- - Condor board
- - Draak board
- - Eagle board
- - Ebisu board
- - Salvator-X and Salvator-XS boards
- - ULCB board
-* R-Car Gen4 (64-bit)
- - Falcon board
- - Spider board
- - Whitehawk board
-* RZ/A1 (32-bit)
- - GR-PEACH board
-* RZ/G
- - Beacon-rzg2 board
- - Hihope-rzg2 board
- - ek874 board
-* RZ/N1 (32-bit)
- - Schneider rzn1-snarc board
+ * - Family
+ - Board
+ - SoC
+ - Arch
+ - defconfig
+
+ * - R2D
+ - R2D-PLUS
+ - SH7751
+ - sh
+ - r2dplus_defconfig
+
+ * - RZ/A1
+ - GR-PEACH
+ - R7S72100 (RZ/A1H)
+ - arm
+ - grpeach_defconfig
+
+ * - R-Car Gen2
+ - Lager
+ - R8A7790 (H2)
+ - arm
+ - lager_defconfig
+
+ * -
+ - Stout
+ - R8A7790 (H2)
+ - arm
+ - stout_defconfig
+
+ * -
+ - Koelsch
+ - R8A7791 (M2-W)
+ - arm
+ - koelsch_defconfig
+
+ * -
+ - Porter
+ - R8A7791 (M2-W)
+ - arm
+ - porter_defconfig
+
+ * -
+ - Blanche
+ - R8A7792 (V2H)
+ - arm
+ - blanche_defconfig
+
+ * -
+ - Gose
+ - R8A7793 (M2-N)
+ - arm
+ - gose_defconfig
+
+ * -
+ - Alt
+ - R8A7794 (E2)
+ - arm
+ - alt_defconfig
+
+ * -
+ - Silk
+ - R8A7794 (E2)
+ - arm
+ - silk_defconfig
+
+ * - R-Car Gen3
+ - Salvator-X(S)
+ - R8A77951 (H3)
+ - arm64
+ - rcar3_salvator-x_defconfig
+
+ * -
+ - ULCB
+ - R8A77951 (H3)
+ - arm64
+ - rcar3_ulcb_defconfig
+
+ * -
+ - Salvator-X(S)
+ - R8A77960 (M3-W)
+ - arm64
+ - rcar3_salvator-x_defconfig
+
+ * -
+ - ULCB
+ - R8A77960 (M3-W)
+ - arm64
+ - rcar3_ulcb_defconfig
+
+ * -
+ - Salvator-X(S)
+ - R8A77965 (M3-N)
+ - arm64
+ - rcar3_salvator-x_defconfig
+
+ * -
+ - ULCB
+ - R8A77965 (M3-N)
+ - arm64
+ - rcar3_ulcb_defconfig
+
+ * -
+ - Eagle
+ - R8A77970 (V3M)
+ - arm64
+ - r8a77970_eagle_defconfig
+
+ * -
+ - V3MSK
+ - R8A77970 (V3M)
+ - arm64
+ - r8a77970_v3msk_defconfig
+
+ * -
+ - Condor
+ - R8A77980 (V3H)
+ - arm64
+ - r8a77980_condor_defconfig
+
+ * -
+ - V3HSK
+ - R8A77980 (V3H)
+ - arm64
+ - r8a77980_v3hsk_defconfig
+
+ * -
+ - Ebisu
+ - R8A77990 (E3)
+ - arm64
+ - r8a77990_ebisu_defconfig
+
+ * -
+ - Draak
+ - R8A77995 (D3)
+ - arm64
+ - r8a77995_draak_defconfig
+
+ * - R-Car Gen4
+ - Falcon
+ - R8A779A0 (V3U)
+ - arm64
+ - r8a779a0_falcon_defconfig
+
+ * -
+ - Spider
+ - R8A779F0 (S4)
+ - arm64
+ - r8a779f0_spider_defconfig
+
+ * -
+ - White Hawk
+ - R8A779G0 (V4H)
+ - arm64
+ - r8a779g0_whitehawk_defconfig
+
+ * - RZ/G2 Family
+ - Beacon EmbeddedWorks RZ/G2M SoM
+ - R8A774A1 (RZ/G2M)
+ - arm64
+ - rzg2_beacon_defconfig
+
+ * -
+ - HopeRun HiHope RZ/G2M
+ - R8A774A1 (RZ/G2M)
+ - arm64
+ - hihope_rzg2_defconfig
+
+ * -
+ - Beacon EmbeddedWorks RZ/G2N SoM
+ - R8A774B1 (RZ/G2N)
+ - arm64
+ - rzg2_beacon_defconfig
+
+ * -
+ - HopeRun HiHope RZ/G2N
+ - R8A774B1 (RZ/G2N)
+ - arm64
+ - hihope_rzg2_defconfig
+
+ * -
+ - Silicon Linux RZ/G2E evaluation kit (EK874)
+ - R8A774C0 (RZ/G2E)
+ - arm64
+ - silinux_ek874_defconfig
+
+ * -
+ - Beacon EmbeddedWorks RZ/G2H SoM
+ - R8A774E1 (RZ/G2H)
+ - arm64
+ - rzg2_beacon_defconfig
+
+ * -
+ - HopeRun HiHope RZ/G2H
+ - R8A774E1 (RZ/G2H)
+ - arm64
+ - hihope_rzg2_defconfig
+
+ * - :doc:`RZ/N1 Family <rzn1>`
+ - Schneider RZ/N1D board
+ - R9A06G032 (RZ/N1D)
+ - arm64
+ - rzn1_snarc_defconfig
+
+ * -
+ - Schneider RZ/N1S board
+ - R9A06G033 (RZ/N1S)
+ - arm64
+ - rzn1_snarc_defconfig
+
+Build
+-----
+
+Locate the appropriate defconfig in the table above. Then apply standard build
+procedure::
+
+ make <board_defconfig>
+ make
diff --git a/doc/develop/cyclic.rst b/doc/develop/cyclic.rst
index 43bedac..6783149 100644
--- a/doc/develop/cyclic.rst
+++ b/doc/develop/cyclic.rst
@@ -8,11 +8,11 @@
blinking etc. The functions that are hooked into this cyclic list should
be small timewise as otherwise the execution of the other code that relies
on a high frequent polling (e.g. UART rx char ready check) might be
-delayed too much. To detect cyclic functions with a too long execution
-time, the Kconfig option `CONFIG_CYCLIC_MAX_CPU_TIME_US` is introduced,
-which configures the max allowed time for such a cyclic function. If it's
-execution time exceeds this time, this cyclic function will get removed
-from the cyclic list.
+delayed too much. To detect cyclic functions with an excessive execution
+time, the Kconfig option `CONFIG_CYCLIC_MAX_CPU_TIME_US` was introduced.
+It defines the maximum allowable execution time for such a cyclic function. The
+first time the execution of a cyclic function exceeds this interval, a warning
+will be displayed indicating the problem to the user.
Registering a cyclic function
-----------------------------
diff --git a/doc/learn/talks.rst b/doc/learn/talks.rst
index 0bb44ae..d65e3b9 100644
--- a/doc/learn/talks.rst
+++ b/doc/learn/talks.rst
@@ -15,6 +15,9 @@
<https://www.youtube.com/watch?v=YlJBsVZJkDI>`__
from Embedded Linux Conference 2023.
+* `Introduction to U-Boot for beginners
+ <https://www.youtube.com/watch?v=rVaiLgXccSE>`__
+
See elinux_talks_ for a more comprehensive list.
.. _elinux_talks: https://elinux.org/Boot_Loaders#U-Boot
diff --git a/doc/sphinx/requirements.txt b/doc/sphinx/requirements.txt
index 6ccbe52..6d45a3f 100644
--- a/doc/sphinx/requirements.txt
+++ b/doc/sphinx/requirements.txt
@@ -23,4 +23,4 @@
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.3
sphinxcontrib-serializinghtml==1.1.5
-urllib3==1.26.9
+urllib3==2.0.6
diff --git a/include/efi_loader.h b/include/efi_loader.h
index 4a29dda..e244105 100644
--- a/include/efi_loader.h
+++ b/include/efi_loader.h
@@ -149,8 +149,8 @@
/* GUID for the auto generated boot menu entry */
#define EFICONFIG_AUTO_GENERATED_ENTRY_GUID \
- EFI_GUID(0x38c1acc1, 0x9fc0, 0x41f0, \
- 0xb9, 0x01, 0xfa, 0x74, 0xd6, 0xd6, 0xe4, 0xde)
+ EFI_GUID(0x8108ac4e, 0x9f11, 0x4d59, \
+ 0x85, 0x0e, 0xe2, 0x1a, 0x52, 0x2c, 0x59, 0xb2)
/* Use internal device tree when starting UEFI application */
#define EFI_FDT_USE_INTERNAL NULL
diff --git a/lib/efi_selftest/efi_selftest_bitblt.c b/lib/efi_selftest/efi_selftest_bitblt.c
index 1def843..605078b 100644
--- a/lib/efi_selftest/efi_selftest_bitblt.c
+++ b/lib/efi_selftest/efi_selftest_bitblt.c
@@ -14,6 +14,12 @@
#define HEIGHT 120
#define DEPTH 60
+struct pos {
+ efi_uintn_t x;
+ efi_uintn_t y;
+ int redrawn;
+};
+
static const struct efi_gop_pixel BLACK = { 0, 0, 0, 0};
static const struct efi_gop_pixel RED = { 0, 0, 255, 0};
static const struct efi_gop_pixel ORANGE = { 0, 128, 255, 0};
@@ -27,7 +33,7 @@
static struct efi_gop *gop;
static struct efi_gop_pixel *bitmap;
static struct efi_event *event;
-static efi_uintn_t xpos;
+static struct pos pos;
static void ellipse(efi_uintn_t x, efi_uintn_t y,
efi_uintn_t x0, efi_uintn_t y0,
@@ -62,31 +68,33 @@
*/
static void EFIAPI notify(struct efi_event *event, void *context)
{
- efi_uintn_t *pos = context;
+ struct pos *pos = context;
efi_uintn_t dx, sx, width;
if (!pos)
return;
/* Increment position */
- *pos += 5;
- if (*pos >= WIDTH + gop->mode->info->width)
- *pos = 0;
+ pos->x += 5;
+ if (pos->x >= WIDTH + gop->mode->info->width)
+ pos->x = 0;
width = WIDTH;
- dx = *pos - WIDTH;
+ dx = pos->x - WIDTH;
sx = 0;
- if (*pos >= gop->mode->info->width) {
- width = WIDTH + gop->mode->info->width - *pos;
- } else if (*pos < WIDTH) {
+ if (pos->x >= gop->mode->info->width) {
+ width = WIDTH + gop->mode->info->width - pos->x;
+ } else if (pos->x < WIDTH) {
dx = 0;
- sx = WIDTH - *pos;
- width = *pos;
+ sx = WIDTH - pos->x;
+ width = pos->x;
}
/* Copy image to video */
- gop->blt(gop, bitmap, EFI_BLT_BUFFER_TO_VIDEO, sx, 0, dx, DEPTH,
+ gop->blt(gop, bitmap, EFI_BLT_BUFFER_TO_VIDEO, sx, 0, dx, pos->y,
width, HEIGHT, WIDTH * sizeof(struct efi_gop_pixel));
+
+ pos->redrawn = 1;
}
/*
@@ -107,7 +115,7 @@
/* Create event */
ret = boottime->create_event(EVT_TIMER | EVT_NOTIFY_SIGNAL,
- TPL_CALLBACK, notify, (void *)&xpos,
+ TPL_CALLBACK, notify, (void *)&pos,
&event);
if (ret != EFI_SUCCESS) {
efi_st_error("could not create event\n");
@@ -247,6 +255,9 @@
return EFI_ST_FAILURE;
}
+ con_out->set_attribute(con_out, EFI_WHITE | EFI_BACKGROUND_BLUE);
+ con_out->clear_screen(con_out);
+
/* Fill background */
ret = gop->blt(gop, bitmap, EFI_BLT_VIDEO_FILL, 0, 0, 0, 0,
info->width, info->height, 0);
@@ -281,21 +292,53 @@
return EFI_ST_FAILURE;
}
- /* Set 250ms timer */
- xpos = WIDTH;
+ /* Set 25ms timer */
+ pos.x = WIDTH;
+ pos.y = DEPTH;
ret = boottime->set_timer(event, EFI_TIMER_PERIODIC, 250000);
if (ret != EFI_SUCCESS) {
efi_st_error("Could not set timer\n");
return EFI_ST_FAILURE;
}
- con_out->set_cursor_position(con_out, 0, 0);
- con_out->set_attribute(con_out, EFI_WHITE | EFI_BACKGROUND_BLUE);
efi_st_printf("The submarine should have three yellow port holes.\n");
- efi_st_printf("Press any key to continue");
- efi_st_get_key();
+ efi_st_printf("UP, DOWN to navigate, any other key to quit");
+ for (;;) {
+ struct efi_input_key input_key;
+
+ ret = boottime->check_event(con_in->wait_for_key);
+ if (ret == EFI_NOT_READY)
+ continue;
+ if (ret != EFI_SUCCESS) {
+ efi_st_error("CheckEvent failed %x\n",
+ (unsigned int)ret);
+ return EFI_ST_FAILURE;
+ }
+ ret = con_in->read_key_stroke(con_in, &input_key);
+ if (ret != EFI_SUCCESS) {
+ efi_st_error("Key not available %x\n",
+ (unsigned int)ret);
+ return EFI_ST_FAILURE;
+ }
+ switch (input_key.scan_code) {
+ case 0x01: /* UP */
+ if (pos.redrawn && pos.y >= 5) {
+ pos.y -= 5;
+ pos.redrawn = 0;
+ }
+ continue;
+ case 0x02: /* DOWN */
+ if (pos.redrawn &&
+ pos.y + HEIGHT + 5 < gop->mode->info->height) {
+ pos.y += 5;
+ pos.redrawn = 0;
+ }
+ continue;
+ }
+ break;
+ }
con_out->set_attribute(con_out, EFI_LIGHTGRAY);
- efi_st_printf("\n");
+ con_out->clear_screen(con_out);
return EFI_ST_SUCCESS;
}