summaryrefslogtreecommitdiff
path: root/drivers/ata
AgeCommit message (Collapse)Author
2025-10-13sata: sata_mv: Remove always true testAndrew Goodbody
Smatch reported an issue with a test that was always true in that an unsigned variable will always be >= to zero. This led to a closer look at the code which showed that some static functions returned values that were always discarded so make those functions return void. Also make the passing of block counts in those functions always use lbaint_t. Signed-off-by: Andrew Goodbody <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2025-07-10ata: Correct two dependency issuesTom Rini
First, the SATA_MV driver can only build on kirkwood or mvebu platforms due to header requirements, so add that as a dependency here. Second, SYS_SATA_MAX_DEVICE is also used by the API code so allow it to be configured in that case. Reviewed-by: Tony Dinh <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2025-06-14drivers: use lowercase hex prefix styleE Shattow
Use consistent lowercase hex prefix style in drivers/* Does not change hex prefix case in allcaps uppercase style error messages Signed-off-by: E Shattow <[email protected]>
2025-04-22Merge patch series "MIPS: Boston: Various enhancements"Tom Rini
Jiaxun Yang <[email protected]> says: This is a huge series which promoted MIPS/Boston target into a usable state, with fixes to drivers and general framework issues I found in this process. I also converted the target to OF_UPSTREAM. This target is covered by QEMU, to test on QEMU: ``` make boston64r6el_defconfig make qemu-system-mips64el -M boston -cpu I6500 -bios ./u-boot.bin -nographic ``` Link: https://lore.kernel.org/r/[email protected]
2025-04-22ahci: dwc_ahsata: Generalize the driverJiaxun Yang
Remove hard dependencies to arch headers, get clock from clk subsystem if arch clock function is not available, align compatible strings with devicetree binding. No functional change on existing platforms, just get it build on other platforms. Signed-off-by: Jiaxun Yang <[email protected]>
2025-04-22ahci: DMA addressing fixesJiaxun Yang
Ensure that we are using correct physical/virtual address for DMA buffer write and hardware register settings. The convention is: in ahci_ioports all pointers are virtual, that will be converted to physical address when writing to hardware registers or into sg/cmd_tbl. Also fixed 64bit physical address support for dwc_ahsata, ensure higher bits are written into registers/sg properly. Use memalign for allocating aligned buffer in dwc_ahsata so we don't have to do our own alignment in driver. Signed-off-by: Jiaxun Yang <[email protected]>
2025-04-11Merge patch series "Switch to using $(PHASE_) in Makefiles"Tom Rini
Tom Rini <[email protected]> says: This series switches to always using $(PHASE_) in Makefiles when building rather than $(PHASE_) or $(XPL_). It also starts on documenting this part of the build, but as a follow-up we need to rename doc/develop/spl.rst and expand on explaining things a bit. Link: https://lore.kernel.org/r/[email protected]
2025-04-11Kbuild: Always use $(PHASE_)Tom Rini
It is confusing to have both "$(PHASE_)" and "$(XPL_)" be used in our Makefiles as part of the macros to determine when to do something in our Makefiles based on what phase of the build we are in. For consistency, bring this down to a single macro and use "$(PHASE_)" only. Signed-off-by: Tom Rini <[email protected]>
2025-04-10Merge patch series "scsi: ensure writes are flushed to disk"Tom Rini
Caleb Connolly <[email protected]> says: SCSI devices like UFS may maintain their own cache to speed up writes, however this is lost on board reset (and may be lost on device removal or reset by OS drivers). Currently this can be worked around by "waiting for a while" after writing data to disk, but of course this is not an acceptable solution. Ideally U-Boot would have a mechanism to flush caches during board reset, but until that logic is hooked up let's be sure that all writes are actually propagated to the storage device so that we don't lose data on board reset. The same logic was already implemented just for the AHCI backend, this duplicated logic has been removed and support for the SYNC_CACHE command is added to AHCI. This is particularly noticeable during capsule updates, since the update file is deleted and the board is reset immediately afterwards which resulted in the same capsule update being applied over and over again. This specifically fixes Qualcomm SDM845 devices with UFS 2.1, but likely all UFS devices that use a cache. Link: https://lore.kernel.org/r/[email protected]
2025-04-10ata: ahci: implement SCSI_SYNC_CACHECaleb Connolly
The SCSI layer now issues a SYNC_CACHE command after every write to ensure there is no data loss due to a board reset after write. Implement support for this command and remove the same logic from the ATA write path to be consistent with other SCSI backends. Ranges are not supported and the whole cache will be flushed in all cases. This was done per iteration in ata_scsiop_read_write(), but it's not clear why this was the case, calling it once for the entire write ought to achieve the same result. Signed-off-by: Caleb Connolly <[email protected]> Reviewed-by: Neil Armstrong <[email protected]>
2025-04-08ata: ahci: remove bad freeVincent Stehlé
In the case of a memory allocation error, the ahci_port_start() function tries to free the `pp' pointer. This pointer was not dynamically allocated but does in fact point to an element of the port[] array member of the struct ahci_uc_priv. Remove the erroneous call to free() to fix this. Fixes: 4782ac80b02f ("Add AHCI support to u-boot") Signed-off-by: Vincent Stehlé <[email protected]> Cc: Tom Rini <[email protected]> Cc: Jason Jin <[email protected]> Reviewed-by: Andre Przywara <[email protected]>
2025-01-20blk: Make block subsystems select BLKTom Rini
The BLK symbol has a few meanings, one of which is that it controls the driver model portion of a "block device". Rather than having this hidden symbol be "default y if ..." it should be select'd by the various block subsystems. Symbols such as PVBLOCK which already select'd BLK are unchanged". Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-10-27Merge patch series "Implement ACPI on aarch64"Tom Rini
Patrick Rudolph <[email protected]> says: Based on the existing work done by Simon Glass this series adds support for booting aarch64 devices using ACPI only. As first target QEMU SBSA support is added, which relies on ACPI only to boot an OS. As secondary target the Raspberry Pi4 was used, which is broadly available and allows easy testing of the proposed solution. The series is split into ACPI cleanups and code movements, adding Arm specific ACPI tables and finally SoC and mainboard related changes to boot a Linux on the QEMU SBSA and RPi4. Currently only the mandatory ACPI tables are supported, allowing to boot into Linux without errors. The QEMU SBSA support is feature complete and provides the same functionality as the EDK2 implementation. The changes were tested on real hardware as well on QEMU v9.0: qemu-system-aarch64 -machine sbsa-ref -nographic -cpu cortex-a57 \ -pflash secure-world.rom \ -pflash unsecure-world.rom qemu-system-aarch64 -machine raspi4b -kernel u-boot.bin -cpu cortex-a72 \ -smp 4 -m 2G -drive file=raspbian.img,format=raw,index=0 \ -dtb bcm2711-rpi-4-b.dtb -nographic Tested against FWTS V24.03.00. Known issues: - The QEMU rpi4 support is currently limited as it doesn't emulate PCI, USB or ethernet devices! - The SMP bringup doesn't work on RPi4, but works in QEMU (Possibly cache related). - PCI on RPI4 isn't working on real hardware since the pcie_brcmstb Linux kernel module doesn't support ACPI yet. Link: https://lore.kernel.org/r/[email protected]
2024-10-27drivers: ata: Rename ahci_mvebuPatrick Rudolph
Rename 'ahci_mvebu' to 'ahci_generic' and select it by default. The AHCI driver contains no SoC specific code and only expects the base address to be passed, thus rename it to ahci_generic and add the DT compatible string "generic-ahci". Update existing defconfigs to use the new Kconfig name as well. TEST: Booted on QEMU sbsa using the generic-ahci node. Signed-off-by: Patrick Rudolph <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Cc: Tom Rini <[email protected]> Cc: Stefan Roese <[email protected]> Acked-by: Tony Dinh <[email protected]>
2024-10-11global: Rename SPL_ to XPL_Simon Glass
Use XPL_ as the symbol to indicate an SPL build. This means that SPL_ is no-longer set. Signed-off-by: Simon Glass <[email protected]>
2024-08-27ata: sata_rescan must scan for block devicesHeinrich Schuchardt
A system may have multiple SATA controller. Removing the controller with the lowest sequence number before probing all SATA controllers makes no sense. In sata_rescan we remove all block devices which are children of SATA controllers. We also have to remove the bootdev devices as they will be created when scanning for block devices. After probing all SATA controllers we must scan for block devices otherwise we end up without any SATA block device. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2024-08-27ata: dwc_ahsata: create boot deviceHeinrich Schuchardt
For each block device we must create a sibling boot device. Signed-off-by: Heinrich Schuchardt <[email protected]>
2024-07-22drivers: ata: Remove duplicate newlinesMarek Vasut
Drop all duplicate newlines. No functional change. Signed-off-by: Marek Vasut <[email protected]>
2024-06-14block: Update BLK to be def_boolTom Rini
At this point in the DM migration, all platforms enable DM. BLK requires DM. Make BLK "def_bool y" in the cases it had been "default y" to make this clearer. Now remove the symbol requirement from other places as it is redundant here. Signed-off-by: Tom Rini <[email protected]>
2024-05-20Restore patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"Tom Rini
As part of bringing the master branch back in to next, we need to allow for all of these changes to exist here. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-05-19Revert "Merge patch series "arm: dts: am62-beagleplay: Fix Beagleplay Ethernet""Tom Rini
When bringing in the series 'arm: dts: am62-beagleplay: Fix Beagleplay Ethernet"' I failed to notice that b4 noticed it was based on next and so took that as the base commit and merged that part of next to master. This reverts commit c8ffd1356d42223cbb8c86280a083cc3c93e6426, reversing changes made to 2ee6f3a5f7550de3599faef9704e166e5dcace35. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2024-05-07ata: Remove <common.h> and add needed includesTom Rini
Remove <common.h> from this driver directory and when needed add missing include files directly. Reviewed-by: Tony Dinh <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2023-11-20Merge tag 'v2024.01-rc3' into nextTom Rini
Prepare v2024.01-rc3
2023-11-10bootstd: Skip over bad device during bootflows scanningTony Dinh
During bootstd scanning for bootdevs, if bootdev_hunt_drv() encounters a device not found error (e.g. ENOENT), let it return a successful status so that bootstd will continue scanning the next devices, not stopping prematurely. Background: During scanning for bootflows, it's possible for bootstd to encounter a faulty device controller. Also when the same u-boot is used for another variant of the same board, some device controller such as SATA might not exist. I've found this issue while converting the Marvell Sheevaplug board to use bootstd. This board has 2 variants, the original Sheevaplug has MMC and USB only, but the later variant comes with USB, MMC, and eSATA ports. We have been using the same u-boot (starting with CONFIG_IDE and later with DM CONFIG_SATA) for both variants. This worked well with the old envs-scripting booting scheme. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-11-07scsi: Forceably finish migration to DM_SCSITom Rini
The migration deadline for moving to DM_SCSI was v2023.04. A further reminder was sent out in August 2023 to the remaining platforms that had not migrated already, and that a few more over the line (or configs deleted). With this commit we: - Rename CONFIG_DM_SCSI to CONFIG_SCSI. - Remove all of the non-DM SCSI code. This includes removing other legacy symbols and code and removes some legacy non-DM AHCI code. - Some platforms that had previously been DM_SCSI=y && SCSI=n are now fully migrated to DM_SCSI as a few corner cases in the code assumed DM_SCSI=y meant SCSI=y. Signed-off-by: Tom Rini <[email protected]>
2023-10-23bootstd: sata: bootdev scanning for ahci sata with no drive attachedTony Dinh
It's normal to have no SATA drive attached to the controller, so return a successful status when there is no block device found after probing. Note: this patch depends on the previous patch https://patchwork.ozlabs.org/project/uboot/patch/[email protected]/ Resend the right patch. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2023-10-23bootstd: sata: Add bootstd support for ahci sataTony Dinh
Add ahci sata bootdev and corresponding hunting function. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2023-10-22sunxi: remove CONFIG_SATAPWRAndre Przywara
The CONFIG_SATAPWR Kconfig symbol was used to point to a GPIO that enables the power for a SATA harddisk. In the DT this is described with the target-supply property in the AHCI DT node, pointing to a (GPIO controlled) regulator. Since we need SATA only in U-Boot proper, and use a DM driver for AHCI there, we should use the DT instead of hardcoding this. Add code to the sunxi AHCI driver to check the DT for that regulator and enable it, at probe time. Then drop the current code from board.c, which was doing that job before. This allows us to remove the SATAPWR Kconfig definition and the respective values from the defconfigs. We also select the generic fixed regulator driver, which handles those GPIO controlled regulators. Please note that the OrangePi Plus is a bit special here, it's a H3 board without native SATA, but with a USB-to-SATA bridge. The DT models the SATA power via a VBUS supply regulator, which we don't parse yet in the USB PHY driver. Use the hardcoded CONFIG_USB3_VBUS_PIN for that board meanwhile. Signed-off-by: Andre Przywara <[email protected]> Reviewed-by: Sam Edwards <[email protected]> Reviewed-by: Samuel Holland <[email protected]>
2023-10-16arm: mvebu: sata_mv: Add bootstd hook to enable sata_bootdevTony Dinh
Add hook in sata_mv probe to enable bootstd bootdev. Note: bootdev_setup_for_sibling_blk() invocation is a noop if bootsd is not enabled for ahci sata yet. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2023-10-10blk: Use a macro for the typical block sizeBin Meng
Avoid using the magic number 512 directly. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-09-24common: Drop linux/printk.h from common headerSimon Glass
This old patch was marked as deferred. Bring it back to life, to continue towards the removal of common.h Move this out of the common header and include it only where needed. Signed-off-by: Simon Glass <[email protected]>
2023-09-13scsi: ceva: Use generic_phy_valid() helperJonas Karlman
The documentation for struct phy state that "The content of the structure is managed solely by the PHY API and PHY drivers". Change to use the generic_phy_valid() helper to check if phy is valid. Fixes: f6f5451d469b ("scsi: ceva: Enable PHY and reset support") Signed-off-by: Jonas Karlman <[email protected]>
2023-07-28ata: dwc_ahci: Fix support for other platformsJonas Karlman
The dwc_ahci driver use platform specific defines, place the platform specific code behind a ifdef CONFIG_ARCH_OMAP2PLUS to allow build and use of the driver on Rockchip platform. Fixes: 02a4b4297901 ("drivers: block: dwc_ahci: Implement a driver for Synopsys DWC sata device") Signed-off-by: Jonas Karlman <[email protected]>
2023-07-21arm64: zynqmp: Switch to amd.com emailsMichal Simek
Update my and DPs email address to match current setup. Signed-off-by: Michal Simek <[email protected]> Link: https://lore.kernel.org/r/aba5b19b9c5a95608829e86ad5cc4671c940f1bb.1688992543.git.michal.simek@amd.com
2023-05-06drivers: use dev_read_addr_ptr when cast to pointerJohan Jonker
The fdt_addr_t and phys_addr_t size have been decoupled. A 32bit CPU can expect 64-bit data from the device tree parser, so use dev_read_addr_ptr instead of the dev_read_addr function in the various files in the drivers directory that cast to a pointer. As we are there also streamline the error response to -EINVAL on return. Signed-off-by: Johan Jonker <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-04-25ata: pci: enable bus masteringChristian Gmeiner
The non DM code path already would enable pci bus mastering. Do the same for the DM code path. Fixes AHCI problems I am seeing on an Intel Apollolake device. Signed-off-by: Christian Gmeiner <[email protected]> Reviewed-by: Bin Meng <[email protected]> [trini: Use ahci_dev not dev in the calls] Signed-off-by: Tom Rini <[email protected]>
2023-04-06ata: don't use SYS_SCSI_MAX_SCSI_ID for SATAHeinrich Schuchardt
CONFIG_SYS_SCSI_MAX_SCSI_ID is not defined if CONFIG_SCSI=n. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-04-06ata: fix requirements for CONFIG_AHCI_PCIHeinrich Schuchardt
Building with CONFIG_AHCI_PCI=y and CONFIG_SCSI_AHCI=n leads to drivers/ata/ahci-pci.o: in function `ahci_pci_probe': drivers/ata/ahci-pci.c:21: undefined reference to `ahci_probe_scsi_pci' Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-01-23ata: Don't try to use non-existent portsSimon Glass
The controller indicates the number of ports but also has a port map which specifies which ports are actually valid. Make use of this to avoid trying to send commands to an invalid port. This avoids a crash on some controllers. Signed-off-by: Simon Glass <[email protected]>
2023-01-11ata: Fix dependency for CONFIG_SATA_SILPali Rohár
sata_sil.c is PCI driver and without CONFIG_PCI is building of U-Boot failing: LD u-boot ld.bfd: drivers/ata/sata_sil.o: in function `sil_exec_cmd': drivers/ata/sata_sil.c:148: undefined reference to `dm_pci_phys_to_bus' ld.bfd: drivers/ata/sata_sil.o: in function `sil_pci_probe': drivers/ata/sata_sil.c:687: undefined reference to `dm_pci_get_bdf' ld.bfd: drivers/ata/sata_sil.c:691: undefined reference to `dm_pci_read_config16' ld.bfd: drivers/ata/sata_sil.c:701: undefined reference to `dm_pci_map_bar' ld.bfd: drivers/ata/sata_sil.c:704: undefined reference to `dm_pci_map_bar' ld.bfd: drivers/ata/sata_sil.c:713: undefined reference to `dm_pci_write_config16' ld.bfd: drivers/ata/sata_sil.c:717: undefined reference to `dm_pci_read_config16' ld.bfd: drivers/ata/sata_sil.o: in function `sil_cmd_identify_device': drivers/ata/sata_sil.c:256: undefined reference to `dm_pci_phys_to_bus' ld.bfd: drivers/ata/sata_sil.o: in function `sil_sata_rw_cmd': drivers/ata/sata_sil.c:330: undefined reference to `dm_pci_phys_to_bus' ld.bfd: drivers/ata/sata_sil.o: in function `sil_sata_rw_cmd_ext': drivers/ata/sata_sil.c:377: undefined reference to `dm_pci_phys_to_bus' make: *** [Makefile:1778: u-boot] Error 1 Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2022-12-08ata: ahci-pci: Replace magic constant by macroPali Rohár
Replace 0x1b21 by macro PCI_VENDOR_ID_ASMEDIA with the same value. Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-09-25blk: Rename if_type to uclass_idSimon Glass
Use the word 'uclass' instead of 'if_type' to complete the conversion. Signed-off-by: Simon Glass <[email protected]>
2022-09-16blk: Switch over to using uclass IDsSimon Glass
We currently have an if_type (interface type) and a uclass id. These are closely related and we don't need to have both. Drop the if_type values and use the uclass ones instead. Maintain the existing, subtle, one-way conversion between UCLASS_USB and UCLASS_MASS_STORAGE for now, and add a comment. Signed-off-by: Simon Glass <[email protected]>
2022-09-16blk: Select SPL_LEGACY_BLOCK automaticallySimon Glass
Selecting this option can be handled in the Kconfig option itself, as it is with BLK. Update this an drop the various 'select' clauses. Signed-off-by: Simon Glass <[email protected]>
2022-09-16blk: Rename HAVE_BLOCK_DEVICESimon Glass
This option is fact really related to SPL. For U-Boot proper we always use driver model for block devices, so CONFIG_BLK is enabled if block devices are in use. It is only for SPL that we have two cases: - SPL_BLK is enabled, in which case we use driver model and blk-uclass.c - SPL_BLK is not enabled, in which case (if we need block devices) we must use blk_legacy.c Rename the symbol to SPL_LEGACY_BLOCK to make this clear. This is different enough from BLK and SPL_BLK that there should be no confusion. Signed-off-by: Simon Glass <[email protected]>
2022-09-16ata: Fix an instance of SPL_SATA_SUPPORTSimon Glass
The _SUPPORT suffix should be dropped. This happened because the rename was applied around the same time as this new option, so did not include renaming the new option. The relevant commits are: f7560376ae sata: Rename SATA_SUPPORT to SATA 73059529b2 ata: ahci-pci: Add new option CONFIG_SPL_AHCI_PCI Fix it. Signed-off-by: Simon Glass <[email protected]>
2022-09-16blk: Enable CONFIG_BLK for all mediaSimon Glass
Enable this option on all boards which support block devices. Drop the related depencies on BLK since these are not needed anymore. Disable BLOCK_CACHE on M5253DEMO as this causes a build error. Signed-off-by: Simon Glass <[email protected]>
2022-06-28ata: sata_sil: Remove useless BLK guard in sata_sil.hTom Rini
Now that the driver only supports CONFIG_BLK, remove the useless guard in sata_sil.h. Signed-off-by: Tom Rini <[email protected]>
2022-06-28Convert CONFIG_LBA48 et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_LBA48 CONFIG_SYS_64BIT_LBA Signed-off-by: Tom Rini <[email protected]>
2022-06-28Convert CONFIG_FSL_SATA_V2 to KconfigTom Rini
This converts the following to Kconfig: CONFIG_FSL_SATA_V2 Signed-off-by: Tom Rini <[email protected]>