summaryrefslogtreecommitdiff
path: root/drivers
AgeCommit message (Collapse)Author
2023-08-31event: Convert existing spy records to simpleSimon Glass
Very few of the existing event-spy records use the arguments they are passed. Update them to use a simple spy instead, to simplify the code. Where an adaptor function is currently used, remove it where possible. Signed-off-by: Simon Glass <[email protected]>
2023-08-30drivers/mtd/nvmxip: Move sandbox_set_enable_memio() to testMarek Vasut
The sandbox_set_enable_memio() should only ever be set during sandbox testing, not within driver itself, move it back to test/ . Signed-off-by: Marek Vasut <[email protected]>
2023-08-30drivers/mtd/nvmxip: Print phys_addr_t without warnings on both 32bit and ↵Marek Vasut
64bit systems Cast the address such that it can be printed without warnings on both 32bit and 64bit systems. This really should use some better print formatter, but for the lack of it, do it this way. Signed-off-by: Marek Vasut <[email protected]>
2023-08-30drivers/mtd/nvmxip: Rework the read accessor to support 32bit systemsMarek Vasut
Get rid of nvmxip_mmio_rawread() and just implement the readl()/readq() reader loop within nvmxip_blk_read(). Cast the destination buffer as needed and increment the read by either 4 or 8 bytes depending on if this is systemd with 32bit or 64bit physical address. Signed-off-by: Marek Vasut <[email protected]>
2023-08-30drivers/mtd/nvmxip: Trigger post bind as probe on driver levelMarek Vasut
Perform all the block device creation only once, after the driver itself successfully bound. Do not do this in uclass post bind, as this might be triggered multiple times. For example the ut_dm_host test triggers this and triggers a memory leak that way, since there are now multiple block devices created using the blk_create_devicef() . To retain the old probe-on-boot behavior, set DM_FLAG_PROBE_AFTER_BIND flag in uclass post_bind callback, so the driver model would probe the driver at the right time. Rename the function as well, to match similar functions in other block-related subsystems, like the mmc one. Signed-off-by: Marek Vasut <[email protected]>
2023-08-30serial-uclass: reset gd->cur_serial_dev to NULL if serial not foundMaksim Kiselev
Reset gd->cur_serial_dev pointer to avoid calling non-relocated code from relocated code if a serial driver is not found and CONFIG_REQUIRE_SERIAL_CONSOLE is disabled. Here is detailed explanation of what this patch is trying to fix. U-boot calls the serial_find_console_or_panic() function twice. The first console setup occurs before U-boot relocation in the serial_init(). This stage uses simple FDT parsing and assigns gd->cur_serial_dev to a "serial" device that lives in non-relocated code too. The second console setup after U-boot relocation(from serial_initialize()) may use full live DT (if OF_LIVE enabled) probe sequence with buses, clocks, resets, etc... And if the console setup fails at this step, than we should be caught by panic_str("No serial driver found"). But... If we disable CONFIG_REQUIRE_SERIAL_CONSOLE, than we return from serial_init() with gd->cur_serial_dev pointing to the "old"(non-relocated) serial device. And if this area, where "old" serial device is placed, is changed (e.g. Linux kernel may be relocated at this address), than we will get an unexpected crash on the next call of printf(). Signed-off-by: Maksim Kiselev <[email protected]>
2023-08-30pci: pcie-brcmstb: do not rely on CLKREQ# signalSam Edwards
When the Broadcom STB PCIe controller is initialized, it must be set into one of three CLKREQ# modes: "none"/"aspm"/"l1ss". The Linux driver, through today, hard-codes "aspm" since the vast majority of boards using this driver have a fixed PCIe bus with the CLKREQ# signal wired up. The Raspberry Pi CM4, however, can be connected to a plethora of PCIe devices, some of which do not connect the CLKREQ# line (they just leave it floating). So "aspm" mode is no longer appropriate in all cases. In Linux, there is a proposed patchset [1] to determine the proper mode. This doesn't really make sense in U-Boot's case, so we just change the assumption from "aspm" to "none" (which is always safe). This patch DOES resolve a real-world crash that occurs when U-Boot is running on a Raspberry Pi CM4 installed in slot 3 of a Turing Pi 2 cluster board. [1]: https://lore.kernel.org/all/[email protected]/ Signed-off-by: Sam Edwards <[email protected]>
2023-08-30pci: pcie-brcmstb: bring over some robustness improvements from LinuxSam Edwards
Since the initial U-Boot driver was ported here from Linux, the latter has had a few changes for robustness/stability. This patch brings over two of them: - Do not attempt to access the configuration space of a PCIe device if the link has gone down, as that will result in an asynchronous SError interrupt which will crash U-Boot. - Wait for the recommended 100ms after PERST# is deasserted. I sent this patch while debugging a crash involving PCIe, but these are unrelated improvements. I do not believe that this patch fixes any real-world bug. Signed-off-by: Sam Edwards <[email protected]>
2023-08-30Merge tag 'u-boot-at91-2023.10-a' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-at91 into next First set of u-boot-at91 features for the 2023.10 cycle: This feature set includes a new board sama5d29 Curiosity, and various fixes and alignments for sam9x60 and sam9x60 curiosity board.
2023-08-25dm: core: Correct error handling when event failsSimon Glass
Follow the correct path in device_probe() when and event handler fails. This avoids getting into a strange state where the device appears to be activated but is not. Signed-off-by: Simon Glass <[email protected]>
2023-08-25phy: phy-imx8mq-usb: clean up clock codeTim Harvey
use CONFIG_IS_ENABLED for clock enable/disable and change printf's to dev_err. Additionlly remove the comment that does not make sense. Signed-off-by: Tim Harvey <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2023-08-25phy: phy-imx8mq-usb: add vbus regulator supportTim Harvey
Add support for enabling and disabling vbus-supply regulator found on several imx8mp boards in the usb3_phy0 and usb3_phy1 nodes. Signed-off-by: Tim Harvey <[email protected]> Reviewed-by: Adam Ford <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Tested-by: Marcel Ziswiler <[email protected]>
2023-08-25usb: dwc3: Fix remove function if there is no ulpi_reset gpioVenkatesh Yadav Abbarapu
As ulpi_reset gpio is now optional, we need to check it when doing the 'dwc3_generic_remove' function. Check if it is declared before accessing the ulpi_reset. Fixes: 237d1f60b1d ("usb: dwc3: Use the devm_gpiod_get_optional() API for reset gpio") Reported-by: Thomas Nizan <[email protected]> Signed-off-by: Venkatesh Yadav Abbarapu <[email protected]>
2023-08-24ufs: Implement cache managementMarek Vasut
Add function to flush and invalidate cache over request and response queue entries, and perform flush and optional invalidate over block layer data that are passed into the UFS layer. This makes it possible to use UFS with caches enabled. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]> Tested-by: Bhupesh Sharma <[email protected]>
2023-08-24ufs: Use utp_transfer_req_desc pointer in ufshcd_get_tr_ocsMarek Vasut
Use utp_transfer_req_desc pointer to reference to utrdl queue instead of referencing the queue directly. This makes the code more consistent. No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]> Tested-by: Bhupesh Sharma <[email protected]>
2023-08-24ufs: Pass hba pointer to ufshcd_prepare_req_desc_hdr()Marek Vasut
Pass the hba pointer itself to ufshcd_prepare_req_desc_hdr() instead of duplicating utp_transfer_req_desc access at each call site. No functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]> Tested-by: Bhupesh Sharma <[email protected]>
2023-08-24ufs: Handle UFS 3.0 controllersMarek Vasut
Extend the version check to handle UFS 3.0 controllers as well. Tested on R-Car S4 UFS 3.0 controller. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]> Tested-by: Bhupesh Sharma <[email protected]>
2023-08-24ufs: Add UFSHCD_QUIRK_HIBERN_FASTAUTOMarek Vasut
Add UFSHCD_QUIRK_HIBERN_FASTAUTO quirk for host controllers which supports auto-hibernate the capability but only FASTAUTO mode. Ported from Linux kernel commit 2f11bbc2c7f3 ("scsi: ufs: core: Add UFSHCD_QUIRK_HIBERN_FASTAUTO") Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]> Tested-by: Bhupesh Sharma <[email protected]>
2023-08-24ufs: Add UFSHCD_QUIRK_BROKEN_64BIT_ADDRESSMarek Vasut
Add UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS for host controllers which do not support 64-bit addressing. Ported from Linux kernel commit 6554400d6f66 ("scsi: ufs: core: Add UFSHCD_QUIRK_BROKEN_64BIT_ADDRESS") with ufs_scsi_buffer_aligned() based on U-Boot generic bounce buffer. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]> Tested-by: Bhupesh Sharma <[email protected]>
2023-08-24ufs: Convert quirks to BIT() macroMarek Vasut
Use BIT() macro for quirks, no functional change. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Bhupesh Sharma <[email protected]>
2023-08-23mtd: nand: raw: atmel: Remove duplicate lineAlexander Dahl
Signed-off-by: Alexander Dahl <[email protected]> Reviewed-by: Michael Trimarchi <[email protected]>
2023-08-22scsi: Add buffer_aligned check pass-throughMarek Vasut
Some devices have limited DMA capabilities and require that the buffers passed to them fit specific properties. Add new optional callback which can be used at driver level to indicate whether a buffer alignment is suitable for the device DMA or not. This is a pass-through callback from block uclass to drivers. Signed-off-by: Marek Vasut <[email protected]>
2023-08-22blk: Add bounce buffer support to read/write operationsMarek Vasut
Some devices have limited DMA capabilities and require that the buffers passed to them fit specific properties. Add new optional callback which can be used at driver level to indicate whether a buffer alignment is suitable for the device DMA or not, and trigger use of generic bounce buffer implementation to help use of unsuitable buffers at the expense of performance degradation. Signed-off-by: Marek Vasut <[email protected]>
2023-08-22disk: Make blk_get_ops() internal to blk uclassMarek Vasut
Move the macro into blk-uclass.c , since it is only used there. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-08-22disk: Move part_create_block_devices() to blk uclassMarek Vasut
Move part_create_block_devices() to blk uclass and unexpose the function. This can now be internal to the block uclass. Signed-off-by: Marek Vasut <[email protected]>
2023-08-22dm: event: add EVT_DM_POST_INIT_R event typeChanho Park
This patch introduces EVT_DM_POST_INIT_R event type for handling hooks after relocation. Fixes: 55171aedda88 ("dm: Emit the arch_cpu_init_dm() even only before relocation") Suggested-by: Simon Glass <[email protected]> Cc: Bin Meng <[email protected]> Signed-off-by: Chanho Park <[email protected]> Tested-by: Milan P. Stanić <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Roland Ruckerbauer <[email protected]> Tested-by: Roland Ruckerbauer <[email protected]> Fixed missing event name in event.c: Signed-off-by: Simon Glass <[email protected]>
2023-08-21Merge tag 'v2023.10-rc3' into nextTom Rini
Prepare v2023.10-rc3 Signed-off-by: Tom Rini <[email protected]>
2023-08-20Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-shTom Rini
2023-08-17scsi: Cache align temporary bufferMarek Vasut
The temporary buffer may be passed to DMA capable device, make sure it is cache aligned. Signed-off-by: Marek Vasut <[email protected]>
2023-08-17gpio: pca953x: Add TI TCA9554 supportMarek Vasut
Add support for TI TCA9554, which is compatible with PCA9554 . Signed-off-by: Marek Vasut <[email protected]>
2023-08-17ufs: cdns: Drop extra spaceMarek Vasut
Drop extra space before UCLASS. No functional change. Signed-off-by: Marek Vasut <[email protected]>
2023-08-17arm_ffa: use debug logsAbdellatif El Khlifi
replace info logs with debug logs Signed-off-by: Abdellatif El Khlifi <[email protected]> Cc: Tom Rini <[email protected]> Cc: Simon Glass <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-08-16serial: stm32: extend TC timeoutValentin Caron
Waiting 150us TC bit couldn't be enough. If TFA lets 16 bits in USART fifo, we has to wait 16 times 87 us (time of 10 bits (1 byte in most use cases) at a baud rate of 115200). Fixes: b4dbc5d65a67 ("serial: stm32: Wait TC bit before performing initialization") Signed-off-by: Valentin Caron <[email protected]> Signed-off-by: Patrice Chotard <[email protected]>
2023-08-16clk: stm32mp1: remove error for disabled clock in stm32mp1_clk_get_parentPatrick Delaunay
To disabled a clock in clock tree initialization for a mux of STM32MP15, the selected clock source index is set with the latest possible index for the number of bit used. Today this valid configuration cause a error in U-Boot messages, for example with CLK_ETH_DISABLED, when this clock is not needed for the used ETH PHY without crystal: no parents defined for clk id 123 This patch change the level of this message to avoid this trace for valid clock tree. Signed-off-by: Patrick Delaunay <[email protected]> Reviewed-by: Patrice Chotard <[email protected]>
2023-08-15phy: ti: j721e-wiz: Add SGMII support in WIZ driver for J721ESiddharth Vadapalli
Enable full rate divider configuration support for J721E_WIZ_16G for SGMII. Signed-off-by: Siddharth Vadapalli <[email protected]>
2023-08-15phy: ti: phy-j721e-wiz: Add SGMII support in wiz driver for J7200Siddharth Vadapalli
Select the same mac divider for SGMII too as the one being used for QSGMII. Enable full rate divider configuration support for J721E_WIZ_10G for SGMII. Signed-off-by: Siddharth Vadapalli <[email protected]>
2023-08-15net: ti: am65-cpsw-nuss: Add logic to support MDIO resetSuman Anna
Enhance the AM65 CPSW NUSS driver to perform a MDIO reset using a GPIO line. Logic is also added to perform a pre and post delay around reset using the optional 'reset-delay-us' and 'reset-post-delay-us' properties. This is similar to the reset being performed in the Linux kernel. The reset is done once when the CPSW MDIO bus is being initialized. Signed-off-by: Suman Anna <[email protected]> Signed-off-by: Siddharth Vadapalli <[email protected]>
2023-08-15net: ti: am65-cpsw-nuss: Add support for SGMII modeSiddharth Vadapalli
Add support for configuring the CPSW Ethernet Switch in SGMII mode. Signed-off-by: Siddharth Vadapalli <[email protected]>
2023-08-15dma: ti: Update J21E PSIL endpoint information for MAIN CPSW0Suman Anna
The PSIL endpoint data for J721E currently covers only the MCU domain CPSW0 instance. Add the data for the MAIN domain CPSW0 as well to allow the MAIN domain Ethernet ports to be usable on any platform using J721E SoC. Additionally, since J721E's PSIL endpoint data is applicable to J7200 SoC as well, the MAIN CPSW0 instance on J7200 will also be usable now. Signed-off-by: Suman Anna <[email protected]> [[email protected]: Update commit message indicating support for J7200] Signed-off-by: Siddharth Vadapalli <[email protected]>
2023-08-15i2c: mvtwsi: reset controller if stuck in "bus error" stateSam Edwards
The MVTWSI controller can act either as a master or slave device. When acting as a master, the FSM is driven by the CPU. As a slave, the FSM is driven by the bus directly. In what is (apparently) a safety mechanism, if the bus transitions our FSM in any improper way, the FSM goes to a "bus error" state (0x00). I could find no documented or experimental way to get the FSM out of this state, except for a controller reset. Since U-Boot only uses the MVTWSI controller as a bus master, this feature only gets in the way: we do not care what happened on the bus previously as long as the bus is ready for a new transaction. So, when trying to start a new transaction, check for this state and reset the controller if necessary. Note that this should not be confused with the "deblocking" technique (used by the `i2c reset` command), which involves pulsing SCL repeatedly if SDA is found to be held low, in an attempt to force the bus back to an idle state. This patch only resets the controller in case something else had previously upset it, and (in principle) results in no externally-observable change in behavior. Signed-off-by: Sam Edwards <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Reviewed-by: Heiko Schocher <[email protected]>
2023-08-14gpio: Use separate bitfield array to indicate GPIO is claimedMarek Vasut
The current gpio-uclass design uses name field in struct gpio_dev_priv as an indicator that GPIO is claimed by consumer. This overloads the function of name field and does not work well for named pins not configured as GPIO pins. Introduce separate bitfield array as the claim indicator. This unbreaks dual-purpose AF and GPIO operation on STM32MP since commit 2c38f7c31806 ("pinctrl: pinctrl_stm32: Populate uc_priv->name[] with pinmux node's name") where any pin which has already been configured as AF could no longer be claimed as dual-purpose GPIO. This is important for pins like STM32 MMCI st,cmd-gpios . Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-08-14pci: ftpci100: add new driver implementationSergei Antonov
Add a new DM driver supporting FTPCI100 IP used in SoC designs. This implementation is not based on the old non-DM ftpci100 code dropped from U-Boot. Enable the driver in sandbox_defconfig to test compilability. Signed-off-by: Sergei Antonov <[email protected]>
2023-08-14pci: Fix device_find_first_child() return value handlingMarek Vasut
This function only ever returns 0, but may not assign the second parameter. Same thing for device_find_next_child(). Do not assign ret to stop proliferation of this misuse. Reported-by: Jonas Karlman <[email protected]> Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2023-08-14phy: Add support for the Apple Type-C PHYMark Kettenis
This is merely a dummy driver that makes sure the DWC3 XHCI driver finds its reset and PHY controllers. We rely on iBoot to set up the PHY for us. Signed-off-by: Mark Kettenis <[email protected]>
2023-08-14pci: apple: Enable CONFIG_SYS_PCI_64BITMark Kettenis
The Apple hardware supports 64-bit prefetchable memory windows so enable CONFIG_SYS_PCI_64BIT. This fixes BAR assignments for the Broadcom Ethernet controller used in some of the desktop machines. Signed-off-by: Mark Kettenis <[email protected]>
2023-08-14mmc: dw_mmc: Keep vqmmc-supply enable count in balanceJonas Karlman
With the commit 4fcba5d556b4 ("regulator: implement basic reference counter"), keeping regulator enablement in balance become more important. Disable vqmmc-supply before signal voltage is changed to keep regulator enable counter in balance. Signed-off-by: Jonas Karlman <[email protected]>
2023-08-14mmc: Use regulator_set_enable_if_allowedJonas Karlman
With the commit 4fcba5d556b4 ("regulator: implement basic reference counter") the return value of regulator_set_enable may be EALREADY or EBUSY for fixed/gpio regulators. Change to use the more relaxed regulator_set_enable_if_allowed to continue if regulator already was enabled or disabled. Signed-off-by: Jonas Karlman <[email protected]> Tested-by: Svyatoslav Ryhel <[email protected]> # P895 Tegra 3; Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # rockpro64-rk3399
2023-08-14usb: ehci-generic: Use regulator_set_enable_if_allowedJonas Karlman
With the commit 4fcba5d556b4 ("regulator: implement basic reference counter") the return value of regulator_set_enable may be EALREADY or EBUSY for fixed/gpio regulators. Change to use the more relaxed regulator_set_enable_if_allowed to continue if regulator already was enabled or disabled. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2023-08-14usb: dwc2: Use regulator_set_enable_if_allowedJonas Karlman
With the commit 4fcba5d556b4 ("regulator: implement basic reference counter") the return value of regulator_set_enable may be EALREADY or EBUSY for fixed/gpio regulators. Change to use the more relaxed regulator_set_enable_if_allowed to continue if regulator already was enabled or disabled. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # rockpro64-rk3399 Reviewed-by: Marek Vasut <[email protected]>
2023-08-14adc: Use regulator_set_enable_if_allowedJonas Karlman
With the commit 4fcba5d556b4 ("regulator: implement basic reference counter") the return value of regulator_set_enable may be EALREADY or EBUSY for fixed/gpio regulators. Change to use the more relaxed regulator_set_enable_if_allowed to continue if regulator already was enabled or disabled. Signed-off-by: Jonas Karlman <[email protected]> Reviewed-by: Simon Glass <[email protected]> Tested-by: Simon Glass <[email protected]> # rockpro64-rk3399