summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-04-02fs: exfat: Fix conversion overflow errorsMarek Vasut
Fix the following conversion overflow errors. The UTF8-to-UTF16 conversion is done through 32bit wchar_t, but U-Boot codebase is built with -fshort-wchar which limits wchar_t to 16bit. Replace the built-in wchar_t with u32 to assure the intermediate type is 32bit. " fs/exfat/utf.c: In function ‘utf8_to_wchar’: fs/exfat/utf.c:165:23: warning: overflow in conversion from ‘int’ to ‘wchar_t’ {aka ‘short unsigned int’} changes value from ‘(int)(short unsigned int)*input << 18 & 1835008’ to ‘0’ [-Woverflow] 165 | *wc = ((wchar_t) input[0] & 0x07) << 18; | ^ fs/exfat/utf.c:170:23: warning: overflow in conversion from ‘int’ to ‘wchar_t’ {aka ‘short unsigned int’} changes value from ‘(int)(short unsigned int)*input << 24 & 50331648’ to ‘0’ [-Woverflow] 170 | *wc = ((wchar_t) input[0] & 0x03) << 24; | ^ fs/exfat/utf.c:175:23: warning: overflow in conversion from ‘int’ to ‘wchar_t’ {aka ‘short unsigned int’} changes value from ‘(int)(short unsigned int)*input << 30 & 1073741824’ to ‘0’ [-Woverflow] 175 | *wc = ((wchar_t) input[0] & 0x01) << 30; | ^ " Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02fs: exfat: Add U-Boot porting layerMarek Vasut
Add U-Boot adjustments to the libexfat code and integrate the result into U-Boot filesystem layer. This provides full read-write exfat support for U-Boot available via generic filesystem interface. FS_DIRENT_NAME_LEN is increased to 1024 in case exfat is enabled, because EXFAT can use UTF16 names, which do not fit into current FS_DIRENT_NAME_LEN. To avoid affecting every configuration, increase FS_DIRENT_NAME_LEN only in case EXFAT is enabled. Example usage via sandbox, assuming disk.img with one exfat partition: Drive info: $ ./u-boot -Tc 'host bind 0 ../disk.img ; host info 0' dev blocks blksz label path 0 262144 512 0 ../disk.img List files: $ ./u-boot -Tc 'host bind 0 ../disk.img ; ls host 0:1 /api' 475 Kconfig 230 Makefile 1873 README ... 10 file(s), 0 dir(s) Load and checksum a file: $ ./u-boot -Tc 'host bind 0 ../disk.img ; load host 0:1 $loadaddr .config ; \ crc32 $loadaddr $filesize' 56724 bytes read in 1 ms (54.1 MiB/s) crc32 for 00000000 ... 0000dd93 ==> b2e847c9 $ crc32 .config b2e847c9 Load .config file to RAM, store the file into FS as /newconfig, load the /newconfig into RAM and checksum the file: $ ./u-boot -Tc 'host bind 0 ../disk.img ; load host 0:1 $loadaddr .config ; \ save host 0:1 $loadaddr /newconfig $filesize ; \ load host 0:1 0x10000 /newconfig ; \ crc32 0x10000 $filesize' 56724 bytes read in 1 ms (54.1 MiB/s) 56724 bytes written in 0 ms 56724 bytes read in 0 ms crc32 for 00010000 ... 0001dd93 ==> b2e847c9 Remove file 3.txt and create new directory /newdir: $ ./u-boot -Tc 'host bind 0 ../disk.img ; ls host 0:1 / ; \ rm host 0:1 3.txt ; mkdir host 0:1 /newdir ; \ ls host 0:1 /' ... 0 1.txt 0 2.txt 0 3.txt 0 4.txt 0 5.txt 7 file(s), 4 dir(s) ... 0 1.txt 0 2.txt newdir/ 0 4.txt 0 5.txt 6 file(s), 5 dir(s) Acked-by: Tom Rini <trini@konsulko.com> Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02fs: exfat: Import libexfat from fuse-exfatMarek Vasut
Import most of libexfat from [1] except for log.c verbatim. The code does not even compile and further adjustments and integration into U-Boot filesystem code is in the next patch. [1] https://github.com/relan/exfat 0b41c6d3560d ("CI: bump FreeBSD to 13.1.") Acked-by: Tom Rini <trini@konsulko.com> Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02fs: Add generic fs_devread() implementationMarek Vasut
Add generic implementation of write into a block device to be used by filesystem implementations. This is a pair function for already existing fs_devread(). Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02linux: Add generic struct stat {}Marek Vasut
Add generic implementation of struct stat {} imported from Linux 6.13.y commit 27560b371ab8 ("fs: pack struct kstat better"). This can be used by filesystem code imported from elsewhere. Now struct stat {} becomes available on all supported architectures. Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02test_fs: Allow testing FS_GENERICMarek Vasut
The generic filesystem interface was so far untested. The interface is similar to the FS specific interfaces with FS specific prefixes, like ext4ls, fatmkdir, ... but it does not have any prefixes, i.e. it provides plain ls, mkdir, ... commands. Extend the test parameters to include 'fs_cmd_prefix' and optionally 'fs_cmd_write' parameters. The 'fs_cmd_prefix' allow specifying the filesystem specific command prefix, like 'ext4' in 'ext4ls'. The 'fs_cmd_write' allows selecting between 'write'/'save' command name for storing files into the filesystem, see last paragraph. Introduce new 'fs_generic' fs_type which is used to parametrize existing tests and run them without any prefixes if detected, thus testing the generic filesystem interface. Use the fatfs as the backing store for the generic FS tests. The check_ubconfig needs to be slightly adjusted to avoid test for CMD_FS_GENERIC_WRITE which does not exist separately from CMD_FS_GENERIC. The CMD_FS_GENERIC does not provide generic 'write' command, instead the generic equivalent command is called 'save' . Add simple ternary oeprator to use 'save' command for CMD_FS_GENERIC tests and '..write' commands for filesystem specific tests. Enable generic filesystem tests for basic/extended/mkdir/unlink tests. Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02cmd: fs: Add generic rm implementationMarek Vasut
Add generic implementation of the 'rm' command to delete files from filesystems using the generic filesystem API. Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Marek Vasut <marex@denx.de>
2025-04-02cmd: fs: Add generic mkdir implementationMarek Vasut
Add generic implementation of the 'mkdir' command to create directories in filesystems using the generic filesystem API. Reviewed-by: Tom Rini <trini@konsulko.com> Signed-off-by: Marek Vasut <marex@denx.de>
2025-03-17Merge patch series "lmb: miscellaneous fixes and improvements"Tom Rini
Sughosh Ganu <sughosh.ganu@linaro.org> says: The patch series contains some fixes and improvements in the lmb code, along with addition of corresponding test cases for the changes made. The lmb_reserve() function currently does not check if the requested reservation would overlap with existing reserved regions. While some scenarios are being handled, some corner cases still exist. These are being handled by patch 1, along with adding test cases for these scenarios. Patch 2 is handling the case of reserving a new region of memory, but that region overlaps with an existing region. The current code only handles one particular scenario, but prints a message for the other scenario of an encompassing overlap and returns back. The patch handles the encompassing overlap. Patch 3 is an improvement whereby we allow coalescing a newly reserved region with an existing region. The current code exits this check prematurely. Patch 4 is removing a now superfluous check for overlapping regions with flag other than LMB_NONE. This now gets handled at an earlier point in lmb_reserve(). Patch 5 is clubbing the functionality to check if two regions are adjacent, or overlap, allowing some code re-use. Patch 6 is optimising the lmb_alloc() function by having it call _lmb_alloc_base() directly. Link: https://lore.kernel.org/r/20250303133231.405279-1-sughosh.ganu@linaro.org
2025-03-17lmb: optimise the lmb allocation functionsSughosh Ganu
The actual logic to allocate a region of memory is in the _lmb_alloc_base() function. The lmb_alloc() API function calls lmb_alloc_base(), which then calls _lmb_alloc_base() to do the allocation. Instead, call the _lmb_alloc_base() directly from both the allocation API's, and move the error message to the _lmb_alloc_base(). Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
2025-03-17lmb: use a common function to check if regions overlap or are adjacentSughosh Ganu
The functions to check if the two said regions are adjacent or overlap are pretty similar in nature. Club the functionality into a single function lmb_regions_check() and return the appropriate return value to signify this aspect. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
2025-03-17lmb: remove superfluous address overlap check from lmb_add_region_flags()Sughosh Ganu
U-Boot allows re-use of already reserved memory through the lmb_reserve() and lmb_alloc_addr() API's. This memory re-use is allowed only when the flag of the existing reserved region and that of the requested region is LMB_NONE. A check was put in the lmb_add_region_flags() in commit 8b8b35a4f5e to handle the scenario where an already reserved region was re-requested with region flag other than LMB_NONE -- the function then returns -EEXIST in such a scenario. The lmb_reserve() function now does a check for a reservation request with existing reserved regions, and returns -EEXIST in case of an overlap but when the flag check fails. Remove this now redundant check from lmb_add_region_flags(). Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
2025-03-17lmb: check for a region's coalescing with all existing regionsSughosh Ganu
The lmb_add_region_flags() first checks if the new region to be added can be coalesced with existing regions. The check stops if the two regions are adjecent but their flags do not match. However, it is possible that the newly added region might be adjacent with the next existing region and with matching flags. Check for this possibility by not breaking out of the loop. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-03-17lmb: handle scenario of encompassing overlapSughosh Ganu
The lmb_fix_over_lap_regions() function is called if the added region overlaps with an existing region. The function then fixes the overlap and removes the redundant region. However, it makes certain assumptions. One assumption is that the overlap would not encompass the existing region. Another assumption is that the overlap only occurs between two regions -- the scenario of the added region overlapping multiple existing regions is not being handled. Handle these cases by instead calling lmb_resize_regions(). Also remove the now superfluous lmb_fix_over_lap_regions(). Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-03-17lmb: check if a region can be reserved by lmb_reserve()Sughosh Ganu
The logic used in lmb_alloc() takes into consideration the existing reserved regions, and ensures that the allocated region does not overlap with any existing allocated regions. The lmb_reserve() function is not doing any such checks -- the requested region might overlap with an existing region. This also shows up with lmb_alloc_addr() as this function ends up calling lmb_reserve(). Add a function which checks if the region requested is overlapping with an existing reserved region, and allow for the reservation to happen only if both the regions have LMB_NONE flag, which allows re-requesting of the region. In any other scenario of an overlap, have lmb_reserve() return -EEXIST, implying that the requested region is already reserved. Add corresponding test cases which check for overlapping reservation requests made through lmb_reserve() and lmb_alloc_addr(). And while here, fix some of the comments in the test function being touched. Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org> Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2025-03-17Merge branch 'next' of git://source.denx.de/u-boot-usb into nextTom Rini
- Add USB support on Starfive JH7110
2025-03-17Merge branch 'nand-next' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-nand-flash into next CI: https://source.denx.de/u-boot/custodians/u-boot-nand-flash/-/pipelines/25178 This merge request add support for cadence raw nand driver for agilex board and add a fix to meson driver.
2025-03-17configs: starfive: Add visionfive2 cadence USB configurationMinda Chen
Add cadence USB confiuration. Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Tested-by: E Shattow <lucent@gmail.com>
2025-03-17spl: starfive: visionfive2: Disable USB overcurrent pin by default.Minda Chen
For some JH7110 boards, USB host overcurent pin is not reserved, To make USB host work, overcurrent pin must be disabled. So set the pin default disabled in spl stage. Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Tested-by: E Shattow <lucent@gmail.com>
2025-03-17usb: cdns: starfive: Add cdns USB driverMinda Chen
Add Starfive cdns USB3 wrapper driver. Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Reviewed-by: Marek Vasut <marex@denx.de> Tested-by: E Shattow <lucent@gmail.com>
2025-03-17usb: cdns: starfive: Get dr mode from wrapper device dts nodeMinda Chen
Cdns core driver also get dr mode from wrapper devcie dts node to make it is same with Starfive cdns USB Linux kernel driver, Starfive 7110 OF_UPSTREAM is enabled Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Reviewed-by: Marek Vasut <marex@denx.de>
2025-03-17phy: starfive: Add Starfive JH7110 PCIe 2.0 PHY driverMinda Chen
Add Starfive JH7110 PCIe 2.0 PHY driver, which is generic PHY driver and can be used as USB 3.0 driver. Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Tested-by: E Shattow <lucent@gmail.com>
2025-03-17phy: starfive: Add Starfive JH7110 USB 2.0 PHY driverMinda Chen
Add Starfive JH7110 USB 2.0 PHY driver, which is generic PHY driver. Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Reviewed-by: Roger Quadros <rogerq@kernel.org> Tested-by: E Shattow <lucent@gmail.com>
2025-03-17usb: cdns3: Set USB PHY mode in cdns3_drd_update_mode()Minda Chen
USB PHY maybe need to set PHY mode in different USB dr mode. So translate USB PHY mode to generic PHY mode and call generic_phy_set_mode(). Signed-off-by: Minda Chen <minda.chen@starfivetech.com> Reviewed-by: Marek Vasut <marex@denx.de>
2025-03-16mtd: rawnand: meson: always use OOB bytes during writeArseniy Krasnov
If 'oob_required' is not set by the caller (for example 'oobbuf' is NULL), then driver doesn't copy OOB data from 'oob_poi' to special controller structures, so zeroes will be written as OOB. But, generic raw NAND logic in 'nand_base.c' already handles case when OOB is not required to write by filling 'oob_poi' with 0xFF's. So let's remove 'oob_required' check to always read 'oob_poi' data for OOB. Kernel driver (drivers/mtd/nand/raw/meson_nand.c) works in the same way, so need to keep same behaviour here. Fixes: c2e8c4d09a7a ("mtd: rawnand: Meson NAND controller support") Signed-off-by: Arseniy Krasnov <avkrasnov@salutedevices.com> Reviewed-by: Michael Trimarchi <michael@amarulasolutions.com>
2025-03-15Merge tag 'dm-pull-15mar25' of git://git.denx.de/u-boot-dm into nextTom Rini
Sync up on test renames
2025-03-15test: Make net tests depend on CONFIG_CMD_NETSimon Glass
This fails on samus_tpl as there is no 'net' command. => net list Unknown command 'net' - try 'help' ! Fix it by adding a condition for the test. Add a blank line to keep pylint happy. Signed-off-by: Simon Glass <sjg@chromium.org>
2025-03-15test/py: Show info about module-loadingSimon Glass
It is sometimes tricky to figure out what modules test.py is loading when it starts up. The result can be a silent failure with no clue as to what when wrong. Add a section which lists the modules loaded as well as those not found. Signed-off-by: Simon Glass <sjg@chromium.org>
2025-03-15test/py: Drop assigning ubman to consSimon Glass
Now that we have a shorter name, we don't need this sort of thing. Just use ubman instead. Signed-off-by: Simon Glass <sjg@chromium.org>
2025-03-15test/py: Drop importing utils as utilSimon Glass
Now that we have a shorter name, we don't need this sort of thing. Drop it. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # test_android
2025-03-15test/py: Drop u_boot_ prefix on test filesSimon Glass
We know this is U-Boot so the prefix serves no purpose other than to make things longer and harder to read. Drop it and rename the files. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # test_android / test_dfu
2025-03-15test/py: Shorten u_boot_consoleSimon Glass
This fixture name is quite long and results in lots of verbose code. We know this is U-Boot so the 'u_boot_' part is not necessary. But it is also a bit of a misnomer, since it provides access to all the information available to tests. It is not just the console. It would be too confusing to use con as it would be confused with config and it is probably too short. So shorten it to 'ubman'. Signed-off-by: Simon Glass <sjg@chromium.org> Link: https://lore.kernel.org/u-boot/CAFLszTgPa4aT_J9h9pqeTtLCVn4x2JvLWRcWRD8NaN3uoSAtyA@mail.gmail.com/
2025-03-15configs: nand2_defconfig: Enable configs for nand bootDinesh Maniyam
Enable configs for nand boot. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: Kconfig: Add SYS_NAND_PAGE_SIZE dependencyDinesh Maniyam
Add SYS_NAND_PAGE_SIZE dependency for cadence NAND. This config is needed as the SPL driver will use this parameter to read uboot-proper image in NAND during booting. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: Enabled Kconfig and Makefile for Cadence-SPLDinesh Maniyam
Enable the Kconfig and Makefile for the Cadence-Nand SPL support in agilex5 family device. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: spl: Add support for nand SPL load imageDinesh Maniyam
Add support for spl nand to load binary image from NAND to RAM. Leverage the existing nand_spl_load_image from nand_spl_loaders.c Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: base: Add support for Hardware ECC for check bad blockDinesh Maniyam
Leverage linux code to support hardware ECC interface to verify nand bad block. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: nand: Enabled Kconfig and Makefile for cdns-nandDinesh Maniyam
Enable the Kconfig and Makefile for the Cadence NAND driver for the agilex5 family device. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Use bounce bufferDinesh Maniyam
Enable nand to use bounce buffer. In bounce buffer, read/write buf will use cadence->buf which has been allocated using malloc. This will align the memory and avoid memory to be allocated in different addresses. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Poll for desc complete statusDinesh Maniyam
Poll for thread complete status to ensure the descriptor processing is complete. If complete then can ensure controller already update the descriptor status. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Flush & invalidate dma descriptorDinesh Maniyam
Ensure ddr memory is updated with the data from dcache. This would help to ensure cdma always reading the latest dma descriptor from ddr memory. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Support cmd SET_FEATURES & GET_FEATURESDinesh Maniyam
Support NAND_CMD_SET_FEATURES & NAND_CMD_GET_FEATURES. These commands is one of the basic commands of NAND. The parameters get from these commands will be used to set timing mode of NAND data interface. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Add support for NAND_CMD_RESETDinesh Maniyam
Support nand reset command for Cadence Nand Driver. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Add support for NAND_CMD_PARAMDinesh Maniyam
Add support for reading param page of NAND device. These paramaters are unique and used for identification purpose. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Add support for readid commandDinesh Maniyam
Add support for readid command in Cadence NAND driver. The id is unique and used for flash identification. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: cadence: Add support for read status commandDinesh Maniyam
Add support for read status command in Cadence NAND driver. This status bit is important to check whether the flash is write-protected. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15drivers: mtd: nand: Add driver for Cadence NandDinesh Maniyam
Enable driver for Cadence NAND for the family device agilex5. This driver is leveraged from the path /drivers/mtd/nand/raw/cadence-nand-controller.c from the stable version 6.11.2. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15arm: dts: agilex5: Enabled cdns-nand dts settingDinesh Maniyam
Enable cdns-nand dts setting for the socfpga_agilex5 family device. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-15dt: nand: add cadence nand dt-bindingsDinesh Maniyam
The Cadence NAND is a configurable mtd raw block which supports multiple options for chipsets, clocking and reset structure, and feature list. Signed-off-by: Dinesh Maniyam <dinesh.maniyam@intel.com>
2025-03-14Merge patch series "Enable USB MSC Boot for AM62, AM62A and AM62P"Tom Rini
Siddharth Vadapalli <s-vadapalli@ti.com> says: This series adds config fragment for enabling USB MSC boot and USB Storage devices which are applicable to AM62, AM62A and AM62P SoCs. Series has been tested on AM62A7-SK, AM625-SK and AM62P5-SK for USB MSC boot where the bootloaders were generated in the following manner: 1. AM62A7-SK (AM62A SoC): - tiboot3.bin => am62ax_evm_r5_defconfig + am62x_r5_usbmsc.config - tispl.bin and u-boot.img => am62ax_evm_a53_defconfig + am62x_a53_usbmsc.config 2. AM625-SK (AM62 SoC): - tiboot3.bin => am62x_evm_r5_defconfig + am62x_r5_usbmsc.config - tispl.bin and u-boot.img => am62x_evm_a53_defconfig + am62x_a53_usbmsc.config 3. AM62P5-SK (AM62P SoC): - tiboot3.bin => am62px_evm_r5_defconfig + am62x_r5_usbmsc.config - tispl.bin and u-boot.img => am62px_evm_a53_defconfig + am62x_a53_usbmsc.config The images were flashed to a USB Flash Drive and were connected to the Type-C interface on each of the boards which supports USB MSC Boot. Logs corresponding to this series: 1. AM62A7-SK: https://gist.github.com/Siddharth-Vadapalli-at-TI/3518cba3edc57bf52d06a7df932928ca 2. AM625-SK: https://gist.github.com/Siddharth-Vadapalli-at-TI/098568be7b482436d27fdc8adae15ce4 3. AM62P5-SK: https://gist.github.com/Siddharth-Vadapalli-at-TI/50e29073033668e7d904a785bfbc9c0b The following device-tree changes were made across all of the boards: https://gist.github.com/Siddharth-Vadapalli-at-TI/2afb913838c1d4005bc059910c09ab4b Link: https://lore.kernel.org/r/20250301080049.965438-1-s-vadapalli@ti.com