]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
Merge tag 'efi-2024-01-rc1' of https://source.denx.de/u-boot/custodians/u-boot-efi
authorTom Rini <trini@konsulko.com>
Fri, 13 Oct 2023 15:08:10 +0000 (11:08 -0400)
committerTom Rini <trini@konsulko.com>
Fri, 13 Oct 2023 15:08:10 +0000 (11:08 -0400)
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

doc/README.rmobile [deleted file]
doc/board/renesas/renesas.rst
doc/develop/cyclic.rst
doc/learn/talks.rst
doc/sphinx/requirements.txt
include/efi_loader.h
lib/efi_selftest/efi_selftest_bitblt.c

diff --git a/doc/README.rmobile b/doc/README.rmobile
deleted file mode 100644 (file)
index 524d839..0000000
+++ /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
index 04dee8da24546c45785777aa6b2601b37bd2a64b..7d961e862e4f99cb983700262e0d69fceedd66f3 100644 (file)
@@ -9,37 +9,230 @@ About this
 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:
-
-* 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
+.. list-table:: Supported Renesas SoC based boards
+   :widths: 10, 25, 15, 10, 25
+   :header-rows: 1
+
+   * - 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
index 43bedacb9f88884cf56acb57ff4a129441f1d28c..67831496a70608b5af4c672c05da9ca8375e2224 100644 (file)
@@ -8,11 +8,11 @@ execute code, e.g. every 100ms. Examples for such functions might be LED
 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
 -----------------------------
index 0bb44aeabe55a417aa6ee2a8fb41666113406e94..d65e3b92be1a93e41839935a8389270dee417ec8 100644 (file)
@@ -15,6 +15,9 @@ learn a bit about U-Boot:
   <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
index 6ccbe527ee791cc0b750bf65d29e35f8fe2f6a43..6d45a3fefffe6214722ee6392da18bb4810282b2 100644 (file)
@@ -23,4 +23,4 @@ sphinxcontrib-htmlhelp==2.0.0
 sphinxcontrib-jsmath==1.0.1
 sphinxcontrib-qthelp==1.0.3
 sphinxcontrib-serializinghtml==1.1.5
-urllib3==1.26.9
+urllib3==2.0.6
index 4a29ddaef4208f36126ff3571d3367d9520f6f76..e24410505f404637b230f5340174f0c254ca14a9 100644 (file)
@@ -149,8 +149,8 @@ static inline efi_status_t efi_launch_capsules(void)
 
 /* 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
index 1def843505431d80cc8fca89ca44cfad024d5c7f..605078b722da3077b3815ad416260bc23c042067 100644 (file)
 #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 efi_guid_t efi_gop_guid = EFI_GRAPHICS_OUTPUT_PROTOCOL_GUID;
 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 rectangle(efi_uintn_t x, efi_uintn_t y,
  */
 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 @@ static int setup(const efi_handle_t handle,
 
        /* 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 @@ static int execute(void)
                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 @@ static int execute(void)
                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;
 }