summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2024-10-27acpi: x86: Write FADT in common codeMaximilian Brune
Write the FADT in common code since it's used on all architectures. Since the FADT is mandatory all SoCs or mainboards must implement the introduced function acpi_fill_fadt() and properly update the FADT. Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Simon Glass <[email protected]> Cc: Simon Glass <[email protected]> Cc: Bin Meng <[email protected]>
2024-10-27acpi: x86: Move SPCR and DBG2 into common codeMaximilian Brune
This moves the SPCR and DBG2 table generation into common code, so that they can be used by architectures other than x86. Signed-off-by: Maximilian Brune <[email protected]> Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Simon Glass <[email protected]> Cc: Simon Glass <[email protected]> Cc: Bin Meng <[email protected]>
2024-10-26Merge tag 'u-boot-rockchip-20241026' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-rockchip CI: https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/pipelines/22993 - New boards: rk3566: Hardkernel ODROID-M1S rk3588s: Hardkernel ODROID-M2 rk3588: NanoPC-T6 LTS - Migrate to use USB_DWC3_GENERIC for rk3328 - Other board level config and dts update
2024-10-26rockchip: board: Increase rng-seed size to make it sufficient for modern LinuxAlex Shumsky
Increase rng-seed size to make Linux happy and initialize rng pool instantly. Linux 5.19+ requires 32 bytes of entropy to initialize random pool, but u-boot currently provides only 8 bytes. Linux 5.18 and probably some versions before it used to require 64 bytes. Bump min value to 64 bytes to be on a safe side. Boot with 8 byte rng-seed (Linux 6.11): # dmesg | grep crng [ 12.089286] random: crng init done Boot with 32 byte rng-seed (Linux 6.11): # dmesg | grep crng [ 0.000000] random: crng init done Linux source references: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c?h=v5.19#n551 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/char/random.c?h=v5.18#n236 Signed-off-by: Alex Shumsky <[email protected]> Fixes: d2048bafae40 ("rockchip: board: Add board_rng_seed() for all Rockchip devices") Reviewed-by: Dragan Simic <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2024-10-25Merge tag 'u-boot-imx-master-20241025a' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-imx CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/22989 - Remove unneeded USB board code and fix reset on mx6ul_14x14_evk. - Update fastboot buffer size/address for verdin-imx8m{m|p}. - Fix imxrt1050-evk boot and convert it to standard boot. - Fix imx8qxp-mek and imx8qm-mek boot. - Add support for the i.MX93 9X9 QSB board. - Make livetree API to work on i.MX. - Set sane default value for i.MX8M SPL_LOAD_FIT_ADDRESS. - Deduplicate DH i.MX8MP/i.MX6 DHSOM defconfigs. - Select default TEXT_BASE for i.MX6/i.MX7. - Several updates for DH i.MX8MP DRC02.
2024-10-25configs: imxrt1050-evk: Enable standard bootJesse Taube
Enable standard boot support and add default environments for the imxrt1050-evk board. Signed-off-by: Jesse Taube <[email protected]>
2024-10-25Merge patch series "Allow showing the memory map"Tom Rini
Simon Glass <[email protected]> says: This little series adds a new 'memmap' command, intended to show the layout of memory within U-Boot and how much memory is available for loading images. Link: https://lore.kernel.org/r/[email protected]
2024-10-25bootstage: Allow counting memory without stringsSimon Glass
The bootstage array includes pointers to strings but not the strings themselves. The strings are added when stashing, but including them in the size calculation gives an inflated view of the amount of space used by the array. Update this function so it can return the amount of memory used by the bootstage structures themselves, without the strings which they point to. Signed-off-by: Simon Glass <[email protected]>
2024-10-25global_data: Add some more accessorsSimon Glass
Add accessors for bloblist, bootstage, trace and video to avoid needing more #ifdefs in the C code. Signed-off-by: Simon Glass <[email protected]>
2024-10-25common: Tidy up how malloc() is initedSimon Glass
The call to malloc() is a bit strange. The naming of the arguments suggests that an address is passed, but in fact it is a pointer, at least in the board_init_r() function and SPL equivalent. Update it to work as described. Add a function comment as well. Note that this does adjustment does not extend into the malloc() implementation itself, apart from changing mem_malloc_init(), since there are lots of casts and pointers and integers are used interchangeably. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2024-10-25Merge tag 'xilinx-for-v2025.01-rc1-v2' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-microblaze AMD/Xilinx changes for v2025.01-rc1 v2 .mailmap: - Switch Padmarao's email to AMD one zynq_spi: - Make update_stripe static xilinx: - Update DT description for EMMCs zynqmp: - Update logic around RPUs and tcm handling - Update bootmenu selection for Kria - Add description for SC vm-p-b1369 - Fix comment about file location in zynqmp-p-a2197-00-revA.dts versal: - Fix logic around USB boot versal2: - Disable useless features for Mini configurations versal-net: - Get rid of current-speed DT property from mini configuration microblaze: - Fix scriptaddr location # -----BEGIN PGP SIGNATURE----- # # iF0EABECAB0WIQQbPNTMvXmYlBPRwx7KSWXLKUoMIQUCZxuweAAKCRDKSWXLKUoM # IY1iAKCH/GKJHEXFfLvr0OGuO6c1SX9+ZQCfTjRAHrL186X6LUgjOpmtmsrVK1c= # =4gY0 # -----END PGP SIGNATURE----- # gpg: Signature made Fri 25 Oct 2024 08:51:36 AM CST # gpg: using DSA key 1B3CD4CCBD79989413D1C31ECA4965CB294A0C21 # gpg: Good signature from "Michal Simek <[email protected]>" [full] # gpg: aka "Michal Simek (Xilinx) <[email protected]>" [full] # gpg: aka "Michal Simek (Xilinx) <[email protected]>" [full] # gpg: aka "Michal Simek (AMD) <[email protected]>" [unknown]
2024-10-25Merge tag 'u-boot-dfu-20241025' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-dfu CI: https://source.denx.de/u-boot/custodians/u-boot-dfu/-/pipelines/22962 Dfu: - Rely on device tree for spi speed/mode on spi flash Android Image: - Fix booting on platforms having > 4GiB of memory - Decompress boot image to kernel_addr_r when compression is enabled - Honor CONFIG_SYS_LOAD_ADDR when mkbootimg uses default address Bcb: - Rework bcb command to use U_BOOT_LONGHELP - Move ab_select cmd to bcb cmd - Implement ab_dump command in bcb - bcb: Write '_<slot>' instead of '<slot>' to misc partition
2024-10-25board: rockchip: Add Hardkernel ODROID-M2Jonas Karlman
The Hardkernel ODROID-M2 is a single-board computer based on Rockchip RK3588S2 SoC. It features e.g. 8/16 GB LPDDR5 RAM, 64 GB eMMC, SD-card, GbE LAN, HDMI 2.0, M.2 NVMe and USB 2.0/3.0/Type-C. Features tested on a ODROID-M2 16GB rev1.0 20240611: - SD-card boot - eMMC boot - Ethernet - PCIe/NVMe - USB gadget - USB host Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Kever Yang <[email protected]>
2024-10-25arm64: versal: Wire USB0 in distro bootMichal Simek
For unknown reason USB host hasn't been described for distro boot that's why wire it now. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/9715605c232ce38a36a200204c14208b9d76cd83.1727694230.git.michal.simek@amd.com
2024-10-25arm64: versal: Remove description for USB1Michal Simek
There is only one USB controller that's why remove description for USB1. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/f148161ee489d19d708df1b4fa7477821e06bb55.1727694230.git.michal.simek@amd.com
2024-10-25imx: Support i.MX93 9X9 QSB boardPeng Fan
Add i.MX93 9x9 Quick Start Board support. - Two ddr scripts included w/o inline ecc feature. - SDHC/NETWORK/I2C/UART supported - PCA9450 supported, default over drive mode - Documentation added. Signed-off-by: Peng Fan <[email protected]>
2024-10-24Mark a few functions static inlineAndy Shevchenko
The function prototypes that are defined in the header most likely has to be marked as static inline. This helps avoiding the compiler warnings: include/mux.h:120:14: warning: no previous prototype for ‘mux_control_states’ [-Wmissing-prototypes] include/mux.h:125:18: warning: no previous prototype for ‘mux_control_select’ [-Wmissing-prototypes] include/mux.h:133:5: warning: no previous prototype for ‘mux_control_deselect’ [-Wmissing-prototypes] include/mux.h:138:21: warning: no previous prototype for ‘mux_control_get’ [-Wmissing-prototypes] include/mux.h:143:6: warning: no previous prototype for ‘mux_control_put’ [-Wmissing-prototypes] include/mux.h:147:21: warning: no previous prototype for ‘devm_mux_control_get’ [-Wmissing-prototypes] include/mux.h:153:5: warning: no previous prototype for ‘dm_mux_init’ [-Wmissing-prototype ] Signed-off-by: Andy Shevchenko <[email protected]>
2024-10-24block: make blk_create_device() staticHeinrich Schuchardt
There are no users of the blk_create_device() function outside the uclass. Let's make it static. This will ensure that new block drivers will use blk_create_devicef(). Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-10-24image: android: use ulong for kernel addressNeil Armstrong
When booting with platforms having > 4GiB of memory, the kernel physical address can be more than 32bits. Use ulong like all the other addresses, and fix the print to show the > 32bits address numbers. Signed-off-by: Neil Armstrong <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Tested-by: Guillaume La Roque <[email protected]> Link: https://lore.kernel.org/r/20241017-topic-fastboot-fixes-mkbootimg-v2-1-c3927102d931@linaro.org Signed-off-by: Mattijs Korpershoek <[email protected]>
2024-10-24cmd: bcb: introduce 'ab_dump' command to print BCB block contentDmitry Rokosov
It's really helpful to have the ability to dump BCB block for debugging A/B logic on the board supported this partition schema. Command 'bcb ab_dump' prints all fields of bootloader_control struct including slot_metadata for all presented slots. Output example: ===== > board# bcb ab_dump ubi 0#misc > Read 512 bytes from volume misc to 000000000bf07580 > Read 512 bytes from volume misc to 000000000bf42f40 > Bootloader Control: [misc] > Active Slot: _a > Magic Number: 0x42414342 > Version: 1 > Number of Slots: 2 > Recovery Tries Remaining: 0 > CRC: 0x2c8b50bc (Valid) > > Slot[0] Metadata: > - Priority: 15 > - Tries Remaining: 0 > - Successful Boot: 1 > - Verity Corrupted: 0 > > Slot[1] Metadata: > - Priority: 14 > - Tries Remaining: 7 > - Successful Boot: 0 > - Verity Corrupted: 0 ==== The ab_dump command allows you to display ABC data directly on the U-Boot console. During an A/B test execution, this test verifies the accuracy of each field within the ABC data. Signed-off-by: Dmitry Rokosov <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Tested-by: Mattijs Korpershoek <[email protected]> # vim3_android Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2024-10-24treewide: bcb: move ab_select command to bcb subcommandsDmitry Rokosov
To enhance code organization, it is beneficial to consolidate all A/B BCB management routines into a single super-command. The 'bcb' command is an excellent candidate for this purpose. This patch integrates the separate 'ab_select' command into the 'bcb' group as the 'ab_select' subcommand, maintaining the same parameter list for consistency. Signed-off-by: Dmitry Rokosov <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Tested-by: Mattijs Korpershoek <[email protected]> # vim3_android Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2024-10-24include/android_ab: move ab_select_slot() documentation to @ notationDmitry Rokosov
There are new function documentation requirements in U-Boot, so apply these changes for android_ab. Reviewed-by: Mattijs Korpershoek <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Guillaume La Roque <[email protected]> Signed-off-by: Dmitry Rokosov <[email protected]> Tested-by: Mattijs Korpershoek <[email protected]> # vim3_android Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2024-10-24spi: add DM_SPI_FLASH compatibility inline functionsNeil Armstrong
To smoothly handle the transition from the legacy SPI FLASH API to the driver model API, add the DM functions as dummy inline functions. Today, client code uses #if/#else conditionals, but it's better to use if(IS_ENABLED()) to make sure all code builds fine and avoid configuration hell, leaving the compiler remove the dead code. An example is cmd/sf, which could make use of those dummy functions to drop the conditional compilation. Signed-off-by: Neil Armstrong <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://lore.kernel.org/r/[email protected] [mkorpershoek: removed duplicate "the" from commit msg] Signed-off-by: Mattijs Korpershoek <[email protected]>
2024-10-23global_data.h: remove unnecesary include of cyclic.hRasmus Villemoes
Nothing in cyclic.h is needed to define struct global_data, so do not include that header. If any .c file relies on getting cyclic.h through asm/global_data.h, it needs to include it itself. Signed-off-by: Rasmus Villemoes <[email protected]> Reviewed-by: Tom Rini <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2024-10-23watchdog.h: change include of cyclic.h to u-boot/schedule.hRasmus Villemoes
Nobody relies on getting the cyclic API declared by including the watchdog.h header, but for historical reasons, many TUs include watchdog.h to get a declaration of schedule(). Now that we have a dedicated header for just that, include that header instead of cyclic.h. Eventually, all TUs that call schedule() should themselves include u-boot/schedule.h, but this is a step towards getting rid of unnecessary include statements in cyclic.h and global_data.h. Signed-off-by: Rasmus Villemoes <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2024-10-23cyclic: make cyclic_run staticRasmus Villemoes
The only caller left is schedule(); everybody outside cyclic.c now calls or references schedule(). Signed-off-by: Rasmus Villemoes <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2024-10-23cyclic: introduce u-boot/schedule.hRasmus Villemoes
I noticed an "unnecessary" include of <cyclic.h> in global_data.h, in the sense that nothing in cyclic.h is needed in order to define 'struct global_data'. Well, it's not unnecessary, as it implicitly ensures that everybody gets a declaration of schedule(), and schedule() is (obviously) called all over the tree. Almost none of those places directly include <cyclic.h>, but for historical reasons, many do include <watchdog.h> (most schedule() instances are replacements of WATCHDOG_RESET()). However, very few TUs actually need the declarations of the cyclic_register() and struct cyclic_info, and they also don't really need anything from the watchdog.h header. So introduce a new header which just contains a declaration of schedule(), which can then be included from all the places that do call schedule(). I removed the direct reference to cyclic_run(), because we shouldn't have two public functions for doing roughly the same without being very explicit about when one should call one or the other. Testing of later patches that explicitly include <schedule.h> when schedule() is used revealed a problem with host tool build on win32, which apparently picked up a host <schedule.h>. To avoid that problem, put the new header in include/u-boot/ and hence make the include statements say <u-boot/schedule.h>. Signed-off-by: Rasmus Villemoes <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2024-10-22video: Fix VNBYTES() macro commentMiquel Raynal
The VNBYTES() macro has been updated to silence possible warnings regarding authorized (but unusual) uses of this macro, but the comment was kept unchanged. A year has passed so let's fix the comment now to avoid confusions. Fixes: cc05d352fbc ("video: Add parentheses around VNBYTES() macro") Suggested-by: Tom Rini <[email protected]> Link: https://lore.kernel.org/u-boot/20240906183432.GG3879073@bill-the-cat/ Signed-off-by: Miquel Raynal <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-10-21Merge patch series "aspeed: ast2700: Add Caliptra ECDSA driver"Tom Rini
Chia-Wei Wang <[email protected]> says: Aspeed AST2700 SoCs integrates the Caliptra secure IP, where an ECDSA384 signature verification HW interface is exported for SoC crypto needs. This patch series firstly extends the FIT image signing/verify common code to support the ECDSA384 algorithm. For better convenience, the device tree for ECDSA public key storage is also revised by referring to RSA implementations. After the FIT common code revision, the driver is implemented for AST2700 to leverage the Caliptra ECDSA384 signature verification. These are verified by signed FIT images with the algorithm "sha384,ecdsa384". Link: https://lore.kernel.org/r/[email protected]
2024-10-21lib: ecdsa: Add ECDSA384 supportChia-Wei Wang
Add ECDSA384 algorithm support for image signing and verification. Signed-off-by: Chia-Wei Wang <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-10-18Merge tag 'dm-pull-17oct24-take2' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-dm A few new x86 commands and minor improvements expo improvements binman support for signing FIT images
2024-10-18mtd: spi-nor: Move SR3 WPS bit definition in the correct locationMarek Vasut
Move the SR3 bit definition in the right place. Fix what is likely a rebase artifact. No functional change. Fixes: 215f1d5794c6 ("mtd: spi-nor: Clear Winbond SR3 WPS bit on boot") Signed-off-by: Marek Vasut <[email protected]>
2024-10-18expo: Add forward declaration for udevice to ceditSimon Glass
Some files may include this header file without first including dm.h so add a forward declaration. Signed-off-by: Simon Glass <[email protected]>
2024-10-18expo: Drop scene_title_set()Simon Glass
This function is really just an assignment, so serves no useful purpose. Drop it. Signed-off-by: Simon Glass <[email protected]>
2024-10-18expo: Allow menu items to have valuesSimon Glass
At present menu items are stored according to their sequence number in the menu. In some cases we may want to have holes in that sequence, or not use a sequence at all. Add a new 'value' property for menu items. This will be used for reading and writing, if present. If there is no 'value' property, then the normal sequence number will be used instead. Signed-off-by: Simon Glass <[email protected]>
2024-10-18expo: Use standard numbering for save and discardSimon Glass
Set aside some expo IDs for 'save' and 'discard' buttons. This avoids needing to store the IDs for these. Adjust the documentation and expo tool for the new EXPOID_BASE_ID value. Ignore these objects when saving and loading the cedit, since they do not contain real data. Adjust 'cedit run' to return failure when the user exits the expo without saving. Update the test for this change as well. Signed-off-by: Simon Glass <[email protected]>
2024-10-18expo: Place menu items to the right of all labelsSimon Glass
At present a fixed position is used for menu items, 200 pixels to the right of the left side of the labels. This means that a menu item with a very long label may overlap the items. It seems better to calculate the maximum label width and then place the items to the right of all of them. To implement this, add a new struct to containing arrangement information. Calculate it before doing the actual arrangement. Add a new style item which sets the amount of space from the right side of the labels to left side of the items. Signed-off-by: Simon Glass <[email protected]>
2024-10-18video: Avoid starting a new line to close to the bottomSimon Glass
When starting a new text line, an assumption is made that the current vertical position is a multiple of the character height. When this is not true, characters can be written after the end of the framebuffer. This can causes crashes and strange errors from QEMU. Adjust the scrolling check when processing a newline character, to avoid any problems. Add some comments to make things a little clearer. Signed-off-by: Simon Glass <[email protected]>
2024-10-18video: Add a dark-grey console colourSimon Glass
This is useful for highlighting something with a black background, as is needed with cedit when using a white-on-black console. Add this as a new colour. Signed-off-by: Simon Glass <[email protected]>
2024-10-18blk: Make functions available unconditionallySimon Glass
Some boards still don't enable BLK but we want to be able to at least compile the code which relies on this. For example, bootstd includes calls to blk_...() functions, albeit with a check for BLK so that the code is eliminated by the compiler. Reduce the scope of the BLK #ifdef to help with this. Signed-off-by: Simon Glass <[email protected]>
2024-10-18Merge tag 'u-boot-imx-master-20241018a' of ↵Tom Rini
https://gitlab.denx.de/u-boot/custodians/u-boot-imx CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/22796 - Switch to using upstream DT on DH i.MX8MP DHCOM PDK2/PDK3. - Add ability to build fallback DTBOs from arch/$(ARCH)/dts. - Remove fdt_high and initrd_high env variables from imx6-dhcom. - Add dummy clk for imx8. - Fix DT corruption in imx8_cpu. - Improve DDR stability on pico-imx7d.
2024-10-18ARM: dts: imx6-dhcom: Remove fdt_high and initrd_high env variablesMarek Vasut
Remove both "fdt_high" and "initrd_high" environment variables in favor of "bootm_size" to safely contain a kernel, device tree and initrd for relocation inside of 256 MiB region of DRAM. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Fabio Estevam <[email protected]>
2024-10-17cmd: irq: Move do_irqinfo() prototype to a header fileAndy Shevchenko
Move do_irqinfo() prototype to a header file, otherwise compiler is not happy: arch/x86/lib/interrupts.c:130:5: warning: no previous prototype for ‘do_irqinfo’ [-Wmissing-prototypes] Signed-off-by: Andy Shevchenko <[email protected]> Reviewed-by: Simon Glass <[email protected]> [trini: Add 'struct cmd_tbl;' to irq_func.h] Signed-off-by: Tom Rini <[email protected]>
2024-10-17Merge tag 'u-boot-stm32-20241017' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-stm CI: https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/22732 - stm32mp: fix boot issue with OP-TEE - stm32mp: Add script to install U-Boot from SD/eMMC to SPI NOR on DH STM32MP15xx - stm32mp: Switch to using upstream DT on DH STM32 DHSOM - stm32mp: Generate u-boot.itb using binman on DH STM32 DHSOM
2024-10-16Merge https://source.denx.de/u-boot/custodians/u-boot-usbTom Rini
2024-10-17usb: tcpm: add core frameworkSebastian Reichel
This adds TCPM framework in preparation for fusb302 support, which can handle USB power delivery messages. This is needed to solve issues with devices, that are running from a USB-C port supporting USB-PD, but not having a battery. Such a device currently boots to the kernel without interacting with the power-supply at all. If there are no USB-PD message replies within 5 seconds, the power-supply assumes the peripheral is not capable of USB-PD. It usually takes more than 5 seconds for the system to reach the kernel and probe the I2C based fusb302 chip driver. Thus the system always runs into this state. The power-supply's solution to fix this error state is a hard reset, which involves removing the power from VBUS. Boards without a battery (or huge capacitors) will reset at this point resulting in a boot loop. This imports the TCPM framework from the kernel. The porting has originally been done by Rockchip using hardware timers and the Linux kernel's TCPM code from some years ago. I had a look at upgrading to the latest TCPM kernel code, but that beast became a lot more complex due to adding more USB-C features. I believe these features are not needed in U-Boot and with multiple kthreads and hrtimers being involved it is non-trivial to port them. Instead I worked on stripping down features from the Rockchip port to an even more basic level. Also the TCPM code has been reworked to avoid complete use of any timers (Rockchip used SoC specific hardware timers + IRQ to implement delayed work mechanism). Instead the delayed state changes are handled directly from the poll loop. Note, that (in contrast to the original Rockchip port) the state machine has the same hard reset quirk, that the kernel has - i.e. it avoids disabling the CC pin resistors for devices that are not self-powered. Without that quirk, the Radxa Rock 5B will not just end up doing a machine reset when a hard reset is triggered, but will not even recover, because the CPU will loose power and the FUSB302 will keep this state because of leak voltage arriving through the RX serial pin (assuming a serial adapter is connected). This also includes a 'tcpm' command, which can be used to get information about the current state and the negotiated voltage and current. Co-developed-by: Wang Jie <[email protected]> Signed-off-by: Wang Jie <[email protected]> Tested-by: Soeren Moch <[email protected]> Tested-by: Anand Moon <[email protected]> Reviewed-by: Jonas Karlman <[email protected]> Signed-off-by: Sebastian Reichel <[email protected]>
2024-10-16Merge patch series "some serial rx buffer patches"Tom Rini
Rasmus Villemoes <[email protected]> says: Some small improvements to the serial rx buffer feature. CI seems happy: https://github.com/u-boot/u-boot/pull/674 Link: https://lore.kernel.org/r/[email protected]
2024-10-16serial: embed the rx buffer in struct serial_dev_privRasmus Villemoes
The initialization of upriv->buf doesn't check for a NULL return. But there's actually no point in doing a separate, unconditional malloc() in post_probe; we can just make serial_dev_priv contain the rx buffer itself, and let the (larger) allocation be handled by the driver core when it allocates the ->per_device_auto. The total run-time memory used is mostly the same, we reduce the code size a little, and as a bonus, struct serial_dev_priv does not contain the unused members when !SERIAL_RX_BUFFER. Signed-off-by: Rasmus Villemoes <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-10-16serial: fix circular rx buffer edge caseRasmus Villemoes
The current implementation of the circular rx buffer falls into a common trap with circular buffers: It keeps the head/tail indices reduced modulo the buffer size. The problem with that is that it makes it impossible to distinguish "buffer full" from "buffer empty", because in both situations one has head==tail. This can easily be demonstrated: Build sandbox with RX_BUFFER enabled, set the RX_BUFFER_SIZE to 32, and try pasting the string 01234567890123456789012345678901 Nothing seems to happen, but in reality, all characters have been read and put into the buffer, but then tstc ends up believing nothing is in the buffer anyway because upriv->rd_ptr == upriv->wr_ptr. A better approach is to let the indices be free-running, and only reduce them modulo the buffer size when accessing the array. Then "empty" is head-tail==0 and "full" is head-tail==size. This does rely on the buffer size being a power-of-two and the free-running indices simply wrapping around to 0 when incremented beyond the maximal positive value. Incidentally, that change from signed to unsigned int also improves code generation quite a bit: In C, (signed int)%(signed int) is defined to have the sign of the dividend (so (-35) % 32 is -3, not 29), and hence despite the modulus being a power-of-two, x % 32 does not actually compile to the same as a simple x & 31 - on x86 with -Os, it seems that gcc ends up emitting an idiv instruction, which is quite expensive. Signed-off-by: Rasmus Villemoes <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-10-16stm32mp: cosmetic: remove empty comment block in configs filePatrick Delaunay
This is cosmetic change. Remove the empty comment blocks remaining after conversion to Kconfig of CONFIG_SYS_MAX_NAND_DEVICE and CONFIG_SERVERIP. Signed-off-by: Patrick Delaunay <[email protected]>