pandora-u-boot.git
6 months agolib: hashtable: Prevent recursive calling of callback functions
Christoph Niedermaier [Fri, 6 Dec 2024 23:04:19 +0000 (00:04 +0100)]
lib: hashtable: Prevent recursive calling of callback functions

In case there are two variables which each implement env callback
that performs env_set() on the other variable, the callbacks will
call each other recursively until the stack runs out. Prevent such
a recursion from happening.

Example which triggers this behavior:
static int on_foo(...) { env_set("bar", 0); ... }
static int on_bar(...) { env_set("foo", 0); ... }
U_BOOT_ENV_CALLBACK(foo, on_foo);
U_BOOT_ENV_CALLBACK(bar, on_bar);

Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Suggested-by: Marek Vasut <marex@denx.de>
6 months agoarm64: imx8mp: Read values from M24C32-D write-lockable page on DHCOM i.MX8MP
Christoph Niedermaier [Fri, 6 Dec 2024 23:04:18 +0000 (00:04 +0100)]
arm64: imx8mp: Read values from M24C32-D write-lockable page on DHCOM i.MX8MP

The new i.MX8M Plus DHCOM rev.200 is populated with M24C32-D EEPROM
that contains an additional write-lockable page called ID page, which
is populated with a structure containing ethernet MAC addresses, DH
item number and DH serial number.

Because the write-lockable page is not present on rev.100 i.MX8MP DHCOM
SoM, test whether EEPROM ID page exists by setting up the i2c driver.

There may be multiple EEPROMs with an ID page on this platform, always
use the first one. The evaluation of the EEPROM ID page is done in two
steps. First, the content is read and checked. This is done to cache
the content of the EEPROM ID page. Second, the content is extracted
from the EEPROM buffer by requesting it.

For the ethernet MAC address the i.MX8M Plus DHCOM currently supports
parsing address from multiple sources in the following priority order:

1) U-Boot environment 'ethaddr'/'eth1addr' environment variable
2) SoC OTP fuses
3) On-SoM EEPROM

Add support for parsing the content of this new EEPROM ID page and place
it between 2) and 3) on the priority list. The new entry is 2.5) On-SoM
EEPROM write-lockable page.

Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Reviewed-by: Marek Vasut <marex@denx.de>
6 months agoarm64: dts: imx8mp: Add aliases for the access to the EEPROM ID page node
Christoph Niedermaier [Fri, 6 Dec 2024 23:04:17 +0000 (00:04 +0100)]
arm64: dts: imx8mp: Add aliases for the access to the EEPROM ID page node

The new i.MX8M Plus DHCOM rev.200 is populated with M24C32-D EEPROM
that contains an additional write-lockable page called ID page. Add
aliases eeprom0wl and eeprom1wl for the access to the EEPROM ID
page node.

Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Reviewed-by: Marek Vasut <marex@denx.de>
6 months agoimx: Support i.MX91 11x11 EVK board
Peng Fan [Tue, 3 Dec 2024 15:42:54 +0000 (23:42 +0800)]
imx: Support i.MX91 11x11 EVK board

Add i.MX91 11x11 EVK Board support.
 - Four ddr scripts included w/o inline ecc feature.
 - SDHC/NETWORK/I2C/UART supported
 - PCA9451 supported, default nominal drive mode
 - Documentation added.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoarm64: dts: add NXP i.MX91 device tree
Peng Fan [Tue, 3 Dec 2024 15:42:53 +0000 (23:42 +0800)]
arm64: dts: add NXP i.MX91 device tree

Add the i.MX91 device tree from [1]. These files could be synced
to linux upstream after [1] merged to linux source tree.

[1]
https://lore.kernel.org/all/20241120094945.3032663-1-pengfei.li_1@nxp.com/

Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agopinctrl: imx93: support i.MX91
Peng Fan [Tue, 3 Dec 2024 15:42:52 +0000 (23:42 +0800)]
pinctrl: imx93: support i.MX91

Reuse i.MX93 pinctrl driver for i.MX91, because i.MX91 follows same
design as i.MX93 in IOMUXC controller.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoddr: imx: Add new rates for i.MX91
Ye Li [Tue, 3 Dec 2024 15:42:51 +0000 (23:42 +0800)]
ddr: imx: Add new rates for i.MX91

iMX91 reuses iMX93 controller and PHY, but with lower speed,
so add new DDR rates for i.MX91.

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoclk: imx: clk-fracn-gppll: Add new PLL rate
Ye Li [Tue, 3 Dec 2024 15:42:50 +0000 (23:42 +0800)]
clk: imx: clk-fracn-gppll: Add new PLL rate

Add new rates to integer and frac PLL to support iMX91

Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoclk: imx93: support i.MX91
Peng Fan [Tue, 3 Dec 2024 15:42:49 +0000 (23:42 +0800)]
clk: imx93: support i.MX91

i.MX91 is a derived from i.MX93, and most clocks could be reused from
i.MX93. Also Update imx93-clock.h to sync with linux next.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoimx: Add iMX91 support
Peng Fan [Tue, 3 Dec 2024 15:42:48 +0000 (23:42 +0800)]
imx: Add iMX91 support

iMX91 is reduced part from iMX93 with part number: i.MX9131/11/01
It removed A55_1, M33, MIPI DSI, LVDS, etc.

i.MX9131:
  - Support 2.4GT/s DDR and HWFFC at 1.2GT/s
i.MX9121:
  - A55 at 800Mhz and DDR at 1600MTS, with low drive mode.
i.MX9111:
  - Support 1.6GT/s DDR and HWFFC at 800MT/s
i.MX9101:
  - Support 800Mhz ARM clock
  - Support 1.6GT/s DDR and HWFFC at 800MT/s
  - No parallel display, eQOS, flexcan

Updated Clock/Container/CPU and etc for i.MX91

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoimx93: Update 9x9 part fuses checking
Ye Li [Tue, 3 Dec 2024 15:42:47 +0000 (23:42 +0800)]
imx93: Update 9x9 part fuses checking

According to iMX93 fuse burn plan, all 9x9 parts will have USB2,
ENET1 (FEC), LVDS1, CSI1 and DSI1 disabled. The codes missed ENET1
fuse when detecting 9x9. Although it still can detect 9x9 correctly,
we add the ENET1 fuse to the check to be more accurate.

Fixes: 58da865e27f ("imx9: add i.MX93 variants support")
Signed-off-by: Ye Li <ye.li@nxp.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoimx9: gpio: include types.h header
Peng Fan [Tue, 3 Dec 2024 15:42:46 +0000 (23:42 +0800)]
imx9: gpio: include types.h header

Include types.h header for u32, following Linux Coding Style to include
necessary headers.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoimx9: trdc: correct DEBUG usage
Peng Fan [Tue, 3 Dec 2024 15:42:45 +0000 (23:42 +0800)]
imx9: trdc: correct DEBUG usage

Replace '#if DEBUG' with '#ifdef DEBUG', otherwise '#define DEBUG 1'
should be used and conflict with '#define DEBUG' in include/log.h

Fixes: 5fda95fb944 ("imx: imx9: Add TRDC driver for TRDC init")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agogpio: imx_rgpio2p: Move 8ulp_data to data section
Peng Fan [Tue, 3 Dec 2024 15:42:44 +0000 (23:42 +0800)]
gpio: imx_rgpio2p: Move 8ulp_data to data section

have_dual_base is set to false, so the 8ulp_data will be put in BSS
section which conflicts with the area of u-boot.dtb which padded just
after u-boot-nodtb.bin. So move 8ulp_data to data section to avoid
its content being corrupted by dtb.

Fixes: 51cfa66f2c4 ("gpio: imx_rgpio2p: support one address")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
6 months agoboard: phytec: phycore_imx8mm: Add RAUC boot logic to environment
Yunus Bas [Tue, 3 Dec 2024 09:42:35 +0000 (10:42 +0100)]
board: phytec: phycore_imx8mm: Add RAUC boot logic to environment

Add RAUC boot logic to the environment.

Signed-off-by: Yunus Bas <y.bas@phytec.de>
6 months agophycore_imx8mm: Move default bootcmd to board env
Yunus Bas [Tue, 3 Dec 2024 09:42:34 +0000 (10:42 +0100)]
phycore_imx8mm: Move default bootcmd to board env

Move the default bootcmd from the defconfig to the board environment.

Signed-off-by: Yunus Bas <y.bas@phytec.de>
6 months agophycore_imx8mm: Switch to using env text files
Yunus Bas [Tue, 3 Dec 2024 09:42:33 +0000 (10:42 +0100)]
phycore_imx8mm: Switch to using env text files

Move the environment into the board directory and convert header to a
txt file. In addition, this patch also applies following changes:

- Change default nfsroot path to /srv/nfs due to compliance with Linux
FHS 3.0.

- Rename specific variables as stated in the bootstd documentation.
Renamed variables:
fdt_addr => fdt_addr_r
fdt_file => fdtfile

Signed-off-by: Yunus Bas <y.bas@phytec.de>
6 months agoMerge patch series "board: ti: k3-am65: covert last board to OF_UPSTREAM"
Tom Rini [Fri, 6 Dec 2024 22:39:26 +0000 (16:39 -0600)]
Merge patch series "board: ti: k3-am65: covert last board to OF_UPSTREAM"

Bryan Brattlof <bb@ti.com> says:

Hello Everyone!

This small series converts TI's AM65x reference board to use
CONFIG_OF_UPSTREAM and removes the unused device tree files from
arch/arm/dts.

Because it's the last board using a AM65x without enabling OF_UPSTREAM
it allows us to also remove all the SoC FDT files as well and keep a
single version of the SoC's DT files in the dts/upstream directory going
forward.

Link: https://lore.kernel.org/r/20241121-am65x-v1-0-fe87aff1b5fc@ti.com
6 months agoarm: dts: k3-am65: remove unsused am65x SoC fdt files
Bryan Brattlof [Thu, 21 Nov 2024 21:17:51 +0000 (15:17 -0600)]
arm: dts: k3-am65: remove unsused am65x SoC fdt files

With all boards using TI's AM65x having enabled CONFIG_OF_UPSTREAM
cleanup the unused SoC fdt files.

Signed-off-by: Bryan Brattlof <bb@ti.com>
6 months agoarm: dts: k3-am654: cleanup unused board files
Bryan Brattlof [Thu, 21 Nov 2024 21:17:50 +0000 (15:17 -0600)]
arm: dts: k3-am654: cleanup unused board files

With the reference board now using CONFIG_OF_UPSTREAM these board files
are unused. Remove them

Signed-off-by: Bryan Brattlof <bb@ti.com>
6 months agoboard: ti: am65x: migrate to OF_UPSTREAM
Bryan Brattlof [Thu, 21 Nov 2024 21:17:49 +0000 (15:17 -0600)]
board: ti: am65x: migrate to OF_UPSTREAM

Rather than rely on manual updates from the arch/arm/dts directory,
enable CONFIG_OF_UPSTREAM to receive automatic device tree updates for
the am65x reference board.

Signed-off-by: Bryan Brattlof <bb@ti.com>
6 months agoMerge patch series "PLL Sequencing update"
Tom Rini [Fri, 6 Dec 2024 22:38:50 +0000 (16:38 -0600)]
Merge patch series "PLL Sequencing update"

Manorit Chawdhry <m-chawdhry@ti.com> says:

It has done a re-write of the full driver and the commits aren't split
to keep the bisectability intact.

Boot Logs: https://gist.github.com/manorit2001/1eaba109d722715a233244da693133d3

Link: https://lore.kernel.org/r/20241121-b4-upstream-pll-fix-v1-0-904f618897a7@ti.com
6 months agoclk: ti: clk-k3-pll: Add additional robustness steps to the PLL sequence
Manorit Chawdhry [Thu, 21 Nov 2024 12:02:53 +0000 (17:32 +0530)]
clk: ti: clk-k3-pll: Add additional robustness steps to the PLL sequence

Based on the recommendation from HW team make modifications to
the sequence for more robustness.

- Unlock the PLL registers
- Enable external bypass
- Disable the PLL
- Program pllm and pllf
- Program Ref divider
- Enable other PLL controls like DSM_EN, DAC_EN,etc
- Enable calibration if available
- Enable PLL
- Wait for PLL lock and Calibration lock
- Remove external bypass

Re-write the full sequence from scratch as the previous sequence was way
off and keep it in a single commit for bisectability.

Signed-off-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoclk: ti: clk-k3-pll: Change variable name reg to base
Manorit Chawdhry [Thu, 21 Nov 2024 12:02:52 +0000 (17:32 +0530)]
clk: ti: clk-k3-pll: Change variable name reg to base

base is more appropriate for the usage as the variable stores the base
address and seems more accurate w.r.t reg. Change reg to base.

Signed-off-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoarm: dts: k3-*-r5: Remove clocks from mcu_timer0
Manorit Chawdhry [Thu, 21 Nov 2024 12:02:51 +0000 (17:32 +0530)]
arm: dts: k3-*-r5: Remove clocks from mcu_timer0

Updated PLL driver sequencing requires us to use udelay in the PLL
driver as there is no poll bit to get the status of operations.
tick-timer(mcu_timer0/main_timer0) setting up the clocks for itself is
something that won't work as the PLL driver will be using udelay and
PLLs are configured during clock probe which would end up in a recursive
probe.

tick-timer being used by K3 devices are configured by ROM and we really
don't need to configure any of the clocks.

Remove the clock dependency from R5 stage as we don't need to setup
clocks for it.

Signed-off-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoenv: Switch the callback static list to Kconfig
Christoph Niedermaier [Wed, 20 Nov 2024 16:01:35 +0000 (17:01 +0100)]
env: Switch the callback static list to Kconfig

Switch the callback static list from the board configuration variable
CFG_ENV_CALLBACK_LIST_STATIC to Kconfig CONFIG_ENV_CALLBACK_LIST_STATIC.

Signed-off-by: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Reviewed-by: Marek Vasut <marex@denx.de>
6 months agoram: k3-ddrss: drop debug() in timing-sensitive sequence
Théo Lebrun [Fri, 15 Nov 2024 09:43:15 +0000 (10:43 +0100)]
ram: k3-ddrss: drop debug() in timing-sensitive sequence

Those debug() calls might be useful, but beware. They can cause the DDR
controller to hang if we do not run the sequence quickly enough.

They usually are not an issue with upstream U-Boot and the default DDR
config, but they have become troublesome with custom DDR configs.

Drop those debug() statements that shouldn't be present in
time-sensitive code, to avoid anyone else falling into the trap.

Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
6 months agoMerge patch series "led: update LED boot/activity to new property implementation"
Tom Rini [Fri, 6 Dec 2024 19:00:52 +0000 (13:00 -0600)]
Merge patch series "led: update LED boot/activity to new property implementation"

Christian Marangi <ansuelsmth@gmail.com> says:

This series is split in 2 part.

While adapting the LED boot and activity code to the new property
accepted by Rob in dt-schema repository, a big BUG was discovered.

The reason wasn't clear at start and took me some days to figure it
out.

This was triggered by adding a new phandle in the test.dts to
introduce test for the new OPs.

This single addition caused the sandbox CI test to fail in the
dm_test_ofnode_phandle_ot test.

This doesn't make sense as reverting the change made the CI test
to correctly finish. Also moving the uboot node down
after the first phandle (in test.dts the gpio one) also made
the CI test to correctly finish.

A little bit of searching and debugging made me realize the
parse phandle OPs didn't support other.dts at all and they
were still referencing phandle index from test.dts.
(more info in the related commit)

In short the test was broken all along and was working by
pure luck. The first 4 patch address and fix the problem for good.

The other 4 patch expand and address the property change for
LED boot/activity.

Posting in a single series as changes are trivial and just
to speedup review process. (and also because the second
part depends on the first)

All CI tested with azure pipeline.

Link: https://lore.kernel.org/r/20241110115054.2555-1-ansuelsmth@gmail.com
6 months agotest: dm: Update test for LED activity and boot
Christian Marangi [Sun, 10 Nov 2024 11:50:27 +0000 (12:50 +0100)]
test: dm: Update test for LED activity and boot

Update test for LED activity and boot to follow new implementation with
property set to the LED node phandle.

Also update a copy-paste error in the function name for the activity
tests and actually enable the test with the DM_TEST macro.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agoled: update LED boot/activity to new property implementation
Christian Marangi [Sun, 10 Nov 2024 11:50:26 +0000 (12:50 +0100)]
led: update LED boot/activity to new property implementation

Update LED boot/activity to reference by phandle instead of label and
add to period property the "-ms" suffix.
This is a followup request by dt-schema maintainers that required LED
node to be referenced by a phandle to the node instead of indirectly by
the LED label and for timevalue to have a suffix.

While at it generalize the LED node label parsing since the logic is
common for generic LED bind and LED activity/boot.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
6 months agotest: dm: Add test for ofnode options phandle helper
Christian Marangi [Sun, 10 Nov 2024 11:50:25 +0000 (12:50 +0100)]
test: dm: Add test for ofnode options phandle helper

Add test for ofnode options phandle helper and add new property in the
sandbox test dts.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agodm: core: implement phandle ofnode_options helper
Christian Marangi [Sun, 10 Nov 2024 11:50:24 +0000 (12:50 +0100)]
dm: core: implement phandle ofnode_options helper

Implement ofnode_options phandle helper to get an ofnode from a phandle
option in /options/u-boot.

This helper can be useful since new DT yaml usually require to link a
phandle of a node instead of referencing it by name or other indirect
way.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agotest: dm: Expand dm_test_ofnode_phandle(_ot) with new ofnode/tree_parse_phandle
Christian Marangi [Sun, 10 Nov 2024 11:50:23 +0000 (12:50 +0100)]
test: dm: Expand dm_test_ofnode_phandle(_ot) with new ofnode/tree_parse_phandle

Expand dm_test_ofnode_phandle(_ot) with new ofnode/tree_parse_phandle() op.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agodm: core: implement ofnode/tree_parse_phandle() helper
Christian Marangi [Sun, 10 Nov 2024 11:50:22 +0000 (12:50 +0100)]
dm: core: implement ofnode/tree_parse_phandle() helper

Implement ofnode/tree_parse_phandle() helper as an equivalent of
of_parse_phandle to handle simple single value phandle.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agotest: dm: fix broken dm_test_ofnode_phandle_ot and get_by_phandle_ot
Christian Marangi [Sun, 10 Nov 2024 11:50:21 +0000 (12:50 +0100)]
test: dm: fix broken dm_test_ofnode_phandle_ot and get_by_phandle_ot

Fix broken dm_test_ofnode_phandle_ot test. They never actually worked
and were passing test by pure luck by having the same phandle index of
test.dts that coincicentally had #gpio-cells in the same index node.

It was sufficient to add a phandle to test.dts to make the test fail.

To correctly test these feature, make use oif the new OPs oftree to
parse phandle.

For consistency with the dm_test_ofnode_phandle, rework the test and
other.dts to use the same property with the other- prefix to every
node.

Also fix dm_test_ofnode_get_by_phandle_ot by making it more robust and
renaming the phandle property to other-phandle.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agodm: core: implement oftree variant of parse_phandle OPs
Christian Marangi [Sun, 10 Nov 2024 11:50:20 +0000 (12:50 +0100)]
dm: core: implement oftree variant of parse_phandle OPs

Implement oftree variant of parse_phandle OPs.

There is currently a very hidden and laten BUG with parse_phandle OPs
that doesn't permit the support of multiple DTS in a system. One usage
example if sandbox with the usage of other.dts

The BUG is only present on live scenario where of_... OPs are used and
it's not present when fdt... OPs are used.

This is caused by an assumption made in __of_parse_phandle_with_args,
with the of_find_node_by_phandle call that pass the first arg as NULL.

This makes of_find_node_by_phandle use the default root node of the
system and doesn't permit the usage of alternative tree. This is correct
for normal system and also for the linux kernel where it's assumed a
single device tree.

It's problematic if other device tree needs to be used.

To fix this, introduce __of_root_parse_phandle_with_args to define a
root device tree for of_find_node_by_phandle.

Introduce all the variant OPs for this and in ofnode, the oftree OPs
following how it's done for other OPs with similar task.

For FDT scenario, ofnode_from_fdtdec_phandle_args is reworked to accept
a new variable, node and noffset_to_ofnode is used instead of
offset_to_ofnode. This is required to support multiple FDB blob to
calculate the correct of_offset of the ofnode.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agoMerge patch series "Add OPP_LOW support for J7200"
Tom Rini [Wed, 4 Dec 2024 20:30:25 +0000 (14:30 -0600)]
Merge patch series "Add OPP_LOW support for J7200"

Aniket Limaye <a-limaye@ti.com> says:

This series adds OPP_LOW spec data in k3_avs driver and enables a config
option to select the OPP_LOW performance point.

J7200 SOC supports OPP_LOW and OPP_NOM as two Operating Performance
Points as per (7.5 Operating Performance Points) section in the
Datasheet [0].
- A72SS/MSMC at 2 GHz/1GHz operation must use OPP_NOM.
- A72SS/MSMC at 1 GHz/500 MHz operation can use OPP_NOM or OPP_LOW
  voltage (though OPP_LOW voltage is recommended to reduce power
  consumption).

The actual OPP voltage for the device is read from the efuse and
updated in k3_avs_probe().

The default j7200 devicetree and k3_avs driver set OPP_NOM spec
frequency and voltage.

In the board init file, if K3_OPP_LOW config is enabled, Check if
OPP_LOW AVS voltage read from efuse is valid and update frequency (A72
and MSMC) and voltage (VDD_CPU) as per the OPP_LOW spec.

[0]: https://www.ti.com/lit/gpn/dra821u  (J7200 Datasheet)

Test logs:
https://gist.github.com/aniket-l/328ad93ed60c2419ed7be9f85e6b6075
- With series applied on master and CONFIG_K3_OPP_LOW enabled in
  j7200_evm_r5_defconfig
- Logs shown with and without efuse register programmed for OPP_0
  (Errors out if OPP_0 not found, programs OPP_LOW spec if found)
- Voltage update verified using 'i2c md 0x4c 0xe' in u-boot
- Frequency update verified using 'k3conf clock dump' in linux

Link: https://lore.kernel.org/r/20241119003617.1871183-1-a-limaye@ti.com
6 months agoconfigs: j7200_evm_r5_defconfig: Define K3_OPP_LOW
Reid Tonking [Tue, 19 Nov 2024 00:32:59 +0000 (06:02 +0530)]
configs: j7200_evm_r5_defconfig: Define K3_OPP_LOW

Define new CONFIG_K3_OPP_LOW under arm/mach-k3/r5/Kconfig and add
default value to j7200_evm_r5_defconfig

Signed-off-by: Reid Tonking <reidt@ti.com>
Signed-off-by: Aniket Limaye <a-limaye@ti.com>
6 months agoarm: mach-k3: j721e-init.c: Add support for CONFIG_K3_OPP_LOW
Aniket Limaye [Tue, 19 Nov 2024 00:32:58 +0000 (06:02 +0530)]
arm: mach-k3: j721e-init.c: Add support for CONFIG_K3_OPP_LOW

The default j7200 devicetree and k3_avs driver set 2GHz/1GHz frequency
for A72/MSMC clks and the OPP_NOM voltage.

J7200 SOCs may support OPP_LOW Operating Performance Point:
1GHz/500MHz clks for A72/MSMC and OPP_LOW AVS voltage read from efuse.

Hence, add a config check in board_init_f() to select OPP_LOW specs:
- Check if OPP_LOW AVS voltage read from efuse is valid.
- Use the device IDs and clock IDs (TISCI docs [0]) to find the A72 and
  MSMC clock frequencies in the devicetree.
- Fixup the clock frequencies in devicetree as per OPP_LOW spec.

k3_avs driver programs the OPP_LOW AVS voltage for VDD_CPU through
k3_avs_notify_freq() callback from clk_k3.

[0]: https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/clocks.html

Signed-off-by: Aniket Limaye <a-limaye@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agomisc: k3_avs: Check validity of efuse voltage data
Reid Tonking [Tue, 19 Nov 2024 00:32:57 +0000 (06:02 +0530)]
misc: k3_avs: Check validity of efuse voltage data

k3_avs driver checks opp_ids when probing and overwrites the voltage
values in vd_data for the respective board. The new k3_avs_check_opp()
can be called from board files to check the efuse data and returns 0 if
valid.

Also add the same check in k3_avs_program_voltage() to error out if
the efuse data was not valid.

Signed-off-by: Reid Tonking <reidt@ti.com>
Signed-off-by: Aniket Limaye <a-limaye@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agomisc: k3_avs: Add OPP_LOW voltage and frequency to vd_data
Reid Tonking [Tue, 19 Nov 2024 00:32:56 +0000 (06:02 +0530)]
misc: k3_avs: Add OPP_LOW voltage and frequency to vd_data

J7200 SOC supports OPP_LOW and OPP_NOM as two Operating Performance
Points as per (7.5 Operating Performance Points) section in the
Datasheet [0].
- A72SS/MSMC at 2 GHz/1GHz operation must use OPP_NOM.
- A72SS/MSMC at 1 GHz/500 MHz operation can use OPP_NOM or OPP_LOW
  voltage (though OPP_LOW voltage is recommended to reduce power
  consumption).

Add OPP_LOW frequency->voltage entry to vd_data.

The actual OPP voltage for the device is read from the efuse and
updated in k3_avs_probe().
OPP_NOM corresponds to OPP_1 and OPP_LOW to OPP_0 efuse register
fields, as described in the Datasheet [0]
The register offsets and fields are described in the TRM (5.2.6.1.5
WKUP_VTM_VD_OPPVID_j Register) [1].

[0]: https://www.ti.com/lit/gpn/dra821u (J7200 Datasheet)
[1]: https://www.ti.com/lit/pdf/spruiu1 (J7200 TRM)

Signed-off-by: Reid Tonking <reidt@ti.com>
Signed-off-by: Aniket Limaye <a-limaye@ti.com>
6 months agoarm: dts: k3-j7200-r5-common: Add msmc clk to a72 node
Reid Tonking [Tue, 19 Nov 2024 00:32:55 +0000 (06:02 +0530)]
arm: dts: k3-j7200-r5-common: Add msmc clk to a72 node

The j7200 SOC has a single DDR controller and hence no need for
configuring the MSMC interleaver. Hence we do not have an explicit node
for MSMC in j7200 DT, unlike j721s2/j784s4.

Also, MSMC clk id is described under A72SS0_CORE0 Device in TISCI
documentation [0].

Considering the above, define the MSMC clk in the a72 node.

[0]: https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j7200/clocks.html#clocks-for-a72ss0-core0-device

Signed-off-by: Reid Tonking <reidt@ti.com>
Signed-off-by: Aniket Limaye <a-limaye@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoMerge patch series "Enable AVS support for AM68, AM69 and J784S4"
Tom Rini [Wed, 4 Dec 2024 20:29:11 +0000 (14:29 -0600)]
Merge patch series "Enable AVS support for AM68, AM69 and J784S4"

Neha Malcom Francis <n-francis@ti.com> says:

This series adds AVS support for AM68 SK, AM69 SK and J784S4 EVM.

Boot logs:
https://gist.github.com/nehamalcom/db5dbf98357ebac46f648c24ad1a17e2

Link: https://lore.kernel.org/r/20241118105714.1973573-1-n-francis@ti.com
6 months agoconfigs: am68_sk_r5: Add AVS Configs
Udit Kumar [Mon, 18 Nov 2024 10:57:14 +0000 (16:27 +0530)]
configs: am68_sk_r5: Add AVS Configs

Add AVS and PMIC regulator configs

Signed-off-by: Udit Kumar <u-kumar1@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoconfigs: j784s4_evm_r5_defconfig: Enable AVS
Neha Malcom Francis [Mon, 18 Nov 2024 10:57:13 +0000 (16:27 +0530)]
configs: j784s4_evm_r5_defconfig: Enable AVS

Enable AVS support on J784S4 along with regulator.

Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoarch: arm: mach-k3: j784s4_init: Probe AVS driver
Neha Malcom Francis [Mon, 18 Nov 2024 10:57:12 +0000 (16:27 +0530)]
arch: arm: mach-k3: j784s4_init: Probe AVS driver

Probe the AVS driver to set the AVS voltage.

Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoarm: dts: k3-am68-sk-r5-base-board: Add VTM node to R5 stage
Neha Malcom Francis [Mon, 18 Nov 2024 10:57:11 +0000 (16:27 +0530)]
arm: dts: k3-am68-sk-r5-base-board: Add VTM node to R5 stage

Add the VTM node to the R5 boot stage so that AVS is correctly
configured for AM68 SK.

Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoarm: dts: k3-j784s4-r5: Add VTM node to R5 stage
Neha Malcom Francis [Mon, 18 Nov 2024 10:57:10 +0000 (16:27 +0530)]
arm: dts: k3-j784s4-r5: Add VTM node to R5 stage

Add VTM node to R5 boot stage so that AVS gets correctly configured for
J784S4 EVM and AM69 SK.

Signed-off-by: Neha Malcom Francis <n-francis@ti.com>
Reviewed-by: Manorit Chawdhry <m-chawdhry@ti.com>
6 months agoarm: dts: k3-am68: Enable OSPI boot
Udit Kumar [Tue, 19 Nov 2024 09:47:23 +0000 (15:17 +0530)]
arm: dts: k3-am68: Enable OSPI boot

Enable OSPI node to allow OSPI boot on AM68

Signed-off-by: Udit Kumar <u-kumar1@ti.com>
6 months agodm: gpio: Return error when pull up/down is requested but set_flags ops is not implme...
Zixun LI [Mon, 21 Oct 2024 15:04:51 +0000 (17:04 +0200)]
dm: gpio: Return error when pull up/down is requested but set_flags ops is not implmentated

Currently in _dm_gpio_set_flags() when set_flags ops is not implemented
direction_output()/_input() is used, but pull up/down is not supported by
these ops.

Signed-off-by: Zixun LI <admin@hifiphile.com>
6 months agobutton: gpio: handle broken controller
Caleb Connolly [Wed, 13 Nov 2024 04:59:24 +0000 (05:59 +0100)]
button: gpio: handle broken controller

Avoid crashing U-Boot when the GPIO controller for a button is disabled
or failed to probe. We also need to check the priv data for each button
since even if a button fails to probe it will still be polled by the
core code.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
6 months agoboard: phytec: common: Introduce CONFIG_PHYTEC_K3_DDR_PATCH
Garrett Giordano [Tue, 12 Nov 2024 20:40:23 +0000 (12:40 -0800)]
board: phytec: common: Introduce CONFIG_PHYTEC_K3_DDR_PATCH

Introduce CONFIG_PHYTEC_K3_DDR_PATCH to make DDR timing patch code
optional for PHYTEC K3 boards. This allows better control over which
boards receive DDR timing patches, rather than compiling the code for
all boards with K3_DDRSS enabled.

Also enable the feature by default for PHYCORE_AM62X_R5.

Signed-off-by: Garrett Giordano <ggiordano@phytec.com>
Reviewed-by: Wadim Egorov <w.egorov@phytec.de>
6 months agoeeprom: at24: add ST M24256E Additional Write lockable page support
Marek Vasut [Fri, 8 Nov 2024 18:52:26 +0000 (19:52 +0100)]
eeprom: at24: add ST M24256E Additional Write lockable page support

The ST M24256E behaves as a regular M24C256, except for the E variant
which uses up another I2C address for Additional Write lockable page.
This page is 64 Bytes long and can contain additional data. Add entry
for it, so users can describe that page in DT. Note that users still
have to describe the main M24C256 area separately as that is on separate
I2C address from this page.

Unlike M24C32-D and M24C64-D, this part is specifically ST and does not
have any comparable M24* counterparts from other vendors, hence the st,
vendor prefix. Furthermore, the part name is M24256E without C between
the 24 and 256, this is not a typo. Finally, there is M24C256-D part,
which does contain 32 Bytes long Additional Write lockable page, which
is a different part and not supported by this patch.

Datasheet: https://www.st.com/resource/en/datasheet/m24256e-f.pdf

From Linux kernel commit:
339cb28b9ee6 ("eeprom: at24: add ST M24256E Additional Write lockable page support")

Signed-off-by: Marek Vasut <marex@denx.de>
6 months agoarm: sunxi: Use "imply" for USB without further guards
Tom Rini [Fri, 15 Nov 2024 16:53:59 +0000 (10:53 -0600)]
arm: sunxi: Use "imply" for USB without further guards

Given that ARCH_SUNXI already implies that USB_GADGET should be enable,
we should also imply USB being enabled.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agoefi_loader: Fix Kconfig logic around OF_LIBFDT
Tom Rini [Fri, 15 Nov 2024 16:53:58 +0000 (10:53 -0600)]
efi_loader: Fix Kconfig logic around OF_LIBFDT

Given that OF_LIBFDT is library functionality, the feature of EFI_LOADER
needs to select OF_LIBFDT rather than depend on it being already
enabled.

Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agoaspeed: Fix Kconfig logic on "DM_RESET" and ASPEED_AST2500
Tom Rini [Fri, 15 Nov 2024 16:53:57 +0000 (10:53 -0600)]
aspeed: Fix Kconfig logic on "DM_RESET" and ASPEED_AST2500

It is not the case that we can only pick ASPEED_AST2500 if DM_RESET
is enabled, but rather choosing ASPEED_AST2500 means we must select
DM_RESET.

Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agoMerge tag 'efi-next-2024-12-04' of https://source.denx.de/u-boot/custodians/u-boot...
Tom Rini [Wed, 4 Dec 2024 15:32:28 +0000 (09:32 -0600)]
Merge tag 'efi-next-2024-12-04' of https://source.denx.de/u-boot/custodians/u-boot-efi into next

CI: https://source.denx.de/u-boot/custodians/u-boot-efi/-/pipelines/23707

With this pull request support for the EFI_HTTP_PROTOCOL and
EFI_IP4_CONFIG2 protocols are added. This allows EFI applications
to load files via HTTP.

UEFI:
      add efi_dp_from_ipv4 function
      add efi_net_set_addr, efi_net_get_addr functions
      add support for HTTP device path
      set EFI bootdevice device path to HTTP when loaded from wget
      add support to send http requests and parse http headers
      provide EFI_IP4_CONFIG2_PROTOCOL
      provide EFI_HTTP_PROTOCOL
      support IPv4() in device path to text protocol
      provide unit tests for the HTTP and IPv4 Config2 protocols

Network:
      zero terminate string with headers in wget_fill_info()
      zero terminate string with headers in wget_lwip_fill_info()
      pass port and server_name via wget_ctx in lwIP network stack
      let wget_with_dns work with dns disabled

Others:
      Add HTTP and IPV4 Config II protocols to UUID library functions.

6 months agoefi_selftest: add test for IPv4 Config2 protocol
Adriano Cordova [Wed, 4 Dec 2024 03:05:29 +0000 (00:05 -0300)]
efi_selftest: add test for IPv4 Config2 protocol

Add a test for the EFI_IP4_CONFIG2_PROTOCOL. The test sets the ip
policy to static, adds an ip address, and then reads the current
ip address and checks for it to be the same as the one that was set.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
6 months agoefi_selftest: add test for HTTP protocol
Adriano Cordova [Wed, 4 Dec 2024 03:05:28 +0000 (00:05 -0300)]
efi_selftest: add test for HTTP protocol

Add a test for the EFI_HTTP_PROTOCOL and
EFI_SEVICE_BINDING_PROTOCOL.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
6 months agolib: uuid: display HTTP and IPV4 Config II protocols
Heinrich Schuchardt [Wed, 4 Dec 2024 03:05:27 +0000 (00:05 -0300)]
lib: uuid: display HTTP and IPV4 Config II protocols

Add long texts for

* EFI HTTP Protocol
* EFI HTTP Service Binding Protocol
* EFI IPv4 Configuration II Protocol

to the uuid library.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
6 months agoefi_loader: efi_net: add EFI_HTTP_PROTOCOL
Adriano Cordova [Wed, 4 Dec 2024 03:05:26 +0000 (00:05 -0300)]
efi_loader: efi_net: add EFI_HTTP_PROTOCOL

Add an EFI HTTP driver. This commit implements the
EFI_HTTP_PROTOCOL and the EFI_HTTP_SERVICE_BINDING_PROTOCOL.
The latter is attached to the handle of th efi network
device. This is the same handle where snp, pxe, and ipconfig
are attached to.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
6 months agoefi_loader: efi_net: add EFI_IP4_CONFIG2_PROTOCOL
Adriano Cordova [Wed, 4 Dec 2024 03:05:25 +0000 (00:05 -0300)]
efi_loader: efi_net: add EFI_IP4_CONFIG2_PROTOCOL

Add an implementation of the EFI_IP4_CONFIG2_PROTOCOL. The protocol
is attached to the handle of the efi network device. This is the same
handle where snp and pxe are attached to.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
6 months agoefi_loader: net: add support to send http requests and parse http headers
Adriano Cordova [Wed, 4 Dec 2024 03:05:24 +0000 (00:05 -0300)]
efi_loader: net: add support to send http requests and parse http headers

Add network-stack agnostic way to send an http request and
parse http headers from efi drivers. This uses wget as a
backend and communicates with it via efi_wget_info.

The function efi_net_do_request allocates a buffer on behalf of an
efi application using efi_alloc and passes it to wget to receive
the data. If the method is GET and the buffer is too small, it
re-allocates the buffer based on the last received Content-Length
header and tries again. If the method is HEAD it just issues one
request. So issuing a HEAD request (to update Content-Length) and
then a GET request is preferred but not required.

The function efi_net_parse_headers parses a raw buffer containing
an http header into an array of EFI specific 'http_header' structs.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
6 months agoefi_loader: net: set EFI bootdevice device path to HTTP when loaded from wget
Adriano Cordova [Wed, 4 Dec 2024 03:05:23 +0000 (00:05 -0300)]
efi_loader: net: set EFI bootdevice device path to HTTP when loaded from wget

Set the device path of the efi boot device to an HTTP device path
(as formed by efi_dp_from_http) when the next boot stage is loaded
using wget (i.e., when wget is used with wget_info.set_bootdev=1).

When loaded from HTTP, the device path should account for it so that
the next boot stage is aware (e.g. grub only loads its http stack if
it itself was loaded from http, and it checks this from its device path).

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
6 months agoefi_loader: device_path: add support for HTTP device path
Adriano Cordova [Wed, 4 Dec 2024 03:05:22 +0000 (00:05 -0300)]
efi_loader: device_path: add support for HTTP device path

Add efi_dp_from_http to form a device path from HTTP. The
device path is the concatenation of the device path returned
by efi_dp_from_ipv4 together with an URI node and an END node.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
6 months agoefi_loader: efi_net: add efi_net_set_addr, efi_net_get_addr
Adriano Cordova [Wed, 4 Dec 2024 03:05:21 +0000 (00:05 -0300)]
efi_loader: efi_net: add efi_net_set_addr, efi_net_get_addr

Add the functions efi_net_set_addr and  efi_net_get_addr to set
and get the ip address from efi code in a network agnostic way.
This could also go in net_common, or be compiled conditionally
for each network stack.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
6 months agoefi_api: add definitions for HTTP and IP4_CONFIG2 protocols
Adriano Cordova [Wed, 4 Dec 2024 03:05:20 +0000 (00:05 -0300)]
efi_api: add definitions for HTTP and IP4_CONFIG2 protocols

Add EFI definitions for EFI_IP4_CONFIG2_PROTOCOL,
EFI_HTTP_SERVICE_BINDING_PROTOCOL, and EFI_HTTP_PROTOCOL.
According to UEFI spec 2.10.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
6 months agoefi_loader: add IPv4() to device path to text protocol
Heinrich Schuchardt [Wed, 4 Dec 2024 03:05:19 +0000 (00:05 -0300)]
efi_loader: add IPv4() to device path to text protocol

Implement Ipv4() node support in the device path to text protocol.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
6 months agoefi_loader: device_path: add efi_dp_from_ipv4
Adriano Cordova [Wed, 4 Dec 2024 03:05:18 +0000 (00:05 -0300)]
efi_loader: device_path: add efi_dp_from_ipv4

Add efi_dp_from_ipv4 to form a device path from an ipv4 address.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
6 months agoefi_loader: device_path: add definition of DEVICE_PATH_SUB_TYPE_MSG_IPV4
Adriano Cordova [Wed, 4 Dec 2024 03:05:17 +0000 (00:05 -0300)]
efi_loader: device_path: add definition of DEVICE_PATH_SUB_TYPE_MSG_IPV4

Add definition for DEVICE_PATH_SUB_TYPE_MSG_IPV4 device path
subtype.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
6 months agonet: wget: let wget_with_dns work with dns disabled
Adriano Cordova [Wed, 4 Dec 2024 03:05:16 +0000 (00:05 -0300)]
net: wget: let wget_with_dns work with dns disabled

This was marked as TODO in the code:
 - Enable use of wget_with_dns even if CMD_DNS is disabled if
   the given uri has the ip address for the http server.
 - Move the check for CMD_DNS inside wget_with_dns.
 - Rename wget_with_dns to wget_do_request

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
6 months agonet-lwip: zero terminate string with headers in wget_lwip_fill_info()
Adriano Cordova [Tue, 26 Nov 2024 16:19:21 +0000 (13:19 -0300)]
net-lwip: zero terminate string with headers in wget_lwip_fill_info()

    This patch comes as a companion to the same patch but for the legacy
    net stack. Commit 1327c2a8d6 ("net/lwip: wget: integrate struct wget_info
    into wget code") introduced function wget_fill_info() which retrieves
    the headers from the HTTP server response. As we want to parse the
    string in later patches we need to ensure that it is NUL terminated.

    We must further check that wget_info->headers in not NULL.
    Otherwise a crash occurs.

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
6 months agonet: zero terminate string with headers in wget_fill_info()
Heinrich Schuchardt [Tue, 26 Nov 2024 16:19:20 +0000 (13:19 -0300)]
net: zero terminate string with headers in wget_fill_info()

Commit 2dd076a9c1b4 ("net: wget: integrate struct wget_info into legacy
wget code") introduced function wget_fill_info() which retrieves the
headers from the HTTP server response. As we want to parse the string in
later patches we need to ensure that it is NUL terminated.

We must further check that wget_info->headers in not NULL.
Otherwise a crash occurs.

Fixes: 2dd076a9c1b4 ("net: wget: integrate struct wget_info into legacy wget code")
Signed-off-by: Adriano Cordova <adrianox@gmail.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
6 months agolwip: wget: pass port and server_name via wget_ctx
Adriano Cordova [Tue, 3 Dec 2024 12:55:34 +0000 (09:55 -0300)]
lwip: wget: pass port and server_name via wget_ctx

Commit 5907c81 ("net: lwip: Enable https:// support for wget") was not
  correctly rebased on top of the changes introduced by Commit 6cc4d04
  ("net/lwip: wget: put server_name and port into wget_ctx") in next.
  This commit re-applies a  couple of lines from 6cc4d04.

  Fixes: Commit 5907c81 ("net: lwip: Enable https:// support for wget")

Signed-off-by: Adriano Cordova <adrianox@gmail.com>
6 months agoMerge tag 'xilinx-for-v2025.04-rc1' of https://gitlab.denx.de/u-boot/custodians/u...
Tom Rini [Tue, 3 Dec 2024 21:51:56 +0000 (15:51 -0600)]
Merge tag 'xilinx-for-v2025.04-rc1' of https://gitlab.denx.de/u-boot/custodians/u-boot-microblaze into next

AMD/Xilinx changes for v2025.04-rc1

binman:
- Separate binman description from main DT

zynqmp:
- Enable binman for ZynqMP platforms
- DT sync with Linux v6.12
- Update usb5744 hub for SOMs

common:
- Drop SPL_FIT_GENERATOR support

versal2
- Enable OPTEE layers

ospi:
- Refactor the flash reset functionality

pytest:
- Fix tcminit mode handling

6 months agoMerge patch series "CI: Set up for an arm64 runner"
Tom Rini [Mon, 2 Dec 2024 22:36:06 +0000 (16:36 -0600)]
Merge patch series "CI: Set up for an arm64 runner"

Tom Rini <trini@konsulko.com> says:

Hey all,

This is picking up Simon's v5 of the above-named series and making a few
more changes so that the follow-up series I have leads to arm64 being
supported for almost all jobs. To quote Simon's cover letter:

All gitlab runners are currently amd64 machines. This series attempts to
create a docker image which can also support arm64 so that sandbox tests
can be run on it.

The TARGET_... environment variables for grub could perhaps be adjusted,
using the new variables, but I have not done that for now.

Adding to what Simon said, we now build grub for all architectures as
the reason to install it was to be able to use the binaries in QEMU.
That won't provide us with amd64 binaries on arm64 hosts so we can't use
that shortcut anymore.

Link: https://lore.kernel.org/r/20241127172247.1488685-1-trini@konsulko.com
6 months agoCI: Add platform variable
Simon Glass [Wed, 27 Nov 2024 17:17:30 +0000 (11:17 -0600)]
CI: Add platform variable

Add a list of possible platforms that can be used by gitlab runners.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
6 months agodocker: Install toolchains on arm64 host
Simon Glass [Wed, 27 Nov 2024 17:17:29 +0000 (11:17 -0600)]
docker: Install toolchains on arm64 host

Refactor the code to support downloading toolchains for arm64 as well as
x86_64

There doesn't seem to be an xtensa toolchain for arm64 at the same
location, so download that only on x86

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Fix LegacyKeyValueFormat warning with PYTHONPATH
Simon Glass [Wed, 27 Nov 2024 17:17:28 +0000 (11:17 -0600)]
docker: Fix LegacyKeyValueFormat warning with PYTHONPATH

Fix a warning due to the syntax used for PYTHONPATH:

   LegacyKeyValueFormat: "ENV key=value" should be used instead of
      legacy "ENV key value" format (line 304)

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Adjust installed packages slightly
Simon Glass [Wed, 27 Nov 2024 17:17:27 +0000 (11:17 -0600)]
docker: Adjust installed packages slightly

We no longer need to install libc6-i386 so we can drop that. Switch to
installing linux-image-generic as that will be available on all hosts,
to provide the /boot/vmlinu* file that's requires for various tools.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Support building for multiple architectures
Simon Glass [Wed, 27 Nov 2024 17:17:26 +0000 (11:17 -0600)]
docker: Support building for multiple architectures

Add instructions on how to build the file for multiple architectures.
Add a message indicating what is happening.

Update the documentation as well.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Use cache mounts for apt
Tom Rini [Wed, 27 Nov 2024 17:17:25 +0000 (11:17 -0600)]
docker: Use cache mounts for apt

Instead of deleting /var/lib/apt/lists after each relevant RUN line, use
a cache mount as is the current best practices.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Build grub for all architectures
Tom Rini [Wed, 27 Nov 2024 17:17:24 +0000 (11:17 -0600)]
docker: Build grub for all architectures

For consistency now, and future ease of testing with non-amd64 hosts,
build grub for all architectures rather than relying on host binaries
for i386/x86_64.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Update to grub-2.12
Tom Rini [Wed, 27 Nov 2024 17:17:23 +0000 (11:17 -0600)]
docker: Update to grub-2.12

The current release of grub is 2.12 and it will be good to pick this up
now so that we can update other parts of our stack.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Use "make -j$(nproc)" when invoking make
Tom Rini [Wed, 27 Nov 2024 17:17:22 +0000 (11:17 -0600)]
docker: Use "make -j$(nproc)" when invoking make

We had a few places that were not using "make -j$(nproc)" but instead
just plain "make" and so slowing down the overall build.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agodocker: Add kernel.org x86_64 toolchain
Tom Rini [Wed, 27 Nov 2024 17:17:21 +0000 (11:17 -0600)]
docker: Add kernel.org x86_64 toolchain

Add in the x86_64 toolchain, but do not enforce using it for sandbox.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agotest: Adjust print_ut test to use unsigned char
Simon Glass [Wed, 27 Nov 2024 17:17:20 +0000 (11:17 -0600)]
test: Adjust print_ut test to use unsigned char

Since char is unsigned on arm64, this test currently fails. It seems
better to use unsigned anyway, since 0xff is written into the string at
the start. Update the terminator-assert to use a character instead of a
byte.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Changes in v6:
- Re-introduce

Changes in v2:
- Use '\0' instead of 0

test/print_ut.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

6 months agosandbox: efi_loader: Correct use of addresses as pointers
Simon Glass [Wed, 27 Nov 2024 17:17:19 +0000 (11:17 -0600)]
sandbox: efi_loader: Correct use of addresses as pointers

The cache-flush function is incorrect which causes a crash in the
remoteproc tests with arm64.

Fix both problems by using map_sysmem() to convert an address to a
pointer and map_to_sysmem() to convert a pointer to an address.

Also update the image-loader's cache-flushing logic.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: 3286d223fd7 ("sandbox: implement invalidate_icache_all()")
Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Changes in v6:
- Re-introduce

Changes in v2:
- Drop message about EFI_LOADER

arch/sandbox/cpu/cache.c              |  8 +++++++-
 drivers/remoteproc/rproc-elf-loader.c | 18 +++++++++++-------
 lib/efi_loader/efi_image_loader.c     |  3 ++-
 3 files changed, 20 insertions(+), 9 deletions(-)

Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
6 months agotest: add command to 'Boot fail' message
Heinrich Schuchardt [Sat, 23 Nov 2024 21:29:22 +0000 (22:29 +0100)]
test: add command to 'Boot fail' message

When a timeout occurs while executing a command a 'Boot fail' message is
written and testing is stopped. The user is left in the dark about the
failure cause.

    ! _pytest.outcomes.Exit: Boot fail: Marking connection bad - no other tests will run !

Add the executed command to the message.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
6 months agotest: add command to 'Lab failure' timeout message
Heinrich Schuchardt [Sat, 23 Nov 2024 21:29:21 +0000 (22:29 +0100)]
test: add command to 'Lab failure' timeout message

When a timeout occurs while executing a command a 'Lab failure' message is
written and testing is stopped. The user is left in the dark about the
failure cause.

    ! _pytest.outcomes.Exit: Lab failure: Marking connection bad - no other tests will run !

Add the word 'Timeout' and the executed command to the message.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
6 months agocmd: add a fetch utility
Caleb Connolly [Fri, 15 Nov 2024 00:47:29 +0000 (01:47 +0100)]
cmd: add a fetch utility

Add a small utility for displaying some information about U-Boot and the
hardware it's running on in a similar fashion to the popular neofetch
tool for Linux [1].

While the output is meant to be useful, it should also be pleasing to
look at and perhaps entertaining. The ufetch command aims to bring this
to U-Boot, featuring a colorful ASCII art version of the U-Boot logo.

[1]: https://en.wikipedia.org/wiki/Neofetch

Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com> # vim3
Tested-by: Neil Armstrong <neil.armstrong@linaro.org> # on SM8560-QRD
Acked-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Tested-by: Tony Dinh <mibodhi@gmail.com>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
6 months agoMerge patch series "test: Avoid needing sudo for image-creation"
Tom Rini [Fri, 29 Nov 2024 20:37:13 +0000 (14:37 -0600)]
Merge patch series "test: Avoid needing sudo for image-creation"

Simon Glass <sjg@chromium.org> says:

This series rebases and tidies up a series sent by Richard Weinberger
to use unprivileged code to build the test images.

Link: https://patchwork.ozlabs.org/project/uboot/list/?series=417786&state=*
Link: https://lore.kernel.org/r/20241121223217.330117-1-sjg@chromium.org
Signed-off-by: Tom Rini <trini@konsulko.com>
6 months agobootstd: Remove prepared images
Simon Glass [Thu, 21 Nov 2024 22:32:14 +0000 (15:32 -0700)]
bootstd: Remove prepared images

These are no-longer used. Drop them.

Signed-off-by: Simon Glass <sjg@chromium.org>
6 months agotest_ut: Drop support for fallback files
Simon Glass [Thu, 21 Nov 2024 22:32:13 +0000 (15:32 -0700)]
test_ut: Drop support for fallback files

We don't need the fallback anymore. Remove the code which uses these
files.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Richard Weinberger <richard@nod.at>
6 months agotest_ut: Use the built mkimage
Simon Glass [Thu, 21 Nov 2024 22:32:12 +0000 (15:32 -0700)]
test_ut: Use the built mkimage

The mkimage tool is not present in the docker image. Use the one in the
build directory.

Signed-off-by: Simon Glass <sjg@chromium.org>
6 months agotest_ut: Drop exeception handling
Simon Glass [Thu, 21 Nov 2024 22:32:11 +0000 (15:32 -0700)]
test_ut: Drop exeception handling

We don't need the fallback anymore. As a first step to removing it,
drop the try...except clauses and unindent the code.

This produces a large diff but there are no other code changes.

Signed-off-by: Simon Glass <sjg@chromium.org>
6 months agotest_ut: Allow running unprivileged
Richard Weinberger [Thu, 21 Nov 2024 22:32:10 +0000 (15:32 -0700)]
test_ut: Allow running unprivileged

Like for test_fs, no need to mess with loop mounts.

Tweaks to reduce diff (keep mnt variable):

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Simon Glass <sjg@chromium.org>
6 months agotest_ut: Add an image size to setup_image()
Simon Glass [Thu, 21 Nov 2024 22:32:09 +0000 (15:32 -0700)]
test_ut: Add an image size to setup_image()

Add a parameter to indicate the size of the image to build.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Richard Weinberger <richard@nod.at>
6 months agotest_fs: Rename mount dir to scratch
Richard Weinberger [Thu, 21 Nov 2024 22:32:08 +0000 (15:32 -0700)]
test_fs: Rename mount dir to scratch

Since no mounting happens anymore, rename the "mnt"
directory to "scratch" and the related variables.

Signed-off-by: Richard Weinberger <richard@nod.at>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Signed-off-by: Simon Glass <sjg@chromium.org>
6 months agotest_fs: Allow running unprivileged
Richard Weinberger [Thu, 21 Nov 2024 22:32:07 +0000 (15:32 -0700)]
test_fs: Allow running unprivileged

There is no need to mount the filesystem on the host side.
All filesystem tools offer some way to fill the fs without mounting.

So, create the content on the host side, create and fill the fs
without mounting.
No more sudo or guestmount needed.

This new approach works because the tests don't care about user IDs
and no device files are needed.
If user IDs start to matter it's still possible to use wrapper
tools like fakeroot in future while filling the fs.

Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Simon Glass <sjg@chromium.org>
Tested-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>