summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-11-28command: Use a constant pointer for the helpSimon Glass
This text should never change during execution, so it makes sense to use a const char * so that it can be declared as const in the code. Update struct cmd_tbl with a const char * pointer for 'help'. We cannot make usage const because of the bmode command, used on mx53ppd for example. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Jagan Teki <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]>
2021-11-28env: Avoid using GNU features in awkSimon Glass
GNU has a very useful third argument to match() but this is not supported in the POSIX awk. Update the code to cope, so that the script is POSIX-compliant. Signed-off-by: Simon Glass <[email protected]> Tested-by: Mark Kettenis <[email protected]>
2021-11-26Merge tag 'efi-2022-01-rc3-2' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-efi Pull request for efi-2022-01-rc3-2 Test: * fix pylint warnings UEFI: * disable interrupts before removing devices in ExitBootServices() * implement poweroff in efi_system_reset() on sandbox * allow booting via EFI even if some block device fails
2021-11-26test: fix pylint error in u_boot_console_exec_attach.pyHeinrich Schuchardt
* provide module docstring Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-26test: fix pylint error in u_boot_console_sandbox.pyHeinrich Schuchardt
* provide module docstring Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-26test: fix pylint errors in u_boot_utils.pyHeinrich Schuchardt
* there is no os.path.unlink() method * don't inherit from object * add module docstring * move imports to the top * avoid unused variable Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-26test: fix pylint errors in u_boot_spawn.pyHeinrich Schuchardt
* don't inherit from object * imports should be on the top level * avoid unused variable names * avoid unnecessary else after raise Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-26test: fix pylint errors in multiplexed_log.pyHeinrich Schuchardt
* don't inherit from object * remove superfluous comprehension * add module docstring Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-26efi_selftest: simplify endian conversion for FDT testHeinrich Schuchardt
UEFI code is always little-endian. Remove a superfluous test. Remove a superfluous type conversion. Signed-off-by: Heinrich Schuchardt <[email protected]>
2021-11-26efi_loader: segfault in efi_clear_os_indications()Heinrich Schuchardt
If we call efi_clear_os_indications() before initializing the memory store for UEFI variables a NULL pointer dereference occurs. The error was observed on the sandbox with: usb start host bind 0 sandbox.img load host 0:1 $kernel_addr_r helloworld.efi bootefi $kernel_addr_r Here efi_resister_disk() failed due to an error in the BTRFS implementation. Move the logic to clear EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED to the rest of the capsule code. If CONFIG_EFI_IGNORE_OSINDICATIONS=y, we should still clear the flag. If OsIndications does not exist, we should not create it as it is owned by the operating system. Fixes: 149108a3eb59 ("efi_loader: clear OsIndications") Signed-off-by: Heinrich Schuchardt <[email protected]> Acked-by: Ilias Apalodimas <[email protected]>
2021-11-26test: address some pylint warningsHeinrich Schuchardt
* remove unused variables * module description must precede import statements * fix inconsistent return values Signed-off-by: Heinrich Schuchardt <[email protected]>
2021-11-26sandbox: poweroff in efi_system_reset()Heinrich Schuchardt
efi_system_reset() should exit if called with EFI_RESET_SHUTDOWN. Signed-off-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-26efi_loader: efi_disk_register() should not failHeinrich Schuchardt
Our algorithm for creating USB device paths may lead to duplicate device paths which result in efi_disk_register() failing. Instead we should just skip devices that cannot be registered as EFI block devices. Fix a memory leak in efi_disk_add_dev() caused by the duplicate device path. Signed-off-by: Heinrich Schuchardt <[email protected]>
2021-11-26efi: Call bootm_disable_interrupts earlier in efi_exit_boot_servicesTom Rini
If we look at the path that bootm/booti take when preparing to boot the OS, we see that as part of (or prior to calling do_bootm_states, explicitly) the process, bootm_disable_interrupts() is called prior to announce_and_cleanup() which is where udc_disconnect() / board_quiesce_devices() / dm_remove_devices_flags() are called from. In the EFI path, these are called afterwards. In efi_exit_boot_services() however we have been calling bootm_disable_interrupts() after the above functions, as part of ensuring that we disable interrupts as required by the spec. However, bootm_disable_interrupts() is also where we go and call usb_stop(). While this has been fine before, on the TI J721E platform this leads us to an exception. This exception seems likely to be the case that we're trying to stop devices that we have already disabled clocks for. The most direct way to handle this particular problem is to make EFI behave like the do_bootm_states() process and ensure we call bootm_disable_interrupts() prior to ending up in usb_stop(). Cc: Ilias Apalodimas <[email protected]> Cc: Heinrich Schuchardt <[email protected]> Cc: Simon Glass <[email protected]> Suggested-by: Ilias Apalodimas <[email protected]> Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Ilias Apalodimas <[email protected]>
2021-11-23Merge branch '2021-11-23-scmi-and-tee-updates' into nextTom Rini
- A set of SCMI and TEE related updates
2021-11-23firmware: scmi: Add OP-TEE transportEtienne Carriere
This change implements an SCMI transport for agent interfacing the OP-TEE SCMI service. OP-TEE provides an SCMI PTA (Pseudo-TA) for non-secure world to send SCMI messages over an identified channel. The driver implemented here uses a SMT shared memory for passing messages between client and server. The implementation opens and releases channel resources for each passed SCMI message so that resources allocated (sessions) or registered (shared memory areas) in OP-TEE firmware are released for example before relocation as the driver will likely allocate/register them back when probed after relocation. The integration of the driver using dedicated config switch CONFIG_SCMI_AGENT_OPTEE is designed on the model posted to the U-Boot ML by Patrick Delaunay [1]. Link: [1] https://lore.kernel.org/all/20211028191222.v3.4.Ib2e58ee67f4d023823d8b5404332dc4d7e847277@changeid/ Cc: Patrick Delaunay <[email protected]> Cc: Wolfgang Denk <[email protected]> Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2021-11-23dt-bindings: arm: scmi: OP-TEE as transport channel for SCMI messagesEtienne Carriere
Introduce compatible "linaro,scmi-optee" for SCMI transport channel based on an OP-TEE service invocation. Define "linaro,optee-channel-id" property to identify the OP-TEE SCMI channel used by the protocol(s). OP-TEE SCMI transport can either use shared memory or a static shared memory buffer identified by the DT. These bindings were posted to the Linux kernel DT bindings mailing list and acked by maintainer [1]. Link: [1] https://lore.kernel.org/linux-arm-kernel/20211029102118.GG6526@e120937-lin/T/ Cc: Jaehoon Chung <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2021-11-23tee: optee: define TEE error code TEE_ERROR_SHORT_BUFFEREtienne Carriere
Adds TEE_ERROR_SHORT_BUFFER as TEE error code. This error code is commonly used by TEEs to inform caller that the buffer(s) it provided is too small for the desired operation. Cc: Jens Wiklander <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Reviewed-by: Jens Wiklander <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2021-11-23tee: optee: remove unused duplicated login Id macrosEtienne Carriere
Remove unused OPTEE_MSG_LOGIN_* ID macros as suitable TEE_LOGIN_* ID macros are already defined tee.h. Cc: Jens Wiklander <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Reviewed-by: Jens Wiklander <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2021-11-23tee: define session login identifiersEtienne Carriere
Define identifiers for clnt_login field in struct tee_open_session_arg based in GlobalPlatform Device TEE IDs and on the REE_KERNEL identifier extension from OP-TEE OS. Cc: Jens Wiklander <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]> Reviewed-by: Jens Wiklander <[email protected]> Signed-off-by: Etienne Carriere <[email protected]>
2021-11-23firmware: scmi: smccc transport: simplify probe sequenceEtienne Carriere
Minor simplification in scmi_smccc_probe() exit sequence. Cc: Simon Glass <[email protected]> Cc: Patrice Chotard <[email protected]> Cc: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2021-11-23firmware: scmi: smccc transport: use plat data, not priv dataEtienne Carriere
Change SCMI smccc transport drivers to use platform data rather than private data for channel reference since it only stores platform data retrieved from the DT. Consequently the probe handler is replaced with a of_to_plat handler. Cc: Simon Glass <[email protected]> Cc: Patrice Chotard <[email protected]> Cc: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2021-11-23firmware: scmi: mailbox transport: use plat data, not priv dataEtienne Carriere
Change SCMI mailbox transport drivers to use platform data rather than private data for channel reference since it only stores platform data retrieved from the DT. Consequently the probe handler is replaced with a of_to_plat handler. Cc: Simon Glass <[email protected]> Cc: Patrice Chotard <[email protected]> Cc: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2021-11-23firmware: scmi: mailbox transport: fix probe failure implementationEtienne Carriere
Correct scmi mailbox probe function that can't free the scmi channel instance since its auto-allocated by the device model framework. Cc: Simon Glass <[email protected]> Cc: Patrice Chotard <[email protected]> Cc: Patrick Delaunay <[email protected]> Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2021-11-23firmware: scmi: fix description of an API functionEtienne Carriere
Correct inline comment describing API function devm_scmi_process_msg(). Signed-off-by: Etienne Carriere <[email protected]> Reviewed-by: Patrick Delaunay <[email protected]>
2021-11-23stm32mp15: deactivate CONFIG_SCMI_AGENT_MAILBOXPatrick Delaunay
Deactivate the SCMI agent mailbox which is not used on STM32MP15 platforms. Signed-off-by: Patrick Delaunay <[email protected]> Acked-by: Etienne Carriere <[email protected]>
2021-11-23firmware: scmi: add configs to select the supported agentsPatrick Delaunay
Add two configs CONFIG_SCMI_AGENT_MAILBOX and CONFIG_SCMI_AGENT_SMCCC to select the supported agents as all the agents are not supported. Signed-off-by: Patrick Delaunay <[email protected]> Acked-by: Etienne Carriere <[email protected]>
2021-11-23power: regulator: scmi: define LOG_CATEGORYPatrick Delaunay
Define LOG_CATEGORY to allow filtering with log command. Signed-off-by: Patrick Delaunay <[email protected]> Acked-by: Etienne Carriere <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]>
2021-11-23clk: scmi: define LOG_CATEGORYPatrick Delaunay
Define LOG_CATEGORY to allow filtering with log command. Signed-off-by: Patrick Delaunay <[email protected]> Acked-by: Etienne Carriere <[email protected]>
2021-11-23reset: scmi: define LOG_CATEGORYPatrick Delaunay
Define LOG_CATEGORY to allow filtering with log command. Signed-off-by: Patrick Delaunay <[email protected]> Acked-by: Etienne Carriere <[email protected]>
2021-11-23Merge branch 'next' of https://source.denx.de/u-boot/custodians/u-boot-net ↵Tom Rini
into next - Various DSA additions - bootp: fix for VCI string - tsec: support for promiscuous mode - add Aspeed MDIO driver
2021-11-23net: phy: realtek: Add tx/rx delay config for 8211eSamuel Holland
Some boards need to change the tx/rx delay config in order for gigabit Ethernet to work. In Linux commit bbc4d71d6354 ("net: phy: realtek: fix rtl8211e rx/tx delay config"), Realtek documented the bits for overriding the delays from the hardware straps. Copy the logic from linux, so the delay config is set from the PHY's interface type (the phy-mode property in the device tree). This removes the need for a one-off workaround for the Pine A64+ board. Signed-off-by: Samuel Holland <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23drivers: net: add Aspeed MDIO driverDylan Hung
Add a driver for the MDIO interface for Aspeed AST2600 SOC. The driver only supports clause 22 for now. Signed-off-by: Dylan Hung <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Ryan Chen <[email protected]>
2021-11-23net: tsec: Make redundant_init() staticBin Meng
redundant_init() is only called in the tsec driver. Make it static. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: fec_mxc: Declare 'promisc' as boolBin Meng
priv->promisc is used as the parameter of the set_promisc() call which accepts a bool type instead of char. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: dsa: Use true instead of 1 in the set_promisc() callBin Meng
set_promisc() call accepts the parameter of a bool type. Make it clear by using true instead of 1. Signed-off-by: Bin Meng <[email protected]> Reviewed-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23cmd: pxe_utils: Check fdtcontroladdr in label_bootPeter Hoyes
If using OF_CONTROL, fdtcontroladdr is set to the fdt used to configure U-Boot. When using PXE, if no fdt is defined in the menu file, and there is no fdt at fdt_addr, add fall back on fdtcontroladdr too. We are developing board support for the Armv8r64 FVP using config_distro_bootcmd. We are also using OF_BOARD and would like the PXE boot option to default to the fdt provided by board_fdt_blob_setup. Signed-off-by: Peter Hoyes <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Ramon Fried <[email protected]>
2021-11-23net: bootp: Correct VCI string transmissionWalter Stoll
The VCI string sent during bootp of U-Boot-SPL is corrupt. This is because the byte counter is not adjusted within the bootp_extended() function when the VCI string is added. We fix this. Signed-off-by: Walter Stoll <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-11-23configs: ls1021a-tsn: enable the generation of random Ethernet MAC addressesVladimir Oltean
Don't fail when booting a board with an empty EEPROM for MAC addresses. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2021-11-23configs: ls1021a-tsn: enable sja1105 switch driverVladimir Oltean
The sja1105 is a 5-port switch that uses a DM_DSA driver. Its 5th (CPU) port is connected internally to the eth2 port of the LS1021A SoC. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2021-11-23arm: dts: ls1021a-tsn: add sja1105 and eth2 bindingsVladimir Oltean
The eth aliases are for correct probing order, so that each Ethernet port will get a predictable MAC address from the environment. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: dsa: sja1105: add support for SGMIIVladimir Oltean
The list of ports which support SGMII depending on switch generation is available here: https://www.kernel.org/doc/html/latest/networking/dsa/sja1105.html#port-compatibility-matrix SGMII can either be used to connect to an external PHY or to the host port. In the first case, the use of in-band autoneg is expected, in the last, in-band autoneg is expected to be turned off (fixed-link). So the driver supports both cases. SGMII support means configuring the PCS and PMA. The PCS is a Synopsys Designware XPCS, in Linux this has a separate driver but here it is embedded within the sja1105 driver. If needed it can be taken out later, although we would need a UCLASS_PCS for it, which we don't have atm. Nonetheless, I did go all the way to export an internal MDIO bus for PCS access, because it is nice to be able to debug the PCS through commands such as: => mdio read ethernet-switch@1-pcs 4 1f.0 Reading from bus ethernet-switch@1-pcs PHY at address 4: 31.0 - 0x1140 The internal MDIO bus is not registered with DM because there is no udevice on it, as mentioned. But the XPCS code can still be ripped out, as needed. I did not add support for 2500base-x because I do not expect this interface type to be used as a boot source for anybody, it would just add unnecessary bloat. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: dsa: add driver for NXP SJA1105 L2 switchVladimir Oltean
The SJA1105 driver is largely reused from Linux. Its programming model is that it is blank out of reset, and it waits for a static configuration stream over SPI, which contains all runtime parameters (it has no notion of "default values"). Keeping a binary array for the configuration stream would have meant that aspects such as the CPU port and the MAC speeds could have not been configured easily, and would have been static and board-dependent. Live-patching the binary array means recalculating the static config table CRCs, which is not a fun process. So we create an abstraction over the static config tables, using the packing API, same as in Linux. The tables are kept as C structures, and the binary configuration stream is constructed on-the-go, with CRC and all. All static config tables instantiated in this driver are mandatory. The hardware reference manual can be found at: https://www.nxp.com/docs/en/user-guide/UM10944.pdf For tagging, a simplified version of tag_8021q from Linux is used. The VLAN EtherType is the same (0xdadb) but since we don't want switching in U-Boot, there is no reason to have a TX VLAN and an RX VLAN for each port. We just need the RX VLANs to act as the unique pvid of each front-panel port, to decode the switch port number. The RX VLAN is used for both RX and TX. The device tree bindings are the same as in Linux. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: dsa: felix: configure the in-band autoneg property based on OF node infoVladimir Oltean
Instead of trying to guess which operating modes need in-band negotiation to be active and which ones don't, parse the available information from the device tree. That will be correct in the cases we can already guess, and more. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: introduce a helper to determine whether to use in-band autonegVladimir Oltean
Certain serial SERDES protocols like 1000base-x, 2500base-x, SGMII, USXGMII can operate either in a mode where the PHY (be it on-board or inside an SFP module) passes the link parameters (speed, duplex, pause) to the MAC through in-band through control words standardized by IEEE 802.3 clause 37, or in a mode where the MAC must configure (force) its link parameters based on information obtained out-of-band (MDIO reads, guesswork etc). In Linux, the OF node property named "managed" is parsed by the phylink framework, and the convention is that if a driver uses phylink, then the presence of this property means that in-band autoneg should be enabled, otherwise it shouldn't. To be compatible with the OF node bindings of drivers that use phylink in Linux, introduce parsing support for this property in U-Boot too. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Bin Meng <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: dsa: allow drivers to get the port OF nodeVladimir Oltean
In the current DSA switch driver API, only the udevice of the switch (belonging to UCLASS_DSA) is exposed, as well as an "int port" argument. So drivers do not have access to the udevice of individual ports (belonging to UCLASS_ETH), one of the reasons being that not all ports have an associated UCLASS_ETH udevice. However, all DSA ports have an OF node, and in some cases the driver needs a handle to it, for all ports including the CPU port. Example: the following Linux per-port device tree property: managed = "in-band-status"; states whether a port should operate with clause 37 in-band autoneg enabled or not. This patch exposes a function which can be called by individual drivers as needed. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23include: import if_vlan.h from LinuxVladimir Oltean
This is needed for the VLAN header structure. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Bin Meng <[email protected]>
2021-11-23net: tsec: add support for promiscuous modeVladimir Oltean
The Freescale TSEC can be a DSA master, and the ports of the attached DSA switch can have different MAC addresses compared to the TSEC. Nonetheless, the TSEC must receive the packets on behalf of those switch ports. Therefore, implement the promiscuous mode method to allow DSA to set this. Note that the init_registers() function called from eth_ops :: start overwrites this setting. There is no reason why the RCTRL register should be zero-initialized, so just stop clearing it so that the setting we applied in eth_ops :: set_promisc sticks. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]> Reviewed-by: Bin Meng <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23net: phy: mscc: add support for VSC8502 in dual RGMII modeVladimir Oltean
The VSC8502 is a Microchip (formerly Microsemi, formerly Vitesse) dual port, gigabit Ethernet copper PHY which supports the MII, GMII and RGMII MAC-side interfaces. Of these, I could only test RGMII, and my board needed RGMII delays to be applied by software, so I am able to confirm that this patch handles that properly. Signed-off-by: Vladimir Oltean <[email protected]> Reviewed-by: Ramon Fried <[email protected]>
2021-11-23spi: atmel-quadspi: Fix QSPI_RD reg name on verbose debugTudor Ambarus
It was wrongly set to "MR", fix it. Fixes: 52e2565bfb ("spi: atmel-quadspi: Add verbose debug facilities to monitor register accesses") Signed-off-by: Tudor Ambarus <[email protected]>