summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-04-04android: boot: ramdisk: support vendor ramdiskSafae Ouajih2-4/+13
Version 3 and 4 of boot image header introduced vendor boot ramdisk: Please check include/android_image.h for details. The ramdisk is now split into a generic ramdisk in boot image and a vendor ramdisk in vendor boot image. Support the new vendor ramdisk. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: update android_image_get_data to support v3, v4Safae Ouajih3-3/+91
Since boot image header version 3 and 4 introduced vendor boot image, use the following functions to fill the generic android structure : andr_image_data: - android_boot_image_v3_v4_parse_hdr() - android_vendor_boot_image_v3_v4_parse_hdr() Update android_image_get_data() to support v3 and v4 Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: add vendor boot image to prepare for v3, v4 supportSafae Ouajih6-39/+81
Introduce vendor boot image for version 3 and 4 of boot image header. The vendor boot image will hold extra information about kernel, dtb and ramdisk. This is done to prepare for boot image version 3 and 4 support. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: boot image header v3, v4 do not support recovery DTBOSafae Ouajih1-2/+2
android_image_get_dtbo() is used to get recovery DTBO via abootimg cmd. This is not supported in boot image header v3 and v4. Thus, print an error message when v1,v2 header version are not used. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: content print is not supported for v3, v4 header versionSafae Ouajih1-1/+5
Content print is not supported for version 3 and 4 of boot image header. Thus, only print that content when v2 is used. Update android_print_contents() to print an error message when trying to print boot image header version 3 or 4 content. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: move to andr_image_data structureSafae Ouajih2-71/+81
Move from andr_boot_img_hdr_v0 to andr_image_data structure to prepare for boot image header version 3 and 4. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: kcomp: support andr_image_dataSafae Ouajih3-1/+113
andr_image_data structure is used as a global representation of boot image header structure. Introduce this new structure to support all boot header versions : v0,v1.v2.v3.v4 and to support v3 and v4 while maitaining support for v0,v1,v2. The need of using andr_image_data comes from the change of header structure in both version 3 and 4. Rework android_image_get_kcomp() to support this new struct. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: add boot image header v3 and v4 structuresSafae Ouajih1-1/+182
Add support for v3/v4 boot image format by adding the following structures: - andr_boot_img_hdr_v3 : describes boot image header - andr_vnd_boot_img_hdr : describes vendor boot image header These definitions have been copied over from the AOSP documentation at [1] and [2] Boot arg sizes are taken from [3]: commit: 35fb6262bc3f (ANDROID: Support for vendor boot) This also adds documentation for boot image header v3/v4 structure that was imported from [4], file: include/bootimg/bootimg.h commit: 8d0922bfb932 (Adding GKI signature in boot.img v4) Link:[1] https://source.android.com/docs/core/architecture/bootloader/boot-image-header Link:[2] https://source.android.com/docs/core/architecture/bootloader/partitions/vendor-boot-partitions#vendor-boot-header Link:[3] https://android.googlesource.com/platform/external/u-boot Link:[4] https://android.googlesource.com/platform/system/tools/mkbootimg Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: replace android_image_check_headerSafae Ouajih5-29/+19
With the new vendor boot image introduced in versions 3 and 4 of boot image header, the header check must be done for both boot image and vendor boot image. Thus, replace android_image_check_header() by is_android_boot_image_header() to only refer to boot image header check. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: support vendor boot image in abootimgSafae Ouajih1-3/+15
Vendor boot image is introduced in boot image header version 3 and 4. Please check [1] for more details. To prepare for boot image v3/v4 support, allow the abootimg command to store the vendor_boot image address. Full support for this new format will be done in a future patch. Link:[1] https://source.android.com/docs/core/architecture/bootloader/partitions/vendor-boot-partitions Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04android: boot: rename andr_img_hdr -> andr_boot_img_hdr_v0Safae Ouajih6-33/+129
Android introduced boot header version 3 or 4. The header structure change with version 3 and 4 to support the new updates such as: - Introducing Vendor boot image: with a vendor ramdisk - Bootconfig feature (v4) Change andr_img_hdr struct name to maintain support for version v0, v1 and v2 while introducing version 3 and 4. Signed-off-by: Safae Ouajih <souajih@baylibre.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
2023-04-04Merge branch '2023-04-04-update-to-clang-16'Tom Rini6-15/+35
- Update our CI to use clang-16 for tests. This also changes slightly how we do linker lists so that we don't rely on undefined behavior that lead to clang-15 and later failing to work (and in some cases seemingly, earlier versions of clang would sometimes fail).
2023-04-04CI: Move to clang-16Tom Rini3-7/+7
As this is now the stable release, move to using that now for our tests. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-04-04linker_lists: Rework start/end macros to not rely on undefined behaviorTom Rini1-4/+12
Per the GCC bug listed below, the way we do linker lists is relying on undefined behavior that seems to work in gcc, but doesn't always work in clang. Andrew suggests rewriting our start/end macros in a different way (as implemented here, from what he said in comment 1) to avoid these problems. Reported-by: AdityaK <appujee@google.com> Suggested-by: Andrew Pinski <apinski@marvell.com> Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108915 Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Andrew Pinski <apinski@marvell.com>
2023-04-04smartweb: Enable LTOTom Rini1-0/+1
In order to prepare for slight size growth due to reworking linker list support, enable LTO here to save more space again. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Heiko Schocher <hs@denx.de>
2023-04-04Dockerfile: Populate a pip cacheTom Rini1-0/+11
Given the number of jobs in CI we have which use python and pip install packages, we should do this once in the Dockerfile, in order to populate the cache. We let each job continue to create and use the virtual environments they need to facilitate making updates to these environments easier. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-04-04pytest: Update requirements to match sphinx versionsTom Rini1-4/+4
In order to better make use of pip caches, and also for better overall consistency, we should use the same versions of packages in each of our python requirements files. Update pytest to use the newer versions of packages we use in sphinx builds. Signed-off-by: Tom Rini <trini@konsulko.com> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-04-04Merge tag 'u-boot-imx-next-20230404' of ↵Tom Rini44-355/+7264
https://gitlab.denx.de/u-boot/custodians/u-boot-imx u-boot-imx-next-20230404 ------------------------ CI : https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/15887 - boards : DH-Electronics, Toradex, imx8mp-beacon-kit
2023-04-04arm64: imx: Add support for imx8mp-beacon-kitAdam Ford18-0/+3578
Beacon Embedded has an i.MX8M Plus development kit which consists of a SOM + baseboard. The SOM includes Bluetooth, WiFi, QSPI, eMMC, and one Ethernet PHY. The baseboard includes audio, HDMI, USB-C Dual Role port, USB Hub with five ports, a PCIe slot, and a second Ethernet PHY. The device trees are already queued for inclusion in Linux 6.3. Signed-off-by: Adam Ford <aford173@gmail.com> Reviewed-by: Tom Rini <trini@konsulko.com>
2023-04-04ARM: imx: Enable LTO for DH electronics i.MX6 DHCOMMarek Vasut1-0/+1
Enable LTO to reduce the size of SPL, which with SPL SDP support may be close to the limit. Signed-off-by: Marek Vasut <marex@denx.de>
2023-04-04ARM: dts: imx: Add support for Data Modul i.MX8M Plus eDM SBCMarek Vasut14-0/+3519
Add support for Data Modul i.MX8M Plus eDM SBC board. This is an evaluation board for various custom display units. Currently supported are serial console, ethernet, eMMC, SD, SPI NOR, USB. Signed-off-by: Marek Vasut <marex@denx.de>
2023-04-04ARM: dts: imx: Add WDT reboot bindings on DH i.MX6 DHSOMMarek Vasut1-0/+10
Add WDT reboot bindings on DH i.MX6 DHSOM to permit the platform to reboot via WDT in U-Boot. These are custom U-Boot bindings, hence they are placed in -u-boot.dtsi . Reviewed-by: Fabio Estevam <festevam@denx.de> Signed-off-by: Marek Vasut <marex@denx.de>
2023-04-04board: verdin-imx8mp: change prints in spl_dram_init functionEmanuele Ghidoli1-4/+10
change prints to show which DDR configuration (single/dual rank) is used Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2023-04-04board: verdin-imx8mp: compact slight different lpddr4 configurationEmanuele Ghidoli3-322/+75
Deduplicate similar DDRC configurations and LPDDR4 training patterns by patching a single configuration. The aim is to reduce the SPL memory footprint and simplify maintenance of lpddr4_timing.c Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2023-04-04board: verdin-imx8mp: update lpddr4 configuration and trainingEmanuele Ghidoli1-24/+25
Update LPDDR4 configuration and training using updated spreadsheet and tools from NXP using data from previous spreadsheet and verified toward datasheet: - MX8M_Plus_LPDDR4_RPA_v9.xlsx - mscale_ddr_tool_v3.30.exe From: https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8M-Family-DDR-Tool-Release/ta-p/1104467 Some register values differ due to these fixes/modifications: - corrected calculation of T_CKPDX parameter (equal to tCKCKEH for LPDDR4) - corrected ECC related items, none of which affect normal operation when ECC is not enabled - corrected formula for calculation of tRTP in cell D122 Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2023-04-04board: verdin-imx8mp: fix lpddr4 refresh timingEmanuele Ghidoli1-12/+12
Change tRFCmin (tRFCab) from 280 ns to 380 ns to be compliant with current and futures memories. Fixes: 2bc2f817cea7 ("board: toradex: add verdin imx8m plus support") Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2023-04-04board: verdin-imx8mp: update ddrc config for different lpddr4 memoriesEmanuele Ghidoli2-5/+4
Add support to Verdin IMX8MP V1.1B SKU which uses MT53E1G32D2FW-046 WT:B memory. Compared to the 8 GB memory (MT53E2G32D4NQ-046 WT:A) used on Verdin IMX8MP V1.0A it has 16 row addresses instead of 17. In fact, the new memory, is a 2 GB/rank memory. The 8 GB memory is a 4 GB/rank memory. Manually tweaking Host Interface addresses vs LPDDR4 signals mapping it is possible to have a single configuration working with both memories: - Old configuration: HIF bit 30 -> rank, HIF bit 29 -> Row 16 - New configuration: HIF bit 29 -> rank, HIF bit 30 -> Row 16 With this change the memory space from the host processor is contiguous for both the configurations and the correct memory size is computed using get_ram_size() at runtime. Support for single rank memories still works thanks to the fact dual ranks training fails (ddr_init->ddr_cfg_phy) toward single rank memories. Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com> Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
2023-04-04configs: tqma6: enable DM_THERMALMarkus Niebel6-0/+12
Enabling this gives some informal output at boot time. Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>
2023-04-04configs: tqma6: enable DM for MDIO / PHYMarkus Niebel6-0/+18
Since this works with current device trees, enabled these. Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>
2023-04-04configs: tqma6: switch to DM_SERIALMarkus Niebel6-6/+6
Usage without DM_SERIAL is deprecated. Fix this. Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>
2023-04-04arm: imx: add u-boot-nand.imx to boot from NAND without SPLLuca Ceresoli2-0/+9
U-Boot can be booted from NAND without SPL by prepending the DCD header to the actual U-Boot binary. However this requires prepending 1024 bytes to u-boot.imx (DCD + u-boot.bin). There is already a similar target to build spl/u-boot-nand-spl.imx, add the same option for no-SPL boot. Tested on i.MX6ULL. The resulting layout of u-boot-nand.imx is: - Offset 0x0000 (0 KiB): padding - Offset 0x0400 (1 KiB): DCD header - Offset 0x1000 (4 KiB): u-boot.bin Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
2023-04-04ARM: imx: Enable SDP download in SPL on DH i.MX6 DHSOMMarek Vasut2-2/+5
Enable SDP protocol support in SPL for DH i.MX6 DHSOM, now that those components fit into the SPL due to LTO. To start U-Boot via SDP upload on i.MX6 DHSOM based board, proceed as follows: - Compile imx_usb [1] . - Power off the i.MX6 DHSOM based board. - Connect both USB-serial console and USB-OTG miniB ports to host PC. - Switch board to USB boot mode. - Power on the board. - Verify using '$ dmesg' that a new device has been detected as follows: New USB device found, idVendor=15a2, idProduct=0054, bcdDevice= 0.01 New USB device strings: Mfr=1, Product=2, SerialNumber=0 Product: SE Blank ARIK Manufacturer: Freescale SemiConductor Inc - Upload U-Boot SPL: $ imx_usb u-boot-with-spl.imx - Wait for SPL to come up, the following print ought to be the last on UART console: SDP: handle requests... - Upload U-Boot proper: $ imx_usb u-boot.img [1] https://github.com/boundarydevices/imx_usb_loader.git Signed-off-by: Marek Vasut <marex@denx.de>
2023-04-03Merge https://source.denx.de/u-boot/custodians/u-boot-usbTom Rini2-1/+2
- Two USB gadget fixes
2023-04-03mx6sx-udoo-neo-basic-u-boot.dtsi: Correct to bootph-allTom Rini1-4/+4
Updating this was missed in the merge of the next branch back in to master. Signed-off-by: Tom Rini <trini@konsulko.com>
2023-04-04usb: gadget: f_sdp: Add missing spl_board_prepare_for_boot() callMarek Vasut1-0/+1
The spl_board_prepare_for_boot() should be called before jump_to_image_no_args() to perform board-specific deinitialization before jumping to the next stage. This board-specific deinitialization can be very much anything, e.g. disable dcache in case it was enabled, or such. Add the missing spl_board_prepare_for_boot() call into f_sdp . Signed-off-by: Marek Vasut <marex@denx.de>
2023-04-04usb: gadget: missing fallthrough in composite_setup()Heinrich Schuchardt1-1/+1
Add a missing fallthrough macro. This fixes a -Wimplicit-fallthrough warning. Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2023-04-03Merge branch 'next'Tom Rini1254-23392/+34324
Signed-off-by: Tom Rini <trini@konsulko.com>
2023-04-03Prepare v2023.04Tom Rini3-13/+783
Signed-off-by: Tom Rini <trini@konsulko.com>
2023-04-03arm: dts: k3-j721e-sk-u-boot: fix boot on j721e SKSinthu Raja1-2/+6
J721e SK has been broken since at least March 2022. The main-navss and mcu-navss nodes were renamed and this caused the A72 SPL to fail early in the boot even before the serial port was enabled. Fix this. A later patch series between v2022.07 and v2022.10 additionally broke boot on this board by introducing hbmc nodes which are not present on this board. The right fix is to disable these by default in the SOC dtsi file, but for now we can also disable them in the u-boot dtsi. With both these fixed, we can now boot the j721e SK board fully from mainline u-boot. Fixes: 58d61fb5a77ef ("arm: dts: k3-j721e-sk: Add initial A72 specific dts support") Fixes: 297daac43afb9 ("arm: dts: k3-j721e-mcu-wakeup: Add HyperBus Controller node") Reported-by: Anand Gadiyar <gadiyar@ti.com> Signed-off-by: Sinthu Raja <sinthu.raja@ti.com> [gadiyar@ti.com: update commit description] Signed-off-by: Anand Gadiyar <gadiyar@ti.com> Cc: Bryan Brattlof <bb@ti.com>
2023-04-03Merge tag 'dm-next-3apr23' of ↵Tom Rini10-85/+200
https://source.denx.de/u-boot/custodians/u-boot-dm into next Enable VPL tests Minor changes with fdt command, vboot test, pinctrl
2023-04-03Revert "disk: Use a helper function to reduce duplication"Tom Rini1-25/+21
Per Takahiro Akashi this is not an equivalent rework, so revert it. This reverts commit d87bdb82eae66512c222fd93280acaf4dd1cd4be. Signed-off-by: Tom Rini <trini@konsulko.com>
2023-04-03pico-imx6: Pass the mmc alias to fix boot regressionFabio Estevam1-0/+7
Originally, the mmc aliases node was present in imx6qdl-pico.dtsi. After the sync with Linux in commit d0399a46e7cd ("imx6dl/imx6qdl: synchronise device trees with linux"), the aliases node is gone as the upstream version does not have it. This causes a boot regression in which the eMMC card cannot be found anymore. Fix it by passing the alias node in the u-boot.dtsi file to restore the original behaviour where the eMMC (esdhc3) was mapped to mmc0. Fixes: d0399a46e7cd ("imx6dl/imx6qdl: synchronise device trees with linux") Signed-off-by: Fabio Estevam <festevam@denx.de>
2023-04-03Merge tag 'u-boot-imx-20230403' of ↵Tom Rini1-1/+1
https://source.denx.de/u-boot/custodians/u-boot-imx Fixes for 2023.04 ------------------ CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/15831 - fix for imx8mn_bsh_smm_s2
2023-04-03test: Run the VPL tests with 'make check'Simon Glass1-0/+5
Update the script to run VPL tests as well as the others. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-04-03CI: Ensure that vpl test is runSimon Glass2-2/+2
This is actually skipped at present due to the condition in the file. Fix this by running all vpl tests. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-04-03vbe: Use the correct image filename in the testSimon Glass1-2/+4
At present this inadvertently relies on having a symlink to the correct file from the current directory. Use the correct path to fix this. Signed-off-by: Simon Glass <sjg@chromium.org>
2023-04-03sandbox: Update the VBE firmware locationSimon Glass1-1/+1
The image size was increased but the firmware-update part was not updated. Correct this so that VBE firmware update can succeed with sandbox_vpl. Signed-off-by: Simon Glass <sjg@chromium.org> Fixes: 85c66dc95c2 ("sandbox: Expand size for VPL image")
2023-04-03doc: sandbox: replace sgdisk input with optionsCorentin Guillevic1-1/+1
The input provided to sgdisk is in fact aimed for sfdisk. The use of sgdisk and sfdisk, coming from different projects, is not the same. So, this commit translates the sfdisk-formatted input into sgdisk-compatible options. Partitions are not modified. Signed-off-by: Corentin Guillevic <corentin.guillevic@smile.fr>
2023-04-03fdt: Make fdt addr -q quieterPeter Hoyes2-6/+14
64597346 "fdt: Add -q option to fdt addr for distro_bootcmd" introduced the -q option for fdt addr, which sets the current working fdt address without printing any output. baf41410 "fdt: Show a message when the working FDT changes" made the utility function set_working_fdt_addr (in cmd/fdt.c) output a message on each invocation, even if called via fdt addr -q, in which case its output is now slightly noisier. To fix this, split out set_working_fdt_addr into set_working_fdt_addr plus the static function set_working_fdt_addr_quiet. set_working_fdt_addr_quiet can be called by "quiet" fdt cmd logic and set_working_fdt_addr is exported (as before) to other boot logic. The latter calls the former. Remove the assertion from the fdt addr test case when calling with the -q argument. Signed-off-by: Peter Hoyes <Peter.Hoyes@arm.com> Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Reviewed-by: Simon Glass <sjg@chromium.org>
2023-04-03pinctrl: fix pinctrl_gpio_get_pinctrl_and_offset for gpio-ranges arrayQuanyang Wang1-24/+23
Sometimes a multi-element array is used for "gpio-ranges" property in dts file: qe_pio_e: gpio-controller@1460 { ...... gpio-ranges = <&pinctrl1 0 20 10>, <&pinctrl2 10 50 20>; ...... }; But the function pinctrl_gpio_get_pinctrl_and_offset can't handle this case because the "index" argument passed to dev_read_phandle_with_args is fixed to be "0". Use a loop to traverse the array to fix it. Signed-off-by: Quanyang Wang <quanyang.wang@windriver.com>