summaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2022-04-10phy: adin: add driver for Analog Devices ADIN1300 PHYNate Drude
The current implementation configures RGMII using device tree phy-mode property and then calls genphy_config adin_config_rgmii_mode is derived from: https://github.com/varigit/linux-imx/blob/lf-5.10.y_var04/drivers/net/phy/adin.c#L218-L262 Signed-off-by: Nate Drude <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2022-04-10net: phy: don't require PHY interface mode during PHY creationMarek Behún
Currently we require PHY interface mode to be known when finding/creating the PHY - the functions * phy_connect_phy_id() * phy_device_create() * create_phy_by_mask() * search_for_existing_phy() * get_phy_device_by_mask() * phy_find_by_mask() all require the interface parameter, but the only thing done with it is that it is assigned to phydev->interface. This makes it impossible to find a PHY device without overwriting the set mode. Since the interface mode is not used during .probe() and should be used at first in .config(), drop the interface parameter from these functions. Make the default value of phydev->interface (in phy_device_create()) to be PHY_INTERFACE_MODE_NA. Move the interface parameter to phy_connect_dev(), where it should be. Change all occurrences treewide. In occurrences where we don't call phy_connect_dev() for some reason (they only configure the PHY without connecting it to an ethernet controller), set phydev->interface = value from phy_find_by_mask call. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]>
2022-04-10net: phy: use ->is_c45 instead of is_10g_interface()Marek Behún
Use phydev->is_c45 instead of is_10g_interface(phydev->interface) to determine whether clause 45 protocol should be used. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2022-04-10phy: Move PHY_INTERFACE_MODE_NA to the beginning of the enum definitionMarek Behún
Move PHY_INTERFACE_MODE_NA to the beginning of the enum definition to make it have zero value. This makes it possible (although not encouraged) to test for invalid/nonexistent interface mode with !val instead of val == PHY_INTERFACE_MODE_NA. The comment near the definition says "Must be last", because when the constant was introduced in commit 5f184715ecd3 ("Create PHY Lib for U-Boot"), it was used as the maximum value when interating over the constants. But this is no longer true - we use PHY_INTERFACE_MODE_MAX for that now, and so we can move it. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2022-04-10treewide: Rename PHY_INTERFACE_MODE_NONE to PHY_INTERFACE_MODE_NAMarek Behún
Rename constant PHY_INTERFACE_MODE_NONE to PHY_INTERFACE_MODE_NA to make it compatible with Linux' naming. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]>
2022-04-10treewide: Rename PHY_INTERFACE_MODE_COUNT to PHY_INTERFACE_MODE_MAXMarek Behún
Rename constant PHY_INTERFACE_MODE_COUNT to PHY_INTERFACE_MODE_MAX to make it compatible with Linux' naming. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Stefan Roese <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]>
2022-04-10net: introduce helpers to get PHY interface mode from a device/ofnodeMarek Behún
Add helpers ofnode_read_phy_mode() and dev_read_phy_mode() to parse the "phy-mode" / "phy-connection-type" property. Add corresponding UT test. Use them treewide. This allows us to inline the phy_get_interface_by_name() into ofnode_read_phy_mode(), since the former is not used anymore. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Tested-by: Patrice Chotard <[email protected]>
2022-04-10net: mdio-uclass: add wrappers for read/write/reset operationsMarek Behún
Add wrappers dm_mdio_read(), dm_mdio_write() and dm_mdio_reset() for DM MDIO's .read(), .write() and .reset() operations. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]>
2022-04-10net: introduce helpers to get PHY ofnode from MACMarek Behún
Add helpers ofnode_get_phy_node() and dev_get_phy_node() and use it in net/mdio-uclass.c function dm_eth_connect_phy_handle(). Also add corresponding UT test. This is useful because other part's of U-Boot may want to get PHY ofnode without connecting a PHY. Signed-off-by: Marek Behún <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-04-01serial: dm: Add support for putsSean Anderson
Some serial drivers can be vastly more efficient when printing multiple characters at once. Non-DM serial has had a puts option for these sorts of drivers; implement it for DM serial as well. Because we have to add carriage returns, we can't just pass the whole string directly to the serial driver. Instead, we print up to the newline, then print a carriage return, and then continue on. This is less efficient, but it is better than printing each character individually. It also avoids having to allocate memory just to add a few characters. Drivers may perform short writes (such as filling a FIFO) and return the number of characters written in len. We loop over them in the same way that _serial_putc loops over putc. This results in around sizeof(void *) growth for all boards with DM_SERIAL. The full implementation takes around 140 bytes. Signed-off-by: Sean Anderson <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-04-01arm64: Catch non-emulated semihosting callsSean Anderson
If a debugger is not attached to U-Boot, semihosting calls will raise a synchronous abort exception. Try to catch this and disable semihosting so we can e.g. use another uart if one is available. In the immediate case, we return an error, since it is not always possible to check for semihosting beforehand (debug uart, user-initiated load command, etc.) We handle all possible semihosting instructions, which is probably overkill. However, we do need to keep track of what instruction set we're using so that we don't suppress an actual error. A future enhancement could try to determine semihosting capability by inspecting the processor state. There's an example of this at [1] for RISC-V. The equivalent for ARM would inspect the monitor modei enable/select bits of the DSCR. However, as the article notes, an exception handler is still helpful in order to catch disconnected debuggers. [1] https://tomverbeure.github.io/2021/12/30/Semihosting-on-RISCV.html#avoiding-hangs-when-a-debugger-is-not-connected Signed-off-by: Sean Anderson <[email protected]>
2022-04-01arm: smh: Add option to detect semihostingSean Anderson
These functions are intended to support detecting semihosting and falling back gracefully to alternative implementations. The test starts by making semihosting call. SYS_ERRNO is chosen because it should not mutate any state. If this semihosting call results in an exception (rather than being caught by the debugger), then the exception handler should call disable_semihosting() and resume execution after the call. Ideally, this would just be part of semihosting by default, and not a separate config. However, to reduce space ARM SPL doesn't include exception vectors by default. This means we can't detect if a semihosting call failed unless we enable them. To avoid forcing them to be enabled, we use a separate config option. It might also be possible to try and detect whether a debugger has enabled (by reading HDE from DSCR), but I wasn't able to figure out a way to do this from all ELs. This patch just introduces the generic code to handle detection. The next patch will implement it for arm64 (but not arm32). Signed-off-by: Sean Anderson <[email protected]>
2022-04-01ls1046ardb: Add support for JTAG bootSean Anderson
This adds support for booting entirely from JTAG while using a hard-coded RCW. With these steps, it is not necessary to program a "good" RCW using CodeWarrior. The method here can be performed with any JTAG adapter supported by OpenOCD, including the on-board CMSIS-DAP (albeit very slowly). These steps require LS1046A support in OpenOCD, which was added in [1]. [1] https://sourceforge.net/p/openocd/code/ci/5b70c1f679755677c925b4e6dd2c3d8be4715717/ Signed-off-by: Sean Anderson <[email protected]> [trini: Add reference to doc/board/nxp/ls1046ardb.rst]
2022-04-01serial: Add semihosting driverSean Anderson
This adds a serial driver which uses semihosting calls to read and write to the host's console. For convenience, if CONFIG_DM_SERIAL is enabled, we will instantiate a serial driver. This allows users to enable this driver (which has no physical device) without modifying their device trees or board files. We also implement a non-DM driver for SPL, or for much faster output in U-Boot proper. There are three ways to print to the console: Method Baud ================== ===== smh_putc in a loop 170 smh_puts 1600 smh_write with :tt 20000 ================== ===== These speeds were measured using a 175 character message with a J-Link adapter. For reference, U-Boot typically prints around 2700 characters during boot on this board. There are two major factors affecting the speed of these functions. First, each breakpoint incurs a delay. Second, each debugger memory transaction incurs a delay. smh_putc has a breakpoint and memory transaction for every character. smh_puts has one breakpoint, but still has to use a transaction for every character. This is because we don't know the length up front, so OpenOCD has to check if each character is nul. smh_write has only one breakpoint and one memory transfer. DM serial drivers can only implement a putc interface, so we are stuck with the slowest API. Non-DM drivers can implement puts, which is vastly more efficient. When the driver starts up, we try to open :tt. Since this is an extension, this may fail. If it does, we fall back to smh_puts. We don't check :semihosting-features, since there are nonconforming implementations (OpenOCD) which don't implement it (but *do* implement :tt). Some semihosting implementations (QEMU) don't handle READC properly. To work around this, we try to use open/read (much like for stdin) if possible. There is no non-blocking I/O available, so we don't implement pending. This will cause __serial_tstc to always return true. If CONFIG_SERIAL_RX_BUFFER is enabled, _serial_tstc will try and read characters forever. To avoid this, we depend on this config being disabled. Signed-off-by: Sean Anderson <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2022-04-01arm: smh: Add some functions for working with the host consoleSean Anderson
This adds three wrappers around the semihosting commands for reading and writing to the host console. We use the more standard getc/putc/puts names instead of readc/writec/write0 for familiarity. Signed-off-by: Sean Anderson <[email protected]>
2022-04-01arm: smh: Remove smhload commandSean Anderson
This command's functionality is now completely implemented by the standard fs load command. Convert the vexpress64 boot command (which is the only user) and remove the implementation. Signed-off-by: Sean Anderson <[email protected]>
2022-04-01fs: Add semihosting filesystemSean Anderson
This adds a filesystem which is backed by the host's filesystem. It is modeled off of sandboxfs, which has very similar aims. Semihosting doesn't support listing directories (except with SYS_SYSTEM), so neither do we. it's possible to optimize a bit for the common case of reading a whole file by omitting a call to smh_seek, but this is left as a future optimization. Signed-off-by: Sean Anderson <[email protected]>
2022-04-01arm: smh: Add some file manipulation commandsSean Anderson
In order to add filesystem support, we will need to be able to seek and write files. Add the appropriate helper functions. Signed-off-by: Sean Anderson <[email protected]>
2022-04-01arm: smh: Document functions in headerSean Anderson
This adds some documentation for semihosting functions in the header. Signed-off-by: Sean Anderson <[email protected]>
2022-04-01arm: smh: Use numeric modes for smh_openSean Anderson
There's no point in using string constants for smh_open if we are just going to have to parse them. Instead, use numeric modes. The user needs to be a bit careful with these, since they are much closer semantically to string modes used by fopen(3) than the numeric modes used with open(2). Signed-off-by: Sean Anderson <[email protected]>
2022-04-01arm: smh: Export semihosting functionsSean Anderson
This exports semihosting functions for use in other files. The header is in include/ and not arm/include/asm because I anticipate that RISC-V may want to add their own implementation at some point. smh_len_fd has been renamed to smh_flen to more closely match the semihosting spec. Signed-off-by: Sean Anderson <[email protected]>
2022-04-01vexpress64: Add ARMv8R-64 board variantPeter Hoyes
The ARMv8-R64 architecture introduces optional VMSA (paging based MMU) support in the EL1/0 translation regime, which makes that part mostly compatible to ARMv8-A. Add a new board variant to describe the "BASE-R64" FVP model, which inherits a lot from the existing v8-A FVP support. One major difference is that the memory map in "inverted": DRAM starts at 0x0, MMIO is at 2GB [1]. * Create new TARGET_VEXPRESS64_BASER_FVP target, sharing most of the exising configuration. * Implement inverted memory map in vexpress_aemv8.h * Create vexpress_aemv8r defconfig * Provide an MMU memory map for the BASER_FVP * Update vexpress64 documentation At the moment the boot-wrapper is the only supported secure firmware. As there is no official DT for the board yet, we rely on it being supplied by the boot-wrapper into U-Boot, so use OF_HAS_PRIOR_STAGE, and go with a dummy DT for now. [1] https://developer.arm.com/documentation/100964/1114/Base-Platform/Base---memory/BaseR-Platform-memory-map Signed-off-by: Peter Hoyes <[email protected]> [Andre: rebase and add Linux kernel header] Signed-off-by: Andre Przywara <[email protected]> [trini: Add MAINTAINERS entry for Peter]
2022-04-01vexpress64: generalise page table generationAndre Przywara
In preparation for the ARMv8-R64 FVP support, which has DRAM mapped at 0x0, generalise the page table generation, by using symbolic names for the address ranges instead of fixed numbers. We already define the base of the DRAM and MMIO regions, so just use those symbols in the page table description. Rename V2M_BASE to the more speaking V2M_DRAM_BASE on the way. On the VExpress memory map, the address space right after 4GB is of no particular interest to software, as the whole of DRAM is mapped at 32GB instead. The first 2 GB alias to the lower 2GB of DRAM mapped below 4GB, so we skip this part and map some more of the high DRAM, should anyone need it. Signed-off-by: Andre Przywara <[email protected]>
2022-04-01vexpress64: fvp: add distro_boot supportAndre Przywara
So far the FVP model just supports booting through semihosting, so by loading files from the host the model is running on. This allows for quick booting of new kernels (or replacing DTBs), but prevents more featureful boots like using UEFI. Enable the distro_boot feature, and provide a list of possible boot sources that U-Boot should check: - For backwards compatibility we start with semihosting, which gets its commands migrated from CONFIG_BOOTCOMMAND into the distro_boot infrastructure. This is also slightly tweaked to fail graceful in case the required files could not be found. - Next we try to use a user provided script, that could be easily placed into memory using the model command line. - Since we gained virtio support with the enablement of OF_CONTROL, let's check virtio block devices next. This is where UEFI boot can be easily used, for instance by providing a distro installer .iso file through virtio-blk. - Networking is now provided by virtio as well, so enable the default PXE and DHCP boot flows, mostly because we can. Signed-off-by: Andre Przywara <[email protected]>
2022-04-01vexpress64: config header: unify environment definitionAndre Przywara
The definition of the standard environment variables (kernel_addr_r and friends) has been improved lately for the FVP model, but the Juno board is still using some custom scheme. Since we need to extend this to a third board soon, let's unify the definition: - Define the Juno addresses in the same generic way we do for the FVP model, and move the actual variable setting out of the board #ifdef's. - Add the missing addresses for a PXE file and a boot script. - Cleanup some stale comments on the way. As the FVP model doesn't have support for distro_boot quite yet, add a dummy definition for now, to be replaced with the real thing later. Signed-off-by: Andre Przywara <[email protected]>
2022-04-01Convert CONFIG_SYS_MONITOR_BASE to KconfigTom Rini
This converts the following to Kconfig: CONFIG_SYS_MONITOR_BASE Note that for how this is re-used on some PowePC platforms, we introduce CONFIG_SPL_SYS_MONITOR_BASE and CONFIG_TPL_SYS_MONITOR_BASE and use the CONFIG_VAL macro to get the correct value at build time, in the code. Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_NORFLASH_PS32BIT to KconfigTom Rini
This converts the following to Kconfig: CONFIG_NORFLASH_PS32BIT Note that we also attempt to correct the behavior of the code here, which had been testing for "NORFLASH_PS32BIT" which would never be set, instead check for the now set "CONFIG_NORFLASH_PS32BIT", which results in some behavior change. Cc: TsiChung Liew <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2022-04-01at91: Switch to SD_BOOT / CONFIG_NAND_BOOTTom Rini
The values CONFIG_SYS_USE_NANDFLASH and CONFIG_SYS_USE_MMC serve the same purpose as CONFIG_SD_BOOT / CONFIG_NAND_BOOT so migrate to using these switches instead as they're already in Kconfig. Cc: Stelian Pop <[email protected]> Cc: Heiko Schocher <[email protected]> Cc: Daniel Gorsulowski <[email protected]> Cc: Eugen Hristev <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_E300 et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_E300 CONFIG_E5500 Signed-off-by: Tom Rini <[email protected]>
2022-04-01mx53loco: Convert CONFIG_DIALOG_POWER to KconfigTom Rini
Signed-off-by: Tom Rini <[email protected]>
2022-04-01exynos: Drop CONFIG_DEVICE_TREE_LISTTom Rini
This value isn't used anywhere, drop it. Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_DEEP_SLEEP to KconfigTom Rini
This converts the following to Kconfig: CONFIG_DEEP_SLEEP Signed-off-by: Tom Rini <[email protected]>
2022-04-01M5329EVB, M5373EVB: Remove CONFIG_NANDFLASH_SIZETom Rini
In the case of M5373EVB we always had NANDFLASH_SIZE=16, so just use it directly. In the case of M5329EVB we had not removed the rest of NAND support when saying we didn't have NAND, so instead use that to key off of rather than NANDFLASH_SIZE. Cc: TsiChung Liew <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2022-04-01db-mv784mp-gp: Rename CONFIG_DB_784MP_GP to CONFIG_TARGET_DB_MV784MP_GPTom Rini
The value CONFIG_DB_784MP_GP is only used in the DDR code to refer to CONFIG_TARGET_DB_MV784MP_GP so just use that second value directly. Cc: Stefan Roese <[email protected]> Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Stefan Roese <[email protected]>
2022-04-01p1_p2_rdb: Remove CONFIG_CPLD_[BO]R_PRELIMTom Rini
These are not referenced in code, drop. Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_CLOCKS to KconfigTom Rini
This converts the following to Kconfig: CONFIG_CLOCKS Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_CLOCK_SYNTHESIZER to KconfigTom Rini
This converts the following to Kconfig: CONFIG_CLOCK_SYNTHESIZER Signed-off-by: Tom Rini <[email protected]>
2022-04-01exynos: Drop CONFIG_CLK_*Tom Rini
We only set one of these values ever at this point, so remove dead code. Cc: Minkyu Kang <[email protected]> Cc: Jaehoon Chung <[email protected]> Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Minkyu Kang <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2022-04-01Convert CONFIG_SYS_USE_NORFLASH et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_SYS_USE_NORFLASH CONFIG_SYS_USE_BOOT_NORFLASH Signed-off-by: Tom Rini <[email protected]>
2022-04-01global: Remove CONFIG_SYS_USE_DATAFLASH*Tom Rini
There are a handful of variants around CONFIG_SYS_USE_DATAFLASH and none of them now control anything further within their board config.h files, so remove these from CONFIG_SYS_EXTRA_OPTIONS and then remove the empty blocks in the board config.h files. In a few places further clean up related logic. Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_LPUART et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_LPUART CONFIG_LPUART_32B_REG And note that CONFIG_LPUART_32B_REG is unused in code. Signed-off-by: Tom Rini <[email protected]>
2022-04-01mpc8548cds: Rework CONFIG_LEGACY usageTom Rini
This CONFIG option is used in one place, so pick a more direct name and migrate to Kconfig. Rework the code slightly. Cc: Priyanka Jain <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_MCFRTC et al to KconfigTom Rini
This converts the following to Kconfig: CONFIG_MCFRTC CONFIG_SYS_MCFRTC_BASE While at it, remove '#undef RTC_DEBUG' from these config files. Signed-off-by: Tom Rini <[email protected]>
2022-04-01stmark2: Remove CONFIG_SERIAL_FLASHTom Rini
This is not referenced anywhere, remove it. Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_MCFTMR to KconfigTom Rini
This converts the following to Kconfig: CONFIG_MCFTMR Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_CF_DSPI to KconfigTom Rini
This converts the following to Kconfig: CONFIG_CF_DSPI Signed-off-by: Tom Rini <[email protected]>
2022-04-01atmel: Remove CONFIG_SPL_ATMEL_SIZETom Rini
This seems to be unused in the code, remove it. Cc: Eugen Hristev <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2022-04-01Remove CONFIG_BOARDNAME and CONFIG_BOARD_NAMETom Rini
Both of these variables are used in a few hard-coded ways to set some string values or print something to the user. In almost all cases, it's just as useful to hard-code the value used. The exception here is printing something closer to correct board name for p1_p2_rdb machines. This can be done using something from the device tree, but for now hard-code a non-CONFIG based value instead. Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_BITBANGMII_MULTI to KconfigTom Rini
This converts the following to Kconfig: CONFIG_BITBANGMII_MULTI Signed-off-by: Tom Rini <[email protected]>
2022-04-01Convert CONFIG_BCM2835_GPIO to KconfigTom Rini
This converts the following to Kconfig: CONFIG_BCM2835_GPIO Signed-off-by: Tom Rini <[email protected]>