]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
5 months agopower: pmic: sunxi: use generic AXP SPL driver for AXP305
Andre Przywara [Mon, 13 May 2024 23:47:09 +0000 (00:47 +0100)]
power: pmic: sunxi: use generic AXP SPL driver for AXP305

The generic AXP SPL driver implementation can cover all regulators we
need for the AXP305.

Add the descriptions for four of the six DC/DC regulators of the AXP305,
and enable that when CONFIG_AXP305_POWER is enabled. We won't need DCDC2
and DCDC3, but by using the position in the array for the index we keep
the code cleaner.
Also remove the old driver, and switch the Makefile to include the new,
generic driver.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
5 months agopower: pmic: sunxi: use generic AXP SPL driver for AXP313
Andre Przywara [Mon, 13 May 2024 23:46:59 +0000 (00:46 +0100)]
power: pmic: sunxi: use generic AXP SPL driver for AXP313

The generic AXP SPL driver implementation can cover all regulators we
need for the AXP313.

Add the descriptions for the three DC/DC regulators of the AXP313, and
enable that when CONFIG_AXP313_POWER is enabled. Also remove the old
driver, and switch the Makefile to include the new, generic version.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
5 months agopower: pmic: sunxi: add AXP717 SPL support
Andre Przywara [Thu, 9 May 2024 23:43:18 +0000 (00:43 +0100)]
power: pmic: sunxi: add AXP717 SPL support

On boards using the AXP717 PMIC, the DRAM rail is often not setup
correctly at reset time, so we have to program the PMIC very early in
the SPL, before running the DRAM initialisation.

Using the new generic AXP SPL driver, add the Kconfig options and
platform bits needed to support an AXP717 PMIC chip in I2C mode.
This allows to set up the correct voltage for the DRAM chips and the
CPU cores.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Tested-by: Ryan Walklin <ryan@testtoast.com>
5 months agopower: pmic: sunxi: introduce generic SPL AXP DC/DC driver
Andre Przywara [Mon, 13 May 2024 21:55:07 +0000 (22:55 +0100)]
power: pmic: sunxi: introduce generic SPL AXP DC/DC driver

So far we had a separate driver file for each AXP PMIC chip that we need
to support in the SPL. The code in there was largely similar, but
differed in many details.

Based on the idea of the DM AXP driver, introduce a data structure to
describe each regulator in a compact way. This is a simplified version
of the struct used in the DM driver, as we don't need to support the full
voltage range and not every regulator in the SPL.
For now we only support the DC/DC buck converters, since that's what we
need the SPL to configure, mostly. Also we get rid of the regulator name,
and hardcode the regulator number by its position in the array (first is
DCDC1, second is DCDC2, etc). We also drop support for the value table,
we ideally won't need that for the subset of regulators required.
At the end each regulator is described by a 10 bytes struct, so we avoid
blowing up the SPL footprint, but still can use generic code.

Each chip is supposed to be described separately, and protected by
ifdef's, to only build in the regulators needed for a particular board.
We also describe the bits to help identifying the AXP chip, and the
shutdown details in that section.

Add a generic driver, that exports axp_set_dcdc<x>() functions to set up
the buck converters. For now this just contains the bits for the (new)
AXP717, but it's not wired up anywhere yet.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
5 months agopower: pmic: sunxi: only build AXP drivers for SPL
Andre Przywara [Tue, 14 May 2024 00:12:34 +0000 (01:12 +0100)]
power: pmic: sunxi: only build AXP drivers for SPL

The axp<xxx>.c drivers are only used for the SPL, for U-Boot proper we
have a separate, DM compliant driver.
Mask the build instructions with CONFIG_SPL_BUILD, to avoid them being
build for U-Boot proper as well.

The AXP221 driver defines axp_get_sid(), which is used in the U-Boot
proper cpuinfo() code, and some old LCD code directly calls axp_set_eldo(),
so we keep that driver outside the new guards. This will be fixed properly
later.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
5 months agopower: regulator: add AXP717 support
Andre Przywara [Thu, 9 May 2024 23:43:19 +0000 (00:43 +0100)]
power: regulator: add AXP717 support

The X-Powers AXP717 is a PMIC with four buck converters and a number
of LDOs, one of which is actually fixed (so not modelled here).

Add the compatible string and the respective regulator ranges to allow
drivers to adjust voltages.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Ryan Walklin <ryan@testtoast.com>
5 months agoturris_1x: Normalize Kconfig usage
Tom Rini [Sat, 13 Jul 2024 14:38:38 +0000 (08:38 -0600)]
turris_1x: Normalize Kconfig usage

We don't set many options in the board Kconfig entry file but instead
use defconfigs, select in some cases on the target itself, or update the
"default" options of the main entries when needed. In this case we can
remove most of the board Kconfig entries and just add them to the
defconfig like other platforms.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 months agoMerge patch series "Add Turris 1.x board"
Tom Rini [Fri, 12 Jul 2024 19:07:54 +0000 (13:07 -0600)]
Merge patch series "Add Turris 1.x board"

Marek Mojík <marek.mojik@nic.cz> says:

Hello all,

this is a continuation of previous work by Pali to add support for the
Turris 1.x board. As the patches were based on u-boot v2022.04, a
nontrivial rebasing was needed.

Some notes:
- Some options that are in SD defconfig are disabled in NOR defconfig
  because over the years u-boot grew and the old NOR defconfig will not
  fit into NOR memory.
- SD boot with RAM larger than 2GB will only allocate 2GB of RAM (We
  were not able to fix this yet)

5 months agopowerpc: Add support for CZ.NIC Turris 1.x routers
Pali Rohár [Thu, 6 Jun 2024 16:33:26 +0000 (18:33 +0200)]
powerpc: Add support for CZ.NIC Turris 1.x routers

Add support for CZ.NIC Turris 1.x routers.

CZ.NIC Turris 1.0 (RTRS01) and 1.1 (RTRS02) are open source routers, they
have dual-core PowerPC Freescale P2020 CPU and are based on reference
Freescale P2020RDB-PC-A board design.

Hardware design is fully open source, all firmware and hardware design
files are available at Turris project website:

https://docs.turris.cz/hw/turris-1x/turris-1x/
https://project.turris.cz/en/hardware.html

The P2020 BootROM can load U-Boot either from NOR flash or from SD card.
We add the new defconfigs, turris_1x_nor_defconfig, which configures
U-Boot for building the NOR image, and turris_1x_sdcard_defconfig, which
configures U-Boot for building an image suitable for SD card.

The defconfig for NOR image is stripped-down a - many config options
enabled in SD defconfig are disabled for NOR defconfig. This is because
U-Boot grew non-trivially in the last two years and it would not fit
into the space allocated for U-Boot in the NOR memory. In the future we
may try to use LTO to reduce the size of the code and enable more
options.

The design of CZ.NIC Turris 1.x routers is based on Freescale P2020RDB-PC-A
board, so some code from boards/freescale/p1_p2_rdb_pc is used and linked
into Turris 1.x board code.

Turris 1.x code in this patch uses modern distroboot and can boot Linux
kernel from various locations, including NAND, SD card, USB flash disks,
NVMe disks or SATA disks (connected to extra SATA/SCSI PCIe controllers).
Via distroboot is implemented also rescue NOR boot for factory recovery,
triggered by reset button, like on other existing Turris routers.

SD boot with RAM larger than 2GB will only allocate 2GB of RAM (We were
not able to fix this yet)

[ Because various CONFIG_ macros were migrated to Kconfig since the last
  time this worked on upstream U-Boot (in 2022), a non-trivial rebasing
  was needed and some issues were solved. ]

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
5 months agopowerpc: use CONFIG_IS_ENABLED() when checking for DM_SERIAL in include/asm/config.h
Marek Mojík [Thu, 6 Jun 2024 16:33:25 +0000 (18:33 +0200)]
powerpc: use CONFIG_IS_ENABLED() when checking for DM_SERIAL in include/asm/config.h

Use the CONFIG_IS_ENABLED() macro when checking for DM_SERIAL so that
CFG_SYS_NS16550_CLK is not defined as get_serial_clock() in SPL if SPL
does not have DM_SERIAL enabled.

Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
5 months agopowerpc: mpc85xx: use CONFIG_VAL() for SYS_MONITOR_BASE in start.s
Marek Mojík [Thu, 6 Jun 2024 16:33:24 +0000 (18:33 +0200)]
powerpc: mpc85xx: use CONFIG_VAL() for SYS_MONITOR_BASE in start.s

Use CONFIG_VAL() for SYS_MONITOR_BASE in start.S so that correct value
is used for SPL.

Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
5 months agopowerpc: mpc8xxx: Extend find_law() to find_law_by_addr_id()
Pali Rohár [Thu, 6 Jun 2024 16:33:23 +0000 (18:33 +0200)]
powerpc: mpc8xxx: Extend find_law() to find_law_by_addr_id()

The find_law() function searches for LAW just by physical address. This
is unsuitable for cases with overlapping LAWs. Extend it to
find_law_by_addr_id(), which searches for LAW by physical address and
target id.

Add a static inline definition of the original find_law() into fsl_law.h
header.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
5 months agoboard: freescale: p1_p2_rdb_pc: Add weak function p1_p2_rdb_pc_fix_fdt_model() for...
Pali Rohár [Thu, 6 Jun 2024 16:33:22 +0000 (18:33 +0200)]
board: freescale: p1_p2_rdb_pc: Add weak function p1_p2_rdb_pc_fix_fdt_model() for fixing DT model string

This allows boards to fixup / overwrite DT model string when booting OS.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
5 months agoboard_f: Add support for CONFIG_OF_BOARD_FIXUP for XIP images
Pali Rohár [Thu, 6 Jun 2024 16:33:21 +0000 (18:33 +0200)]
board_f: Add support for CONFIG_OF_BOARD_FIXUP for XIP images

When U-Boot is running from flash memory (execute in place) then
gd->fdt_blob before relocation points to read-only flash memory.

So U-Boot calls board_fix_fdt() with read-only gd->fdt_blob pointer which
cause immediate CPU crash when callback is trying to modify gd->fdt_blob.

Fix this issue by introducing a new config option OF_INITIAL_DTB_READONLY
which moves fix_fdt callback after the reloc_fdt callback. This makes
CONFIG_OF_BOARD_FIXUP working also if U-Boot before relocation is not
running from read/write (S)RAM memory.

This is required for mpc85xx boards when booting from flash NOR.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Mojík <marek.mojik@nic.cz>
Reviewed-by: Marek Behún <kabel@kernel.org>
5 months agoMerge tag 'rpi-2024.10-rc1' of https://source.denx.de/u-boot/custodians/u-boot-raspbe...
Tom Rini [Fri, 12 Jul 2024 17:06:10 +0000 (11:06 -0600)]
Merge tag 'rpi-2024.10-rc1' of https://source.denx.de/u-boot/custodians/u-boot-raspberrypi

Updates for RPi for 2024.10:

- board: rpi: remove leftover CONFIG_HW_WATCHDOG block
- arm: bcm283x: remove unused empty hw_watchdog_disable
- board: raspberrypi: Fix format specifier for printing rev_scheme
- Revert "arm: dts: bcm283x: Add minimal smbios information"

5 months agoboard: rpi: remove leftover CONFIG_HW_WATCHDOG block
Rasmus Villemoes [Fri, 12 Jul 2024 09:07:25 +0000 (11:07 +0200)]
board: rpi: remove leftover CONFIG_HW_WATCHDOG block

This was added in commit 45a6d231b2f (bcm2835_wdt: support for the
BCM2835/2836 watchdog), which did do 'select HW_WATCHDOG'. That
incarnation of the watchdog driver later got removed in
c7adc0b5f98 (watchdog: bcm2835_wdt: Remove unused BCM283x watchdog
driver and its references), but this block was left behind.

Another rpi watchdog driver has since been added, but that does not
select HW_WATCHDOG, so this remains dead and unused. Remove it.

Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
5 months agoarm: bcm283x: remove unused empty hw_watchdog_disable
Rasmus Villemoes [Fri, 12 Jul 2024 09:07:24 +0000 (11:07 +0200)]
arm: bcm283x: remove unused empty hw_watchdog_disable

This empty stub was originally added as one branch of an #ifdef in
commit 45a6d231b2f (bcm2835_wdt: support for the BCM2835/2836
watchdog). That incarnation of the rpi watchdog driver was later
removed in c7adc0b5f98 (watchdog: bcm2835_wdt: Remove unused BCM283x
watchdog driver and its references), but this now unused stub was left
behind. The later (re-)added rpi watchdog driver does not define a
hw_watchdog_disable() function, as that is properly integrated in the
watchdog framework.

Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
5 months agoboard: raspberrypi: Fix format specifier for printing rev_scheme
Francois Berder [Tue, 9 Jul 2024 12:20:48 +0000 (14:20 +0200)]
board: raspberrypi: Fix format specifier for printing rev_scheme

rev_scheme is an unsigned integer and must not be printed
as a signed integer.

Signed-off-by: Francois Berder <fberder@outlook.fr>
Reviewed-by: Peter Robinson <pbrobinson@gmail.com>
5 months agoRevert "arm: dts: bcm283x: Add minimal smbios information"
Peter Robinson [Tue, 14 May 2024 13:07:19 +0000 (14:07 +0100)]
Revert "arm: dts: bcm283x: Add minimal smbios information"

This reverts commit 33041972727e84d3f95e26c83322521f61827584.

With the ability to generate this SMBIOS details autmotically the
small amount of details that this patch provided are generated
automatically so this is now obsolete so we can just drop it.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Acked-by: Matthias Brugger <mbrugger@suse.com>
5 months agoMerge tag 'u-boot-dfu-20240711' of https://source.denx.de/u-boot/custodians/u-boot-dfu
Tom Rini [Thu, 11 Jul 2024 22:12:39 +0000 (16:12 -0600)]
Merge tag 'u-boot-dfu-20240711' of https://source.denx.de/u-boot/custodians/u-boot-dfu

u-boot-dfu-20240711

Usb gadget:
- A welcome cleanup: epautoconf workaround is dropped to use
  .match_ep() instead
- Introduce handle_interrupts() op for USB_GADGET_GENERIC, which
  allows a per-driver interrupt handling

Fastboot:
- Fix mssing include when building with TCP only

5 months agotest/py/tests/test_fpga.py: Correct check for legacy image format support
Tom Rini [Wed, 3 Jul 2024 21:19:09 +0000 (15:19 -0600)]
test/py/tests/test_fpga.py: Correct check for legacy image format support

The build option to support images of type 'IMAGE_FORMAT_LEGACY' is
CONFIG_LEGACY_IMAGE_FORMAT so update the pytest to check for the correct
option.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Tom Rini <trini@konsulko.com>
5 months agommc: am654_sdhci: Add the quirk to set TESTCD bit
Emanuele Ghidoli [Tue, 2 Jul 2024 19:54:29 +0000 (21:54 +0200)]
mmc: am654_sdhci: Add the quirk to set TESTCD bit

The ARASAN MMC controller on Keystone 3 class of devices need the SDCD
line to be connected for proper functioning.

In cases where this can't be connected, add a quirk to force the
controller into test mode and set the TESTCD bit. Use the flag
"ti,fails-without-test-cd", to implement this above quirk when required.

Additionally, this quirk also avoids waiting for the controller debounce
time.

This commit is similar to linux kernel commit c7666240ec76
("drivers: mmc: sdhci_am654: Add the quirk to set TESTCD bit").

Signed-off-by: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
5 months agoboard: phytec: k3: k3_ddrss_patch: Add ddr phy reg count
Dominik Haller [Tue, 2 Jul 2024 09:22:40 +0000 (11:22 +0200)]
board: phytec: k3: k3_ddrss_patch: Add ddr phy reg count

Add and use the correct number of ddr phy registers to update the
corresponding settings.

Fixes: cbf5c99ef317 ("board: phytec: common: Introduce a method to inject DDR timings deltas")
Signed-off-by: Dominik Haller <d.haller@phytec.de>
Reviewed-by: Wadim Egorov <w.egorov@phytec.de>
5 months agoomap3: igep0x00: Switch to the I2C driver model
Javier Martinez Canillas [Fri, 28 Jun 2024 23:17:04 +0000 (01:17 +0200)]
omap3: igep0x00: Switch to the I2C driver model

When building with the igep00x0_defconfig, the following warning is shown:

  $ make -j $(nproc)
  ...
    LD      spl/u-boot-spl
    OBJCOPY spl/u-boot-spl-nodtb.bin
    SYM     spl/u-boot-spl.sym
    CAT     spl/u-boot-spl-dtb.bin
    COPY    spl/u-boot-spl.bin
    MKIMAGE MLO
  ===================== WARNING ======================
  This board does not use CONFIG_DM_I2C (Driver Model
  for I2C drivers). Please update the board to use
  CONFIG_DM_I2C before the v2022.04 release. Failure to
  update by the deadline may result in board removal.
  See doc/develop/driver-model/migration.rst for more info.
  ====================================================

The only reason why I2C is enabled for the IGEP boards is that the TWL4030
driver requires it.

But both the TWL4034 and the OMAP I2C controller drivers were converted to
the driver model by commits daa69ffe3d4d ("drivers: i2c: omap24xx_i2c:
adopt omap_i2c driver to driver model") and fb1b7712ad3f power: make most
tps drivers and the twl4030 driver compatible with DM_I2C") respectively.

So there's no reason anymore to keep using the I2C legacy API and instead
the DM_I2C option could just be enabled.

Signed-off-by: Javier Martinez Canillas <javierm@redhat.com>
Reviewed-by: Enric Balletbo i Serra <eballetbo@gmail.com>
5 months agocmd: add resize for FDT in bootelf
Maxim Moskalets [Fri, 28 Jun 2024 08:34:11 +0000 (11:34 +0300)]
cmd: add resize for FDT in bootelf

In some FDTs, there is not enough free memory to add nodes, so this
operation fails.

Signed-off-by: Maxim Moskalets <maximmosk4@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
5 months agogpt: allow spaces in partition list
Mikhail Kshevetskiy [Thu, 27 Jun 2024 11:29:04 +0000 (14:29 +0300)]
gpt: allow spaces in partition list

This allows spliting partition list to several lines in environment file

ex:
--------------------
gpt_partition_list=
name=boot1,size=5MiB,start=0x100000;
name=boot2,size=5MiB;
name=rootfs1,size=70MiB;
name=rootfs2,size=70MiB;
name=overlay1,size=20MiB;
name=overlay2,size=20MiB;
name=art,size=4MiB;

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Tested-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
5 months agoinclude/fastboot.h: add missing types.h include
Caleb Connolly [Fri, 21 Jun 2024 01:51:02 +0000 (03:51 +0200)]
include/fastboot.h: add missing types.h include

Fixes a compile error when building with only the TCP fastboot
implementation.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
Reviewed-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
Link: https://lore.kernel.org/r/20240621015135.1570605-1-caleb.connolly@linaro.org
[mkorpershoek: wrapped commit msg to fix checkpatch]
Signed-off-by: Mattijs Korpershoek <mkorpershoek@baylibre.com>
5 months agoMerge patch series "mediatek: cumulative trivial fix for OF_UPSTREAM support"
Tom Rini [Mon, 8 Jul 2024 17:56:59 +0000 (11:56 -0600)]
Merge patch series "mediatek: cumulative trivial fix for OF_UPSTREAM support"

Christian Marangi <ansuelsmth@gmail.com> says:

This is an initial series that have all the initial trivial
fixes required for usage of OF_UPSTREAM for the mediatek SoC

This also contains the pcie-gen3 driver and the required tphy
support driver to make it work.

Subsequent series will follow with conversion of the mtk-clk
to permit usage of OF_UPSTREAM and upstream clk ID.

MT7981, MT7986 and MT7988 migration to upstream clock ID
is complete and working on MT7623.

Series CI tested with PR: https://github.com/u-boot/u-boot/pull/590

5 months agoclk: mediatek: mt7986: support alternative compatible for fixed-plls
Christian Marangi [Mon, 24 Jun 2024 21:03:40 +0000 (23:03 +0200)]
clk: mediatek: mt7986: support alternative compatible for fixed-plls

Support alternative compatible for fixed-plls clocks used upstream with
the compatible mediatek,mt7986-apmixedsys.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agoclk: mediatek: mt7988: support alternative compatible for fixed-plls
Christian Marangi [Mon, 24 Jun 2024 21:03:39 +0000 (23:03 +0200)]
clk: mediatek: mt7988: support alternative compatible for fixed-plls

Support alternative compatible for fixed-plls clocks used upstream with
the compatible mediatek,mt7988-apmixedsys.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agopci: mediatek: make pcie-phy optional for gen3
Christian Marangi [Mon, 24 Jun 2024 21:03:38 +0000 (23:03 +0200)]
pci: mediatek: make pcie-phy optional for gen3

Set pcie-phy optional for PCIe gen3. MT7988 doesn't require it and
making it mandatory prevent the driver to correctly probe.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agopinctrl: mediatek: mt7981: init device before relocation
Christian Marangi [Mon, 24 Jun 2024 21:03:37 +0000 (23:03 +0200)]
pinctrl: mediatek: mt7981: init device before relocation

Upstream kernel linux define pinctrl for uart0, hence this pin group
and pinctrl driver is needed before relocation. Add DM_FLAG_PRE_RELOC
flag to init and mute mtk_serial error on early serial init.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agopinctrl: mediatek: add support for gpio-controller property in root node
Christian Marangi [Mon, 24 Jun 2024 21:03:36 +0000 (23:03 +0200)]
pinctrl: mediatek: add support for gpio-controller property in root node

Add support for gpio-controller property in root pinctrl node.
This is to follow upstream linux DTSI that doesn't define the
gpio-controller and cells in dedicated nodes.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agoclk: mediatek: mt7981: support alternative compatible for fixed-plls
Christian Marangi [Mon, 24 Jun 2024 21:03:35 +0000 (23:03 +0200)]
clk: mediatek: mt7981: support alternative compatible for fixed-plls

Support alternative compatible for fixed-plls clocks used upstream with
the compatible mediatek,mt7981-apmixedsys.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agommc: mediatek: add support for upstream linux clock and property
Christian Marangi [Mon, 24 Jun 2024 21:03:34 +0000 (23:03 +0200)]
mmc: mediatek: add support for upstream linux clock and property

Add support for upstream linux clock and map U-Boot property to the one
use in upstream linux where supported.

Also add handling for the use_internal_cd that on upstream is hardcoded
enabled on mt7620.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agoserial: mediatek: add special handling for highspeed and linux compat
Christian Marangi [Mon, 24 Jun 2024 21:03:33 +0000 (23:03 +0200)]
serial: mediatek: add special handling for highspeed and linux compat

Upstream linux serial driver use a different logic to setup serial regs.

They have 2 interval:
- < 115200 we use lowspeed regs and 16 * baud
- >= 115200 we use highspeed

We currently use force_highspeed property to force usage of highspeed
regs even with low baud rate.

Add special handling if the upstream compatible is used where we just
apply the same interval with anything >= 115200 in highspeed simulating
force_highspeed.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agoserial: mediatek: add support for bus clock and enable it
Christian Marangi [Mon, 24 Jun 2024 21:03:32 +0000 (23:03 +0200)]
serial: mediatek: add support for bus clock and enable it

Upstream linux also provide the additional optional bus clock.

Add support for it and also enable the baud and bus clock on probe.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agoi2c: mediatek: add support for optional arb and pmic clock
Christian Marangi [Mon, 24 Jun 2024 21:03:31 +0000 (23:03 +0200)]
i2c: mediatek: add support for optional arb and pmic clock

Add support for optional arb and pmic clock for i2c provided in upstream
linux DTSI.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
5 months agonet: mediatek: handle alternative name for pn_swap property
Christian Marangi [Mon, 24 Jun 2024 21:03:30 +0000 (23:03 +0200)]
net: mediatek: handle alternative name for pn_swap property

Handle alternative name for pn_swap property as upstream linux use
mediatek,pnswap.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agospi: mtk_spim: add support for upstream mediatek, spi-ipm compatible
Christian Marangi [Mon, 24 Jun 2024 21:03:29 +0000 (23:03 +0200)]
spi: mtk_spim: add support for upstream mediatek, spi-ipm compatible

Upstream kernel linux use a different compatible mediatek,spi-ipm.

Add support for this compatible and add handling for the additional
clock similar to how it's done by the upstream driver and handling for
all the property enabled by default.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agopci: mediatek: add PCIe controller support for filogic silicon
John Crispin [Mon, 24 Jun 2024 21:03:28 +0000 (23:03 +0200)]
pci: mediatek: add PCIe controller support for filogic silicon

Add MediaTek GEN3 PCIe controller support for filogic silicon.
This is adapted from the Linux version of the driver.

Signed-off-by: John Crispin <john@phrozen.org>
[ fix minor problems, fix checkpatch errors ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agophy: phy-mtk-tphy: add support for phy type switch
Christian Marangi [Mon, 24 Jun 2024 21:03:27 +0000 (23:03 +0200)]
phy: phy-mtk-tphy: add support for phy type switch

Add support for PHY type switch via the mediatek topmisc syscon.

This is needed on mt7981 to make the PCIe correctly work and display
LinkUp.

Follow the same implementation done on Linux kernel with the usage of
the mediatek,syscon-type property.

Example:

u3port0: usb-phy@11e10700 {
reg = <0x11e10700 0x900>;
clocks = <&topckgen CK_TOP_USB3_PHY_SEL>;
clock-names = "ref";
#phy-cells = <1>;
mediatek,syscon-type = <&topmisc 0x218 0>;
status = "okay";
};

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
5 months agoRevert "buildman: Always use the full path in CROSS_COMPILE"
Tom Rini [Fri, 5 Jul 2024 20:34:07 +0000 (14:34 -0600)]
Revert "buildman: Always use the full path in CROSS_COMPILE"

There are operations in buildman that result in running the cross-tools
(such as performing size checks) and now that we have not modified PATH
to know where our tools are, these operations fail.

This reverts commit 6c0a3cf75f72370deec3ee516a9dd377397af207.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 months agoMerge branch 'master' of https://gitlab.denx.de/u-boot/custodians/u-boot-marvell
Tom Rini [Mon, 8 Jul 2024 14:47:00 +0000 (08:47 -0600)]
Merge branch 'master' of https://gitlab.denx.de/u-boot/custodians/u-boot-marvell

- Add mvebu_espressobin_ultra-88f3720_defconfig (Benjamin)
- Update DTS for Thecus N2350 board (Tony)
- Add "old" Marvell DDR3 training for Armada 38x and Turris Omnia
  (Marek)
- Misc turris_omnia changes (Marek)

5 months agoMerge tag 'u-boot-imx-master-20240706' of https://gitlab.denx.de/u-boot/custodians...
Tom Rini [Mon, 8 Jul 2024 14:45:02 +0000 (08:45 -0600)]
Merge tag 'u-boot-imx-master-20240706' of https://gitlab.denx.de/u-boot/custodians/u-boot-imx

CI: https://source.denx.de/u-boot/custodians/u-boot-imx/-/pipelines/21504

- Fixes for i.MX8M and i.MX93 clk-composite.
- Set CAN oscillator frequency based on model on verdin-imx8mm.
- Enable CAAM for phycore-imx8mp_defconfig.
- Miscellaneous improvements for Gateworks i.MX8M boards.
- Fix initramfs boot on msc_sm2s_imx8mp.
- Fixe EQoS on imx8mp-beacon-kit.
- Fix error message in fsl_esdhc_imx.

5 months agoMerge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-usb
Tom Rini [Mon, 8 Jul 2024 14:44:26 +0000 (08:44 -0600)]
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-usb

5 months agoMerge branch 'next-clk-sync' of https://source.denx.de/u-boot/custodians/u-boot-sh
Tom Rini [Mon, 8 Jul 2024 14:43:56 +0000 (08:43 -0600)]
Merge branch 'next-clk-sync' of https://source.denx.de/u-boot/custodians/u-boot-sh

5 months agomvebu: armada-8k: respect CONFIG_DISTRO_DEFAULTS
Robert Marko [Fri, 21 Jun 2024 09:46:02 +0000 (11:46 +0200)]
mvebu: armada-8k: respect CONFIG_DISTRO_DEFAULTS

Currently, Armada 8k config header is setting boot devices and including
<config_distro_bootcmd.h> regardless of the CONFIG_DISTRO_DEFAULTS being
enabled or not, thus populating the environment for distro boot even on
devices that have no need for it.

So, lets simply respect the value of CONFIG_DISTRO_DEFAULTS.

Signed-off-by: Robert Marko <robimarko@gmail.com>
5 months agoarm: mvebu: turris_omnia: Support old DDR3 training
Marek Behún [Tue, 18 Jun 2024 15:34:39 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Support old DDR3 training

Support old DDR3 training code on Turris Omnia, selectable via EEPROM
field.

Users experiencing DDR3 initialization failures or random crashes of the
operating system due to incorrect DDR3 configuration can select the old
DDR3 training implementation to fix those issues by setting the EEPROM
field "Use old DDR training":
  eeprom update "Use old DDR training" 1

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: a38x: Add optional support for using old DDR3 training code
Marek Behún [Tue, 18 Jun 2024 15:34:38 +0000 (17:34 +0200)]
arm: mvebu: a38x: Add optional support for using old DDR3 training code

Add optional support for using old DDR3 training code from 2017.

The code lives in drivers/ddr/marvell/a38x/old/. To prevent symbol
clashing with new DDR3 training code, a special header which renames all
clashing symbols via macros is included and the symbols are prefixed
with 'old_'.

If old DDR3 training support is selected for a board, then the SPL
initialization code calls a new function
  board_use_old_ddr3_training()
to check whether it should use old DDR3 training code. The default
weak implementation returns false, defaulting to new DDR3 training code.

Boards that wish to support this need to select the
  ARMADA_38X_SUPPORT_OLD_DDR3_TRAINING
config option and implement the old version of DDR topology provider,
ddr3_get_topology_map().

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: old: Backport immutable debug settings
Marek Behún [Tue, 18 Jun 2024 15:34:37 +0000 (17:34 +0200)]
ddr: marvell: a38x: old: Backport immutable debug settings

Backport the option to compile with immutable debug settings also to
the old implementation of the DDR3 training code.

The original PR for mv-ddr-marvell can be seen at
  https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell/pull/45/

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: old: Fix some compiler warning of the old code
Marek Behún [Tue, 18 Jun 2024 15:34:36 +0000 (17:34 +0200)]
ddr: marvell: a38x: old: Fix some compiler warning of the old code

Fix some compilation warning in the old DDR training code.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: Import old DDR training code from 2017 version of U-Boot
Marek Behún [Tue, 18 Jun 2024 15:34:35 +0000 (17:34 +0200)]
ddr: marvell: a38x: Import old DDR training code from 2017 version of U-Boot

Import DDR training code from commit 1b69ce2fc0ec ("arm: mvebu:
ddr3_debug: remove self assignments") into
drivers/ddr/marvell/a38x/old/. The code is not used yet.

Explanation:

Since 2019, on some Turris Omnia boards we have been having problems
with newer versions of Marvell's DDR3 training code for Armada 38x,
which is ported from mv-ddr-marvell [1] to U-Boot into the
drivers/ddr/marvell/a38x/ directory:
- sometimes the DDR3 training fails on some older boards, sometime it
  fails on some newer boards
- other times it succeeds, but some boards experience crashes of the
  operating system after running for some time.

Using the stock version of Turris Omnia's U-Boot from solved these
issues, but this solution was not satisfactory, since we wanted
features from new U-Boot.

Back in 2020-2022 we have spent several months trying to debug the
issues, working with Marvell, on our own, and also with U-Boot
community, but these issues persist still.

One solution we used back in 2019 was a "hybrid U-Boot": the SPL part
(containing the DDR3 training code) was taken from the stock version,
while the proper part was current U-Boot at the time. This solution also
has its drawbacks, of which the main one is the need to glue binaries
from two separate builds.

Since then there have been some more changes to the DDR3 training code
in upstream mv-ddr-marvell that have been ported to U-Boot. We have
provided our users experimental builds of U-Boot in the TurrisOS so that
they could try upgrading the firmware and let us know if those problems
still exist. And they do.

We do not have the time nor manpower to debug this problem and fix it
properly. Marvell was also no able to provide a solution to this,
probably because they do not have the manpower as well.

I have therefore come up with this "not that pretty" solution: take the
DDR3 training code from an older version of U-Boot that is known to
work, put it into current U-Boot under old/ subdirectory within
drivers/ddr/marvell/a38x/, build into the SPL binary both the old and
new versions and make it possible to select the old version via an env
variable.

[1] https://github.com/MarvellEmbeddedProcessors/mv-ddr-marvell

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Read DDR speed from EEPROM
Marek Behún [Tue, 18 Jun 2024 15:34:34 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Read DDR speed from EEPROM

Some Turris Omnia boards experience memory issues, and by
experimentation we found that some of these issues can be solved by
slowing DDR speed.

Add a new field in the extended EEPROM information structure, ddr_speed.
Support several values in this field (for now 1066F, 1333H, and the
default, 1600K) and use it to overwrite the DDR topology parameters
used by the DDR training algorithm.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Extend EEPROM info structure
Marek Behún [Tue, 18 Jun 2024 15:34:33 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Extend EEPROM info structure

Extend the Omnia EEPROM information structure in preparation for more
variables to be stored there.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Enable the 'eeprom' command
Marek Behún [Tue, 18 Jun 2024 15:34:32 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Enable the 'eeprom' command

Enable the 'eeprom' command with support for EEPROM layout for Turris
Omnia. Enable the i2c-eeprom driver so that the EEPROM is accessed via
driver model.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Implement EEPROM layout for the 'eeprom' command
Marek Behún [Tue, 18 Jun 2024 15:34:31 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Implement EEPROM layout for the 'eeprom' command

Implement Turris Omnia EEPROM layout for the 'eeprom' command.

When the 'eeprom' command (with layout support) is enabled, we can now
use the 'eeprom print' and 'eeprom update' commands, for example:

  => eeprom print
  Magic constant                34a04103
  RAM size in GB                2
  Wi-Fi Region
  CRC32 checksum                cecbc2a1

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Fix ethernet PHY reset gpio FDT fixup
Marek Behún [Tue, 18 Jun 2024 15:34:30 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Fix ethernet PHY reset gpio FDT fixup

For board revisions where the WAN ethernet PHY reset GPIO is controllable
via MCU we currently insert a phy-reset-gpios property into the ethernet
controller node. The mvneta driver parses this property and uses the
GPIO to reset the PHY.

But this phy-reset-gpios property is not a valid DT binding in upstream
kernel. Instead, a reset-gpios property should be inserted into the
ethernet PHY node. This correct DT binding is supported by the DM ETH PHY
U-Boot driver.

Insert the reset-gpios property into the WAN PHY node instead the
phy-reset-gpios property in WAN ETH node so that Linux will correctly use
the reset GPIO.

Enable the CONFIG_DM_ETH_PHY config option so that U-Boot will also use
the correct DT property.

Note: currently there are 4 ethernet controller drivers parsing the
wrong DT property: dwc_eth_qos, fex_mxc, mvneta and mvpp2. We should
convert all relevant device-trees to use reset-gpios so that we can get
rid of these drivers parsing this property.

Fixes: 1da53ae26afc ("arm: mvebu: turris_omnia: Add support for design with SW reset signals")
Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Enable immutable debug settings in DDR3 training by default
Marek Behún [Tue, 18 Jun 2024 15:34:29 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Enable immutable debug settings in DDR3 training by default

Save 10 KiB in Turris Omnia's SPL binary by enabling immutable debug
settings for DDR3 training code.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: debug: Allow compiling with immutable debug settings to reduce...
Marek Behún [Tue, 18 Jun 2024 15:34:28 +0000 (17:34 +0200)]
ddr: marvell: a38x: debug: Allow compiling with immutable debug settings to reduce binary size

Allow compiling with immutable debug settings:
- DEBUG_LEVEL is always set to DEBUG_LEVEL_ERROR
- register dumps are disabled

This can save around 10 KiB of space in the resulting binary, which is a
lot in U-Boot SPL.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: debug: Define DDR_VIEWER_TOOL variables only if needed, and make...
Marek Behún [Tue, 18 Jun 2024 15:34:27 +0000 (17:34 +0200)]
ddr: marvell: a38x: debug: Define DDR_VIEWER_TOOL variables only if needed, and make them static

The variables is_validate_window_per_if, is_validate_window_per_pup,
sweep_cnt and is_run_leveling_sweep_tests are only used if
DDR_VIEWER_TOOL macro is defined, so define them only in that case.

Make them static since they are only used in ddr3_debug.c.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: debug: Remove unused variables
Marek Behún [Tue, 18 Jun 2024 15:34:26 +0000 (17:34 +0200)]
ddr: marvell: a38x: debug: Remove unused variables

The variables is_default_centralization, is_tune_result and
is_bist_reset_bit are never used.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoddr: marvell: a38x: debug: return from ddr3_tip_print_log() early if we won't print...
Marek Behún [Tue, 18 Jun 2024 15:34:25 +0000 (17:34 +0200)]
ddr: marvell: a38x: debug: return from ddr3_tip_print_log() early if we won't print anything

Return from ddr3_tip_print_log() early if we won't print anything
anyway.

This way the compiler can optimize away the VALIDATE_IF_ACTIVE() calls
in the for-loop, so if the SILENT_LIB macro is defined, no code is
generated for the rest of the function, which saves some space.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: mvebu: turris_omnia: Disable ext4 write support in defconfig
Marek Behún [Tue, 18 Jun 2024 15:34:24 +0000 (17:34 +0200)]
arm: mvebu: turris_omnia: Disable ext4 write support in defconfig

Turris Omnia defconfig is nearing image size limit. Disable ext4 write
support to reserve space for more important stuff.

This reduces the size of the KWB image by ~19 KiB.

If in the future U-Boot supports compressing itself and decompressing
on load, we may enable this again.

Signed-off-by: Marek Behún <kabel@kernel.org>
5 months agoarm: dts: mvebu: Update DTS for Thecus N2350 board
Tony Dinh [Mon, 10 Jun 2024 00:34:31 +0000 (17:34 -0700)]
arm: dts: mvebu: Update DTS for Thecus N2350 board

- Change the spi-max-frequency to 50000000 (50 Mhz). According to the
data sheet[1], the MX25L3205D max frequency is 86 Mhz. Using 50 Mhz in
the DTS to ensure u-boot is consistent with what Linux kernel expected.
- Update GPIO fan to conform to the latest DT binding.

[1]
https://www.macronix.com/Lists/Datasheet/Attachments/8575/MX25L3205D,%203V,%2032Mb,%20v1.5.pdf

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
5 months agoarm: mvebu: env_sf_get_env_addr() missing check for CONFIG_ENV_IS_IN_SPI_FLASH
Tony Dinh [Thu, 6 Jun 2024 00:12:01 +0000 (17:12 -0700)]
arm: mvebu: env_sf_get_env_addr() missing check for CONFIG_ENV_IS_IN_SPI_FLASH

The CONFIG_ENV_OFFSET is undefined if boot device is UART
(CONFIG_MVEBU_SPL_BOOT_DEVICE_UART), or envs are not stored on flash
(CONFIG_ENV_IS_NOWHERE). Check for CONFIG_ENV_IS_IN_SPI_FLASH as the first
condition to determine whether env_sf_get_env_addr() should be provided.

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
5 months agoconfigs: add mvebu_espressobin_ultra-88f3720_defconfig
Benjamin Schneider [Thu, 30 May 2024 04:47:51 +0000 (21:47 -0700)]
configs: add mvebu_espressobin_ultra-88f3720_defconfig

Add support for a Marvell Armada 3720 device variant

Signed-off-by: Benjamin Schneider <ben@bens.haus>
5 months agoclk: imx: add mux ops for i.MX8M composite clk
Michael Trimarchi [Fri, 5 Jul 2024 07:19:52 +0000 (09:19 +0200)]
clk: imx: add mux ops for i.MX8M composite clk

Upstream Linux commit f90b68d6c8b0.

The CORE/BUS root slice has following design, simplied graph:
The difference is core not have pre_div block.
A composite core/bus clk has 8 inputs for mux to select, saying clk[0-7].

It support target(smart) interface and normal interface. Target interface
is exported for programmer easy to configure ccm root. Normal interface
is also exported, but we not use it in our driver, because it will
introduce more complexity compared with target interface.

The normal interface simplified as below:
            SEL_A  GA
            +--+  +-+
            |  +->+ +------+
CLK[0-7]--->+  |  +-+      |
       |    |  |      +----v---+    +----+
       |    +--+      |pre_diva+---->    |  +---------+
       |              +--------+    |mux +--+post_div |
       |    +--+      |pre_divb+--->+    |  +---------+
       |    |  |      +----^---+    +----+
       +--->+  |  +-+      |
            |  +->+ +------+
            +--+  +-+
            SEL_B  GB

The mux in the upper pic is not the target interface MUX, target
interface MUX is hiding SEL_A and SEL_B. When you choose clk[0-7],
you are actually writing SEL_A or SEL_B depends on the internal
counter which will also control the internal "mux".

The target interface simplified as below which is used by Linux Kernel:
CLK[0-7]--->MUX-->Gate-->pre_div-->post_div

A requirement of the Target Interface's software is that the
target clock source is active, it means when setting SEL_A, the
current input clk to SEL_A must be active, same to SEL_B.

We touch target interface, but hardware logic actually also need
configure normal interface.

There will be system hang, when doing the following steps:
The initial state:
SEL_A/SEL_B are both sourcing from clk0, the internal counter
choose SEL_A.
1. switch mux from clk0 to clk1
   The hardware logic will choose SEL_B and configure SEL_B to clk1.
   SEL_A no changed.
2. gate off clk0
   Disable clk0, then the input to SEL_A is off.
3. switch from clk1 to clk2
   The hardware logic will choose SEL_A and configure SEL_A to clk2,
   however the current SEL_A input clk0 is off, the system hang.

The solution to fix the issue is in step 1, write twice to
target interface MUX, it will make SEL_A/SEL_B both sources
from clk1, then no need to care about the state of clk0. And
finally system performs well.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
5 months agoclk: clk-mux: Make public the clk_fetch_parent_index
Michael Trimarchi [Fri, 5 Jul 2024 07:19:51 +0000 (09:19 +0200)]
clk: clk-mux: Make public the clk_fetch_parent_index

Make public the clk_fetch_parent_index and rename it. This allow
us to be reused in driver specialization

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
5 months agommc: fsl_esdhc_imx: Fix error message
Alexander Stein [Fri, 5 Jul 2024 13:27:24 +0000 (15:27 +0200)]
mmc: fsl_esdhc_imx: Fix error message

Add missing newline character and also add the return code of
regulator_set_value() to the output.

Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
5 months agoconfigs: phycore-imx8mp_defconfig: Initialize caam
Leonard Anderweit [Fri, 5 Jul 2024 12:11:21 +0000 (14:11 +0200)]
configs: phycore-imx8mp_defconfig: Initialize caam

Initialize the Cryptographic Accelerator and Assurance Module.

Signed-off-by: Leonard Anderweit <l.anderweit@phytec.de>
5 months agoARM: dts: imx8mp-beacon-kit-u-boot: Drop EQoS clock work-around
Adam Ford [Thu, 4 Jul 2024 21:22:46 +0000 (16:22 -0500)]
ARM: dts: imx8mp-beacon-kit-u-boot: Drop EQoS clock work-around

Since commit ecb1c37a7b64 ("clk: imx8mp: Add EQoS MAC clock"),
the clocks for the DWMAC driver can be configured, and removing
them breaks operation.

Fixes: ecb1c37a7b64 ("clk: imx8mp: Add EQoS MAC clock")
Suggested-by: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Adam Ford <aford173@gmail.com>
Reviewed-by: Peng Fan <peng.fan@nxp.com>
5 months agomsc_sm2s_imx8mp: Adjust the initrd_addr location
Fabio Estevam [Thu, 4 Jul 2024 12:03:37 +0000 (09:03 -0300)]
msc_sm2s_imx8mp: Adjust the initrd_addr location

Booting an initramfs with the current initrd_addr address may lead to
initramfs corruption and boot failure.

Fix the initramfs problem by applying the following layout
suggested by Tom Rini:

loadaddr=0x40480000 --> Gets moved to 0x40600000 in run-time:

   Uncompressing Kernel Image
Moving Image from 0x40480000 to 0x40600000, end=41e80000

fdt_addr_r= moved loadaddr + 128 MiB = 0x48600000

initrd_addr=fdt_addr_r + 512 KiB = 0x48680000

Signed-off-by: Fabio Estevam <festevam@denx.de>
Tested-by: Stefano Babic <sbabic@denx.de>
Reviewed-by: Tom Rini <trini@konsulko.com>
5 months agopinctrl: renesas: Synchronize R-Car R8A779G0 V4H PFC tables with Linux 6.9.3
Marek Vasut [Tue, 18 Jun 2024 22:54:20 +0000 (00:54 +0200)]
pinctrl: renesas: Synchronize R-Car R8A779G0 V4H PFC tables with Linux 6.9.3

Synchronize R-Car R8A779G0 V4H PFC tables with Linux 6.9.3,
commit 1b4861e32e461b6fae14dc49ed0f1c7f20af5146 .

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agoclk: renesas: Synchronize R-Car R8A779H0 V4M clock tables with Linux 6.9.3
Marek Vasut [Tue, 18 Jun 2024 22:54:19 +0000 (00:54 +0200)]
clk: renesas: Synchronize R-Car R8A779H0 V4M clock tables with Linux 6.9.3

Synchronize R-Car R8A779H0 V4M clock tables with Linux 6.9.3,
commit 1b4861e32e461b6fae14dc49ed0f1c7f20af5146 .

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agoclk: renesas: Synchronize R-Car R8A779G0 V4H clock tables with Linux 6.9.3
Marek Vasut [Tue, 18 Jun 2024 22:54:18 +0000 (00:54 +0200)]
clk: renesas: Synchronize R-Car R8A779G0 V4H clock tables with Linux 6.9.3

Synchronize R-Car R8A779G0 V4H clock tables with Linux 6.9.3,
commit 1b4861e32e461b6fae14dc49ed0f1c7f20af5146 .

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agoclk: renesas: Synchronize R-Car R8A779F0 S4 clock tables with Linux 6.9.3
Marek Vasut [Tue, 18 Jun 2024 22:54:17 +0000 (00:54 +0200)]
clk: renesas: Synchronize R-Car R8A779F0 S4 clock tables with Linux 6.9.3

Synchronize R-Car R8A779F0 S4 clock tables with Linux 6.9.3,
commit 1b4861e32e461b6fae14dc49ed0f1c7f20af5146 .

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agoclk: renesas: Synchronize R-Car R8A779A0 V3U clock tables with Linux 6.9.3
Marek Vasut [Tue, 18 Jun 2024 22:54:16 +0000 (00:54 +0200)]
clk: renesas: Synchronize R-Car R8A779A0 V3U clock tables with Linux 6.9.3

Synchronize R-Car R8A779A0 V3U clock tables with Linux 6.9.3,
commit 1b4861e32e461b6fae14dc49ed0f1c7f20af5146 .

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agoclk: renesas: Synchronize R-Car R8A77951 H3 clock tables with Linux 6.9.3
Marek Vasut [Tue, 18 Jun 2024 22:54:15 +0000 (00:54 +0200)]
clk: renesas: Synchronize R-Car R8A77951 H3 clock tables with Linux 6.9.3

Synchronize R-Car R8A77951 H3 clock tables with Linux 6.9.3,
commit 1b4861e32e461b6fae14dc49ed0f1c7f20af5146 .

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agousb: Assimilate usb_get_descriptor() to linux
Philip Oberfichtner [Tue, 4 Jun 2024 10:18:11 +0000 (12:18 +0200)]
usb: Assimilate usb_get_descriptor() to linux

Before this commit, usb_get_descriptor() failed for some flakey USB
devices. We hereby adopt the more robust linux implementation [1].

For instance, for the "Alcor Micro Corp. Flash Drive" (VID 0x058f, PID
0x6387), the following behavior occurs from time to time:

=> usb start
starting USB...
Bus xhci_pci: Register 10000840 NbrPorts 16
Starting the controller
USB XHCI 1.20
scanning bus xhci_pci for devices... usb_new_device: Cannot read configuration, skipping device 058f:6387

Signed-off-by: Philip Oberfichtner <pro@denx.de>
Reviewed-by: Marek Vasut <marex@denx.de>
[1] From a38297e3fb012 (Linux 6.9), see
    https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/core/message.c?h=v6.9#n781

5 months agousb: xhci: Replace terrible formatting with different terrible formatting
Marek Vasut [Wed, 22 Nov 2023 23:50:52 +0000 (00:50 +0100)]
usb: xhci: Replace terrible formatting with different terrible formatting

Replace one type of terrible code formatting with a different
type of terrible code formatting. No functional change.

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Hector Martin <marcan@marcan.st>
5 months agoclk: imx: Fix wrong flags assignment clk-composite-93
Michael Trimarchi [Tue, 2 Jul 2024 10:26:18 +0000 (12:26 +0200)]
clk: imx: Fix wrong flags assignment clk-composite-93

The mux flags (u8), div flags (u8), and gate flags (u8)  are not the clk
flags (unsigned long). They have different meanings

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
5 months agoclk: imx: Fix wrong flags assignment clk-composite-8m
Michael Trimarchi [Tue, 2 Jul 2024 10:26:17 +0000 (12:26 +0200)]
clk: imx: Fix wrong flags assignment clk-composite-8m

The mux flags (u8), div flags (u8), and gate flags (u8)  are not the clk
flags (unsigned long). They have different meanings

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
5 months agoARM: imx: Update Fast ethernet PHY MDIO addresses to match DH i.MX8MP DHCOM rev.200
Marek Vasut [Thu, 27 Jun 2024 00:13:16 +0000 (02:13 +0200)]
ARM: imx: Update Fast ethernet PHY MDIO addresses to match DH i.MX8MP DHCOM rev.200

The production DH i.MX8MP DHCOM SoM rev.200 uses updated PHY MDIO addresses
for the Fast ethernet PHYs. Update the base SoM DT and SoM rev.100 backward
compatibility DTO to cater for this change.

Since the MDIO address adjustment is now also in the rev.100 SoM DTO, not
only in the rev.100 PDK3 DTO, update Makefile accordingly as well, else the
DTC would complain about the DTO overriding the 'reg' property without also
updating the node unit-address, which is not doable without duplicating the
entire PHY node in the DTO, which leads to large amount of duplication with
no gain.

Fixes: 9de599ec3d59 ("arm64: dts: imx8mp: Update i.MX8MP DHCOM SoM DT to production rev.200")
Signed-off-by: Marek Vasut <marex@denx.de>
5 months agoARM: imx: Enable PCA953x driver on DH i.MX8MP DHCOM PDK2
Marek Vasut [Thu, 27 Jun 2024 00:13:15 +0000 (02:13 +0200)]
ARM: imx: Enable PCA953x driver on DH i.MX8MP DHCOM PDK2

Enable PCA953x GPIO expander driver in DH i.MX8MP DHCOM PDK2 configuration.
The PCA9539 GPIO expander is used on production DH i.MX8MP DHCOM SoM rev.200.
This is already enabled in DH i.MX8MP DHCOM PDK3 configuration so align the
two configurations.

Fixes: 9de599ec3d59 ("arm64: dts: imx8mp: Update i.MX8MP DHCOM SoM DT to production rev.200")
Signed-off-by: Marek Vasut <marex@denx.de>
5 months agoARM: imx: Enable cat and xxd commands on DH i.MX8M Plus DHCOM
Marek Vasut [Thu, 27 Jun 2024 00:01:21 +0000 (02:01 +0200)]
ARM: imx: Enable cat and xxd commands on DH i.MX8M Plus DHCOM

Enable 'cat' command to print file from filesystem to stdout.
Enable 'xxd' command to hexdump file from filesystem to stdout.

Signed-off-by: Marek Vasut <marex@denx.de>
5 months agoARM: imx: verdin-imx8mm: Set CAN oscillator frequency based on model
Marek Vasut [Tue, 25 Jun 2024 08:26:15 +0000 (10:26 +0200)]
ARM: imx: verdin-imx8mm: Set CAN oscillator frequency based on model

The older i.MX8M Mini Verdin SoMs may came with 20 MHz SPI CAN controller
oscillator, the newer SoMs always use 40 MHz oscillator. Handle both by
overriding the oscillator frequency just before booting the kernel.

These are the known variants with 20 MHz oscillator:
- 0055, V1.1A, V1.1B, V1.1C and V1.1D, use a 20MHz oscillator
- 0059, V1.1A and V1.1B, use a 20MHz oscillator

Signed-off-by: Marek Vasut <marex@denx.de>
Reviewed-by: Francesco Dolcini <francesco.dolcini@toradex.com>
5 months agoMerge branch '2024-07-05-assorted-updates'
Tom Rini [Fri, 5 Jul 2024 22:36:43 +0000 (16:36 -0600)]
Merge branch '2024-07-05-assorted-updates'

- Re-instate the zlib update, so we can fix it for this release,
  assorted whitespace cleanups, allow mkimage to 'auto-conf' signing of
  scripts, enhance ELF image support, add more HW rev support to e1000
  driver, update am64x_evm config, correct mpc8xxx watchdog, update
  phycore-am6 docs.

5 months agoRevert "Revert "Merge patch series "zlib: Address CVE-2016-9841"""
Tom Rini [Fri, 5 Jul 2024 15:44:54 +0000 (09:44 -0600)]
Revert "Revert "Merge patch series "zlib: Address CVE-2016-9841"""

Now that the release has happened, bring back the update to zlib.

This reverts commit bbacdd3ef7762fbdeab43ceea5205d1fd0f25bbd.

Signed-off-by: Tom Rini <trini@konsulko.com>
5 months agowatchdog: mpc8xxx: Fix timer value
Christophe Leroy [Thu, 27 Jun 2024 08:26:08 +0000 (10:26 +0200)]
watchdog: mpc8xxx: Fix timer value

Timer value is a 16 bits calculated from the wanted timeout and the
system clock. On powerpc/8xx, a timeout of 2s gives a value which
is over U16_MAX so U16_MAX shall be used. But the calculation is
casted to u16 so at the end the result is 63770 instead of 128906.

So the timer gets loaded with 63770 instead of 65535. It is not
a big difference in that case, but lets make the code correct and
cast to u32 instead of u16.

Fixes: 26e8ebcd7cb7 ("watchdog: mpc8xxx: Make it generic")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
5 months agopci_ids: fix i225 unprogrammed value
Marjolaine Amate [Mon, 24 Jun 2024 19:49:07 +0000 (19:49 +0000)]
pci_ids: fix i225 unprogrammed value

This patch fixes the I225 hardware default value
at 0x15FD meaning empty flash image
or the NVM configuration loading failed

Signed-off-by: Marjolaine Amate <marjolaine.amate@odyssee-systemes.fr>
5 months agoe1000: add support for i226
Marjolaine Amate [Mon, 24 Jun 2024 19:15:32 +0000 (19:15 +0000)]
e1000: add support for i226

This patch adds support for Intel Foxville I226
devices LM,V,I,K in e1000 driver.

Signed-off-by: Marjolaine Amate <marjolaine.amate@odyssee-systemes.fr>
5 months agoFix Kconfig coding style from spaces to tab
Anand Moon [Sun, 23 Jun 2024 17:40:21 +0000 (23:10 +0530)]
Fix Kconfig coding style from spaces to tab

Adjust indentation from spaces to tab (+optional two spaces) as in
coding style with command like:
$ sed -e 's/^        /\t/' -i */Kconfig

Signed-off-by: Anand Moon <linux.amoon@gmail.com>
5 months agoconfigs: am64x_evm_a53_defconfig: Enable I2C GPIO drivers
Roger Quadros [Sun, 23 Jun 2024 07:41:19 +0000 (10:41 +0300)]
configs: am64x_evm_a53_defconfig: Enable I2C GPIO drivers

The board has the TCA9554 I2C GPIO expander chip for expansion
board presence detection logic.

Enable the relevant I2C GPIO drivers.

Signed-off-by: Roger Quadros <rogerq@kernel.org>
5 months agocmd: bootm: add ELF file support
Maxim Moskalets [Fri, 21 Jun 2024 11:42:10 +0000 (14:42 +0300)]
cmd: bootm: add ELF file support

Some operating systems (e.g. seL4) and embedded applications are ELF
images. It is convenient to use FIT-images to implement trusted boot.
Added "elf" image type for booting using bootm command.

Signed-off-by: Maxim Moskalets <maximmosk4@gmail.com>
5 months agomkimage: Allow 'auto-conf' signing of scripts
Alexander Dahl [Thu, 20 Jun 2024 14:20:59 +0000 (16:20 +0200)]
mkimage: Allow 'auto-conf' signing of scripts

U-Boot configured for verified boot with the "required" option set to
"conf" also checks scripts put in FIT images for a valid signature, and
refuses to source and run such a script if the signature for the
configuration is bad or missing.  Such a script could not be packaged
before, because mkimage failed like this:

    % tools/mkimage -T script -C none -d tmp/my.scr -f auto-conf -k tmp -g dev -o sha256,rsa4096 my.uimg
    Failed to find any images for configuration 'conf-1/signature'
    tools/mkimage Can't add hashes to FIT blob: -1
    Error: Bad parameters for FIT image type

This is especially unfortunate if LEGACY_IMAGE_FORMAT is disabled as
recommended.

Listing the script configuration in a "sign-images" subnode instead,
would have added even more complexity to the already complex auto fit
generation code.

Signed-off-by: Alexander Dahl <ada@thorsis.com>
5 months agodoc: board: phytec: phycore-am6: Describe UART based boot
Wadim Egorov [Thu, 20 Jun 2024 12:05:54 +0000 (14:05 +0200)]
doc: board: phytec: phycore-am6: Describe UART based boot

Describe how to boot via UART.

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
5 months agoconfigs: Remove duplicate newlines
Marek Vasut [Sun, 16 Jun 2024 15:19:11 +0000 (17:19 +0200)]
configs: Remove duplicate newlines

Drop all duplicate newlines from config headers.
No functional change.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
5 months agoMerge branch 'qcom-main' of https://source.denx.de/u-boot/custodians/u-boot-snapdragon
Tom Rini [Fri, 5 Jul 2024 16:22:53 +0000 (10:22 -0600)]
Merge branch 'qcom-main' of https://source.denx.de/u-boot/custodians/u-boot-snapdragon

Various minor fixes and improvements:

* Fix Qualcomm SPMI v5 support
* Move default environment to a file
* Add support for special pins (e.g ufs/mmc reset/data pins)
* IPQ moves to OF_UPSTREAM and receives some cleanup and MAINTAINERS
  changes
* Add a reset driver for devices without PSCI
* msm8916 USB clock improvements for mobile devices

5 months agoMerge branch 'staging' of https://source.denx.de/u-boot/custodians/u-boot-tegra
Tom Rini [Fri, 5 Jul 2024 14:09:23 +0000 (08:09 -0600)]
Merge branch 'staging' of https://source.denx.de/u-boot/custodians/u-boot-tegra

Branch contains minor improvemets for existing tegra devices along
with bring up of 4 new devices (ASUS Transformers T20, Microsoft
Surface RT, Lenovo Ideapad Yoga 11 and WEXLER Tab 7t).