]> git.dujemihanovic.xyz Git - u-boot.git/log
u-boot.git
8 months agorockchip: rk3588-toybrick: Add .dtb-file entry in Makefile
Jonas Karlman [Mon, 22 Apr 2024 06:28:57 +0000 (06:28 +0000)]
rockchip: rk3588-toybrick: Add .dtb-file entry in Makefile

Add Rockchip Toybrick TB-RK3588X .dtb-file entry in Makefile.

Fixes: 9fdd9a546986 ("board: rockchip: add Rockchip Toybrick TB-RK3588X board")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3588-toybrick: Use pinctrl and aliases in SPL
Jonas Karlman [Mon, 22 Apr 2024 06:28:56 +0000 (06:28 +0000)]
rockchip: rk3588-toybrick: Use pinctrl and aliases in SPL

Pinctrl must be configured for eMMC, SD-card and SPI flash to
successfully read FIT from all possible fallback media in SPL.

Include pinctrl props and enable the SPL_PINCTRL Kconfig option to
ensure FIT can be loaded from eMMC, SD-card and SPI flash.

Also enable the SPL_DM_SEQ_ALIAS Kconfig option to ensure that the
storage device sequence number matches in both SPL and U-Boot proper.

Fixes: 9fdd9a546986 ("board: rockchip: add Rockchip Toybrick TB-RK3588X board")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3588-coolpi: Fix .dtb-file entries in Makefile
Jonas Karlman [Mon, 22 Apr 2024 06:28:55 +0000 (06:28 +0000)]
rockchip: rk3588-coolpi: Fix .dtb-file entries in Makefile

Fix CoolPi 4 Model B and CoolPi CM5 EVB .dtb-file entries in Makefile.

Fixes: 3e15dee38d45 ("board: rockchip: Add support for rk3588 based Cool Pi CM5 EVB")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3588-coolpi: Add boards to documentation
Jonas Karlman [Mon, 22 Apr 2024 06:28:54 +0000 (06:28 +0000)]
rockchip: rk3588-coolpi: Add boards to documentation

Add the CoolPi 4 Model B and CoolPi CM5 EVB board to the documentation.

Fixes: 3e15dee38d45 ("board: rockchip: Add support for rk3588 based Cool Pi CM5 EVB")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3566-pinetab2: Fix reading FIT from SPI flash
Jonas Karlman [Mon, 22 Apr 2024 06:28:53 +0000 (06:28 +0000)]
rockchip: rk3566-pinetab2: Fix reading FIT from SPI flash

The SF_DEFAULT_SPEED Kconfig option got lost during merge and this
prevent reading FIT from SPI flash.

Restore the SF_DEFAULT_SPEED option to fix this.

Fixes: 8a94c376f6cb ("rockchip: Use common bss and stack addresses on RK356x")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3588-evb: Use pinctrl and aliases in SPL
Jonas Karlman [Mon, 22 Apr 2024 06:28:52 +0000 (06:28 +0000)]
rockchip: rk3588-evb: Use pinctrl and aliases in SPL

Pinctrl must be configured for eMMC, SD-card and SPI flash to
successfully read FIT from all possible fallback media in SPL.

Include pinctrl props and enable the SPL_PINCTRL Kconfig option to
ensure FIT can be loaded from eMMC, SD-card and SPI flash.

Also enable the SPL_DM_SEQ_ALIAS Kconfig option to ensure that the
storage device sequence number matches in both SPL and U-Boot proper.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3568-evb: Use pinctrl in SPL
Jonas Karlman [Mon, 22 Apr 2024 06:28:51 +0000 (06:28 +0000)]
rockchip: rk3568-evb: Use pinctrl in SPL

Pinctrl must be configured for eMMC, SD-card and SPI flash to
successfully read FIT from all possible fallback media in SPL.

Include pinctrl props and enable the SPL_PINCTRL Kconfig option to
ensure FIT can be loaded from eMMC, SD-card and SPI flash.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3588: Update bootph props
Jonas Karlman [Mon, 22 Apr 2024 06:28:50 +0000 (06:28 +0000)]
rockchip: rk3588: Update bootph props

After the commit aca95282c1b7 ("Makefile: Use the fdtgrep -u flag")
bootph props is propagating to parent nodes.

Update bootph props to ensure eMMC, SD-card and SPI flash is available
in SPL and U-Boot proper pre-reloc phase also remove unneeded bootph
props that automatically is propagated to parent nodes.

Also adjust pinctrl nodes to only be included in boot phases where they
are needed and add any missing pinctrl node needed in SPL.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk356x: Update bootph props
Jonas Karlman [Mon, 22 Apr 2024 06:28:49 +0000 (06:28 +0000)]
rockchip: rk356x: Update bootph props

After the commit aca95282c1b7 ("Makefile: Use the fdtgrep -u flag")
bootph props is propagating to parent nodes.

Update bootph props to ensure eMMC, SD-card and SPI flash is available
in SPL and U-Boot proper pre-reloc phase also remove unneeded bootph
props that automatically is propagated to parent nodes.

Also adjust pinctrl nodes to only be included in boot phases where they
are needed and add any missing pinctrl node needed in SPL.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk35xx: Sort soc u-boot.dtsi alphabetically
Jonas Karlman [Mon, 22 Apr 2024 06:28:48 +0000 (06:28 +0000)]
rockchip: rk35xx: Sort soc u-boot.dtsi alphabetically

Sort nodes and props in RK356x/RK3588 u-boot.dtsi alphabetically, nodes
is sorted by reg addr then by alphabetical order.

This has no intended change beside sorting existing nodes and removing
a duplicated usbdpphy0_grf node.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk356x: Imply enhanced features for standard boot
Jonas Karlman [Mon, 22 Apr 2024 06:28:47 +0000 (06:28 +0000)]
rockchip: rk356x: Imply enhanced features for standard boot

Imply BOOTSTD_FULL for all RK356x boards to more closely follow RK3588.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk35xx: Imply support for GbE PHY
Jonas Karlman [Mon, 22 Apr 2024 06:28:46 +0000 (06:28 +0000)]
rockchip: rk35xx: Imply support for GbE PHY

Imply support for GbE PHY status parsing and configuration when support
for onboard ethernet is enabled.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk35xx: Enable random generator
Jonas Karlman [Mon, 22 Apr 2024 06:28:45 +0000 (06:28 +0000)]
rockchip: rk35xx: Enable random generator

The RK35xx SoCs contain a crypto engine block that can generate random
numbers.

Enable rng node in soc u-boot.dtsi and enable Kconfig options to take
advantage of the random generator.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk35xx: Sort imply statements alphabetically
Jonas Karlman [Mon, 22 Apr 2024 06:28:44 +0000 (06:28 +0000)]
rockchip: rk35xx: Sort imply statements alphabetically

Sort imply statements under ROCKCHIP_RK3568 and ROCKCHIP_RK3588
alphabetically.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3566-anbernic-rgxx3: Remove SPL_ROCKCHIP_BACK_TO_BROM option
Jonas Karlman [Mon, 22 Apr 2024 06:28:43 +0000 (06:28 +0000)]
rockchip: rk3566-anbernic-rgxx3: Remove SPL_ROCKCHIP_BACK_TO_BROM option

SPL_ROCKCHIP_BACK_TO_BROM should normally only be enabled when BROM
should load U-Boot binary. SPL on Anbernic RGxx3 devices load TF-A and
U-Boot proper from FIT images and does never jump back to BROM from SPL.

Remove the superfluous Kconfig option from defconfig to align with other
RK356x boards.

This patch have no intended change in boot behavior.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3588: Drop REGULATOR_PWM Kconfig option
Jonas Karlman [Mon, 22 Apr 2024 06:28:42 +0000 (06:28 +0000)]
rockchip: rk3588: Drop REGULATOR_PWM Kconfig option

RK3588 boards do not have any pwm-regulator compatible nodes in DT, drop
the superfluous REGULATOR_PWM Kconfig options.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agoclk: rockchip: rk356x: Fix set rate of SCLK_SFC clock
Jonas Karlman [Mon, 22 Apr 2024 06:28:40 +0000 (06:28 +0000)]
clk: rockchip: rk356x: Fix set rate of SCLK_SFC clock

The SCLK_SFC can be set to a rate of 24, 50, 75, 100, 125 or 150 MHz.

However, clk_set_rate() will fail unless one of those exact rates are
used, and with newer and updated device tree files that contain
spi-max-frequency values that does not exactly match these rates use of
SPI flash may fail.

Fix this by using the highest possible rate that exceeds or is equal to
the requested rate.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agoclk: rockchip: rk3588: Add REF_CLK_USB3OTGx support
Jonas Karlman [Mon, 22 Apr 2024 06:28:39 +0000 (06:28 +0000)]
clk: rockchip: rk3588: Add REF_CLK_USB3OTGx support

The REF_CLK_USB3OTGx clocks is used as reference clock for USB3 block.

Add simple support to get rate of REF_CLK_USB3OTGx clocks to fix
reference clock period configuration.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Acked-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agoclk: rockchip: rk356x: Add CLK_USB3OTGx_REF support
Jonas Karlman [Mon, 22 Apr 2024 06:28:38 +0000 (06:28 +0000)]
clk: rockchip: rk356x: Add CLK_USB3OTGx_REF support

The CLK_USB3OTGx_REF clocks is used as reference clock for USB3 block.

Add simple support to get rate of CLK_USB3OTGx_REF clocks to fix
reference clock period configuration.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Acked-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Move cru and grf include files to arch-rockchip
Jonas Karlman [Mon, 8 Apr 2024 18:14:11 +0000 (18:14 +0000)]
rockchip: rk3308: Move cru and grf include files to arch-rockchip

Move cru_rk3308.h and grf_rk3308.h to arch-rockchip to match path used
for all other Rockchip SoCs.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308-rock-pi-s: Update defconfig
Jonas Karlman [Mon, 8 Apr 2024 18:14:10 +0000 (18:14 +0000)]
rockchip: rk3308-rock-pi-s: Update defconfig

Update defconfig for rk3308-rock-pi-s with new defaults.

Add OF_LIBFDT_OVERLAY=y to support device tree overlays.

Remove the SPL_DRIVERS_MISC=y option, no misc driver is used in SPL.

Remove BOOTDELAY=0, SYS_CONSOLE_INFO_QUIET=y and enable more CMD to
allow use of U-Boot cmdline.

Add DM_ETH_PHY=y and PHY_REALTEK=y to support onboard ethernet PHY.

Add PHY_ROCKCHIP_INNO_USB2=y, DM_USB_GADGET=y and remove USB_DWC2=y to
allow full use of USB 2.0 host and otg ports.

Enable EFI_LOADER to allow EFI boot.

Also fix use of USB 2.0 otg port by removing improper use of phy-supply
and regulator-always-on props.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308-roc-cc: Update defconfig
Jonas Karlman [Mon, 8 Apr 2024 18:14:09 +0000 (18:14 +0000)]
rockchip: rk3308-roc-cc: Update defconfig

Update defconfig for rk3308-roc-cc with new defaults.

Add OF_LIBFDT_OVERLAY=y to support device tree overlays.

Remove the SPL_DRIVERS_MISC=y option, no misc driver is used in SPL.

Remove BOOTDELAY=0, SYS_CONSOLE_INFO_QUIET=y and enable more CMD to
allow use of U-Boot cmdline.

Add DM_ETH_PHY=y and PHY_REALTEK=y to support onboard ethernet PHY.

Add PHY_ROCKCHIP_INNO_USB2=y, DM_USB_GADGET=y and remove USB_DWC2=y to
allow full use of USB 2.0 host and otg ports.

Enable EFI_LOADER to allow EFI boot.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308-evb: Update defconfig
Jonas Karlman [Mon, 8 Apr 2024 18:14:08 +0000 (18:14 +0000)]
rockchip: rk3308-evb: Update defconfig

Update defconfig for rk3308-evb with new defaults.

Add OF_LIBFDT_OVERLAY=y to support device tree overlays.

Remove the SPL_DRIVERS_MISC=y option, no misc driver is used in SPL.

Use DEBUG_UART_BASE=0xFF0E0000 and disable DEBUG_UART_BOARD_INIT to
make debug uart use uart4, same as stdout-path prop.

Remove BOOTDELAY=0, SYS_CONSOLE_INFO_QUIET=y and enable more CMD to
allow use of U-Boot cmdline.

Add DM_ETH_PHY=y and PHY_REALTEK=y to support onboard ethernet PHY.

Add PHY_ROCKCHIP_INNO_USB2=y, DM_USB_GADGET=y and remove USB_DWC2=y to
allow full use of USB 2.0 host and otg ports.

Enable EFI_LOADER to allow EFI boot.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Sync device tree from linux v6.8
Jonas Karlman [Mon, 8 Apr 2024 18:14:07 +0000 (18:14 +0000)]
rockchip: rk3308: Sync device tree from linux v6.8

Sync device tree from linux v6.8 and rename the rockchip,rk3308-mac
compatible in gmac_rockchip driver to match upstream linux.

Also move rk3308-roc-cc gmac node to u-boot.dtsi to not break features
not enabled in upstream device tree.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agophy: rockchip-inno-usb2: Add support for RK3308
Jonas Karlman [Mon, 8 Apr 2024 18:14:06 +0000 (18:14 +0000)]
phy: rockchip-inno-usb2: Add support for RK3308

Add clkout_ctl and phy_sus regs to support USB2PHY for RK3308.

Based on linux commit 31f840e7ff3e ("phy: phy-rockchip-inno-usb2: add
support for RK3308 USB phy").

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agoclk: rockchip: rk3308: Add dummy support for USB480M clock
Jonas Karlman [Mon, 8 Apr 2024 18:14:05 +0000 (18:14 +0000)]
clk: rockchip: rk3308: Add dummy support for USB480M clock

Add dummy support for setting parent of USB480M clock.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agoclk: rockchip: rk3308: Add support for SCLK_RTC32K clock
Finley Xiao [Mon, 8 Apr 2024 18:14:04 +0000 (18:14 +0000)]
clk: rockchip: rk3308: Add support for SCLK_RTC32K clock

Add support to get and set the SCLK_RTC32K clock rate.

Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
[jonas@kwiboo.se: Update commit message]
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Fix loading FIT from SD-card when booting from eMMC
Jonas Karlman [Mon, 8 Apr 2024 18:14:03 +0000 (18:14 +0000)]
rockchip: rk3308: Fix loading FIT from SD-card when booting from eMMC

When RK3308 boards run SPL from eMMC and fail to load FIT from eMMC due
to it being missing or checksum validation fails there can be a fallback
to read FIT from SD-card. However, without proper pinctrl configuration
reading FIT from SD-card may fail:

  U-Boot SPL 2024.04-rc4 (Mar 16 2024 - 12:36:12 +0000)
  Trying to boot from MMC2
  mmc_load_image_raw_sector: mmc block read error
  Trying to boot from MMC1
  Card did not respond to voltage select! : -110
  mmc_init: -95, time 12
  spl: mmc init failed with error: -95
  Trying to boot from MMC2
  mmc_load_image_raw_sector: mmc block read error
  SPL: failed to boot from all boot devices (err=-6)
  ### ERROR ### Please RESET the board ###

Fix this by tagging related emmc and sdmmc pinctrl nodes with bootph
props. Also sort and move common nodes shared by all boards to the SoC
u-boot.dtsi.

Imply SPL_PINCTRL and SPL_DM_SEQ_ALIAS to apply correct pinconf before
trying to load FIT from a device.

Move u-boot,spl-boot-order to soc u-boot.dtsi and define both sdmmc and
emmc nodes as fallback.

Also fix boot from eMMC (SD NAND) on ROCK Pi S by using correct pinctrl.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Enable random generator
Jonas Karlman [Mon, 8 Apr 2024 18:14:02 +0000 (18:14 +0000)]
rockchip: rk3308: Enable random generator

The RK3308 SoC contain a crypto engine block that can generate random
numbers.

Add rng node to soc u-boot.dtsi and enable Kconfig options to take
advantage of the random generator.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Generate ethaddr based on cpu id
Jonas Karlman [Mon, 8 Apr 2024 18:14:01 +0000 (18:14 +0000)]
rockchip: rk3308: Generate ethaddr based on cpu id

Like other Rockchip SoCs the RK3308 has cpu id programmed into OTP
memory. The rockchip_otp driver already support the RK3308 variant.
However, the device tree is missing a node to enable use of OTP.

Add the missing otp node to soc u-boot.dtsi, enable the rockchip_otp
driver and enable use of misc_init_r() to set ethaddr based on cpu id.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Enable ARMv8 crypto and FIT checksum validation
Jonas Karlman [Mon, 8 Apr 2024 18:14:00 +0000 (18:14 +0000)]
rockchip: rk3308: Enable ARMv8 crypto and FIT checksum validation

The RK3308 SoC support ARMv8 Cryptography Extensions and use of the
ARMv8 crypto extensions help speed up FIT checksum validation in SPL.

Imply ARMV8_SET_SMPEN and ARMV8_CRYPTO to take advantage of the crypto
extensions for SHA256 when validating checksum of FIT images.

Imply SPL_FIT_SIGNATURE and LEGACY_IMAGE_FORMAT to enable FIT checksum
validation on all RK3308 boards.

Also disable CONFIG_SPL_RAW_IMAGE_SUPPORT in board defconfigs to ensure
SPL does not try to jump to code that failed checksum validation.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: rk3308: Sort imply statements alphabetically
Jonas Karlman [Mon, 8 Apr 2024 18:13:59 +0000 (18:13 +0000)]
rockchip: rk3308: Sort imply statements alphabetically

Sort imply statements under ROCKCHIP_RK3308 alphabetically and remove
the config SPL_SERIAL statement from soc Kconfig file, it is already
implyed in arch Kconfig.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agoboard: rockchip: rk3308: Add device tree files and myself to MAINTAINERS
Jonas Karlman [Mon, 8 Apr 2024 18:13:58 +0000 (18:13 +0000)]
board: rockchip: rk3308: Add device tree files and myself to MAINTAINERS

Update MAINTAINERS files for RK3308 boards to include related device
tree files. Also add myself as a reviewer for the ROCK Pi S board.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: spl-boot-order: show DT path for missing device
Christopher Obbard [Thu, 14 Mar 2024 11:57:55 +0000 (11:57 +0000)]
rockchip: spl-boot-order: show DT path for missing device

When debugging the SPL boot order, the node ID of a device which hasn't
been found is printed but it can be quite hard to relate that to the
specific devicetree node. To aid debugging, print the node path instead of
the cryptic node ID.

Original debug message:

    board_boot_order: could not map node @73c to a boot-device

With this patch applied this becomes e.g:

   board_boot_order: could not map node /spi@ff1d0000/flash@0 to a boot-device

Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
Reviewed-by: Philipp Tomsich <philipp.tomsich@vrull.eu>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
8 months agorockchip: spl-boot-order: fix typo in comment succes→success
Christopher Obbard [Thu, 14 Mar 2024 11:57:54 +0000 (11:57 +0000)]
rockchip: spl-boot-order: fix typo in comment succes→success

Fix a simple spelling mistake in a comment.

Reviewed-by: Dragan Simic <dsimic@manjaro.org>
Reviewed-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Signed-off-by: Christopher Obbard <chris.obbard@collabora.com>
8 months agorockchip: ringneck-px30: put STM32_RST line in input mode instead of output
Quentin Schulz [Fri, 9 Feb 2024 13:18:09 +0000 (14:18 +0100)]
rockchip: ringneck-px30: put STM32_RST line in input mode instead of output

The STM32_RST line is routed to the ATtiny microcontroller
PA0/RESET/UPDI pin. By driving the PX30 SoC pin as GPIO output high, we
prevent external UPDI to be used for flashing without first putting this
pin as GPIO input, an extra step we could avoid in userspace.

There's an external hardware pull-up strong enough to keep the STM32_RST
state high on ATtiny side but weak enough it can be overridden by
external UPDI. This also means it is safe to use for the STM32 variant,
where STM32_RST line will be in the same state as if output high was
used.

The Q7 standard specifies that MFG_NC1 and MFG_NC2 (used for UPDI for
Ringneck) pins should neither be driven by the carrierboard, nor have
pull-up or pull-down resistors. This means this commit is safe to use
regardless of the carrierboard this module would be connected to
(provided it follows the Q7 standard).

Fixes: 6acdd63e8771 ("rockchip: ringneck-px30: always reset STM32 companion controller on boot")
Cc: Quentin Schulz <foss+uboot@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
8 months agorockchip: spl: Add SPI NOR flash to boot_devices array
Jonas Karlman [Fri, 22 Mar 2024 20:50:22 +0000 (20:50 +0000)]
rockchip: spl: Add SPI NOR flash to boot_devices array

Add missing boot source id <-> device tree node path mapping for SPI NOR
flash on PX30, RK3288, RK3308, RK3368 and RV1126.

Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
8 months agorockchip: spl: Cache boot source id for later use
Jonas Karlman [Fri, 22 Mar 2024 20:50:21 +0000 (20:50 +0000)]
rockchip: spl: Cache boot source id for later use

Rockchip BROM writes a boot source id at CFG_IRAM_BASE + 0x10, this id
indicates from what storage media TPL/SPL was loaded from.

SPL uses this id to determine what device "same-as-spl" represent when
determining from where FIT should be loaded. This works as long as the
boot_devices array contain a matching id <-> node path entry.

However, SPL typically load a small part of TF-A into SRAM and on RK3399
this overwrites the CFG_IRAM_BASE + 0x10 addr used for boot source id.

For affected devices the u-boot,spl-boot-device would not be set when
booting from SPI flash and the flash@0 node was not explicitly listed
in the u-boot,spl-boot-order prop.

Here boot source id is 3 before FIT images is loaded, and 0 after:

  U-Boot SPL 2024.04-rc4 (Mar 15 2024 - 17:26:19 +0000)
  board_spl_was_booted_from: brom_bootdevice_id 3 maps to '/spi@ff1d0000/flash@0'
  Trying to boot from SPI
  ## Checking hash(es) for config config-1 ... OK
  ## Checking hash(es) for Image atf-1 ... sha256+ OK
  ## Checking hash(es) for Image u-boot ... sha256+ OK
  ## Checking hash(es) for Image fdt-1 ... sha256+ OK
  ## Checking hash(es) for Image atf-2 ... sha256+ OK
  ## Checking hash(es) for Image atf-3 ... sha256+ OK
  board_spl_was_booted_from: failed to resolve brom_bootdevice_id 0
  spl_decode_boot_device: could not find udevice for /mmc@fe330000
  spl_decode_boot_device: could not find udevice for /mmc@fe320000
  spl_perform_fixups: could not map boot_device to ofpath: -19

Use a static brom_bootsource_id_cache to save the boot source id after
an initial read from SRAM to fix this, this allow spl_perform_fixups()
to resolve correct boot source path for "same-as-spl" after SPL have
loaded TF-A related FIT images into memory.

With this the spl-boot-device prop can correctly be resolved to the
SPI flash node in the control FDT:

  => fdt addr ${fdtcontroladdr}
  Working FDT set to f1ee6710
  => fdt list /chosen
  chosen {
      u-boot,spl-boot-device = "/spi@ff1d0000/flash@0";
      stdout-path = "serial2:1500000n8";
      u-boot,spl-boot-order = "same-as-spl", "/mmc@fe330000", "/mmc@fe320000";
  };

Fixes: d57e16c7e712 ("rockchip: find U-boot proper boot device by inverting the logic that sets it")
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
8 months agorockchip: bootrom: Sync bootsource id enum from bootrom
Jason Zhu [Fri, 22 Mar 2024 20:50:20 +0000 (20:50 +0000)]
rockchip: bootrom: Sync bootsource id enum from bootrom

Add more bootsource id:
1. BROM_BOOTSOURCE_UNKNOWN
2. BROM_BOOTSOURCE_I2C
3. BROM_BOOTSOURCE_SPI

Signed-off-by: Jason Zhu <jason.zhu@rock-chips.com>
[jonas@kwiboo.se: Update commit message]
Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Dragan Simic <dsimic@manjaro.org>
8 months agoMerge tag 'fsl-qoriq-2024-4-24' of https://source.denx.de/u-boot/custodians/u-boot...
Tom Rini [Tue, 23 Apr 2024 23:53:06 +0000 (17:53 -0600)]
Merge tag 'fsl-qoriq-2024-4-24' of https://source.denx.de/u-boot/custodians/u-boot-fsl-qoriq

- move to OF_UPSTREAM for sl28

8 months agoMerge https://source.denx.de/u-boot/custodians/u-boot-snapdragon
Tom Rini [Tue, 23 Apr 2024 14:33:37 +0000 (08:33 -0600)]
Merge https://source.denx.de/u-boot/custodians/u-boot-snapdragon

Support is added for 5 new Qualcomm SoCs:

* QCM2290 and SM6115 are low and mid range SoCs used on the RB1 and RB2
  respectively. SM6115 is also used in some mid-range smartphones/tablets.
  Initial support includes buttons and USB (host and gadget).
* SM8250 is a flagship SoC from 2020 used on the RB5, as well as many flagship
  smartphones. The board can boot to a U-Boot prompt, but is missing regulators
  necessary for USB support.
* SM8550, and SM8650 are flagship mobile SoCs from 2023 and 2024
  respectively. Found on many high end smartphones.

In addition:

* Support is added for the Schneider HMIBSC board.
* mach-snapdragon switches to OF_UPSTREAM
* IPQ40xx gets several regressions fixed and some overall cleanup.
* The MSM serial driver gains the ability to generate the bit-clock
  automatically, no longer relying on a custom DT property.
* The Qualcomm SMMU driver gets a generic compatible (so per-SoC compatibles
  don't need to be added).
* Support for the GENI I2C controller is added.
* The qcom SPMI driver has SPMI v5 support fixed, and v7 support added.
* The qcom sdhci driver gets some fixes for SDCC v5 support.
* SDM845 gains sdcard support
* Support is added for the Synopsys eUSB2 PHY driver (used on SM8550 and SM8650)
* SYS_INIT_SP_BSS_OFFSET is set to 1.5M to give us more space for FDTs.
* RB2 gets a work-around to fix the USB dr_mode property before booting Linux.

8 months agoboard: sl28: move to OF_UPSTREAM
Michael Walle [Wed, 6 Mar 2024 16:19:11 +0000 (17:19 +0100)]
board: sl28: move to OF_UPSTREAM

Use the new device devicetree files in dts/upstream/ and delete the old
ones. Still keep the -u-boot.dtsi with all u-boot specifics around.

There is one catch and that is fsl-ls1028a-kontron-sl28-var3.dts which
is not available upstream (yet!). For now, the base dts is used for this
variant as this only differ in the compatible and the (human readable)
model name.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
8 months agoconfigs: qcom_defconfig: enable GENI I2C Driver
Neil Armstrong [Mon, 22 Apr 2024 09:33:53 +0000 (11:33 +0200)]
configs: qcom_defconfig: enable GENI I2C Driver

Enable the GENI I2C driver in the default Qualcomm defconfig.

Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoi2c: Add support for Qualcomm Generic Interface (GENI) I2C controller
Neil Armstrong [Mon, 22 Apr 2024 09:33:52 +0000 (11:33 +0200)]
i2c: Add support for Qualcomm Generic Interface (GENI) I2C controller

Add Support for the Qualcomm Generic Interface (GENI) I2C interface
found on newer Qualcomm SoCs.

The Generic Interface (GENI) is a firmware based Qualcomm Universal
Peripherals (QUP) Serial Engine (SE) Wrapper which can support multiple
bus protocols depending on the firmware type loaded at early boot time
based on system configuration.

It also supports the "I2C Master Hub" which is a single function Wrapper
that only FIFO mode I2C.

It replaces the fixed-function QUP Wrapper found on older SoCs.

The geni-se.h containing the generic GENI Serial Engine registers defines
is imported from Linux.

Only FIFO mode is implemented, neither SE DMA nor GPI DMA are implemented.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: generate SMBIOS tables
Caleb Connolly [Thu, 18 Apr 2024 17:25:52 +0000 (18:25 +0100)]
qcom_defconfig: generate SMBIOS tables

EFI initialisation fails without this, and with proper SMBIOS v3 support
in (and automatic generation of useful tables) there's no reason for us
not to do this on qcom platforms.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: define safe default SYS_LOAD_ADDR
Caleb Connolly [Thu, 18 Apr 2024 17:25:51 +0000 (18:25 +0100)]
qcom_defconfig: define safe default SYS_LOAD_ADDR

Defining this as 0 results in bootm causing a null pointer exception...
Define it at a safe default which is valid RAM on most qcom boards.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: enable OF_BOARD_SETUP
Caleb Connolly [Thu, 18 Apr 2024 17:25:50 +0000 (18:25 +0100)]
qcom_defconfig: enable OF_BOARD_SETUP

Use our new ft_board_setup().

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agomach-snapdragon: implement ft_board_setup() for USB role selection
Caleb Connolly [Thu, 18 Apr 2024 17:25:49 +0000 (18:25 +0100)]
mach-snapdragon: implement ft_board_setup() for USB role selection

Some Qualcomm boards have only one USB controller which is muxed between
the type-c port and an internal USB hub for type-A and ethernet. We
modify the DT for these to force them to host mode in U-Boot. However in
Linux DRD role switching is supported (required, even). Use
ft_board_setup() to adjust the dr_mode property for these boards.

While we're here, define pr_fmt for this file so we can more easily
identify log messages.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoarm: dts: qrb4210-rb2-u-boot: add u-boot fixups
Caleb Connolly [Thu, 18 Apr 2024 17:25:48 +0000 (18:25 +0100)]
arm: dts: qrb4210-rb2-u-boot: add u-boot fixups

Add a fixup to force dr_mode to host for U-Boot.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agophy: qcom: snps-femto-v2: drop clocks
Caleb Connolly [Thu, 18 Apr 2024 17:25:47 +0000 (18:25 +0100)]
phy: qcom: snps-femto-v2: drop clocks

There is a clock associated with this phy, but it's always from the
rpmhcc and isn't actually needed for the hardware to work.

Drop all the clock handling from the driver.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoiommu: qcom-smmu: add qcom generic compatible
Caleb Connolly [Thu, 18 Apr 2024 17:25:46 +0000 (18:25 +0100)]
iommu: qcom-smmu: add qcom generic compatible

With the exception of SDM845, most other Qualcomm SoCs have the Qualcomm
specific (but not SoC) specific SMMU compatible string. Add it here so
we can match those without having to add individual SoCs to the list
here.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agogpio: qcom_pmic: add pm8150l
Caleb Connolly [Thu, 18 Apr 2024 17:25:45 +0000 (18:25 +0100)]
gpio: qcom_pmic: add pm8150l

This is used for the volume keys on some SM8150/SM8250 devices.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agogpio: qcom_pmic: add pm6125
Caleb Connolly [Thu, 18 Apr 2024 17:25:44 +0000 (18:25 +0100)]
gpio: qcom_pmic: add pm6125

As with some other modern PMICs, writing to the GPIOs seems to make the
device reset.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agospmi: msm: support controller version 7
Neil Armstrong [Fri, 5 Apr 2024 08:21:56 +0000 (10:21 +0200)]
spmi: msm: support controller version 7

Add the defines and support for SPMI arbiters version 7,
which can handle up to 1024 peripherals, and can also drive
a secondary bus which is not implemented yet.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Acked-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agospmi: msm: handle peripheral ownership
Neil Armstrong [Fri, 5 Apr 2024 08:21:55 +0000 (10:21 +0200)]
spmi: msm: handle peripheral ownership

The cnfg registers provides the owner id for each peripheral,
so we can use this id to check if we're allowed to write register
to each peripherals.

Since the v5 can handle more peripherals, add the max_channels to
scan more starting from version 5, make the channel_map store
32bit values and introduce the SPMI_CHANNEL_READ_ONLY flag to
mark a peripheral as read-only.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Acked-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agospmi: msm: properly format command
Neil Armstrong [Fri, 5 Apr 2024 08:21:54 +0000 (10:21 +0200)]
spmi: msm: properly format command

Since version 2, the cmd format has changed, takes helpers
from Linux driver and use a switch/case to handle all
versions in msm_spmi_write/read() command.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Acked-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agospmi: msm: fix version 5 support
Neil Armstrong [Fri, 5 Apr 2024 08:21:53 +0000 (10:21 +0200)]
spmi: msm: fix version 5 support

Properly use ch_offset in msm_spmi_write() reg access.

Fixes: f5a2d6b4b03 ("spmi: msm: add arbiter version 5 support")
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Acked-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoboard: add support for Schneider HMIBSC board
Sumit Garg [Fri, 12 Apr 2024 09:54:38 +0000 (15:24 +0530)]
board: add support for Schneider HMIBSC board

Support for Schneider Electric HMIBSC. Features:
- Qualcomm Snapdragon 410C SoC - APQ8016 (4xCortex A53, Adreno 306)
- 2GiB RAM
- 64GiB eMMC, SD slot
- WiFi and Bluetooth
- 2x Host, 1x Device USB port
- HDMI
- Discrete TPM2 chip over SPI

Features enabled in U-Boot:
- RAUC updates
- Environment protection
- USB based ethernet adaptors

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoarm: dts: qcom: Add Schneider HMIBSC board dts
Sumit Garg [Fri, 12 Apr 2024 09:54:37 +0000 (15:24 +0530)]
arm: dts: qcom: Add Schneider HMIBSC board dts

Schneider HMIBSC board dts has already been reviewed upstream on the
linux-arm-msm mailing list. So once it comes through the Linux kernel
release cycle into the U-Boot dts/upstream subtree, a switch to
OF_UPSTREAM can be made. For the time being maintain the U-Boot copy.

Link: https://lore.kernel.org/linux-kernel/20240403043416.3800259-4-sumit.garg@linaro.org/
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: apq8016: Add GPIO pinctrl function
Sumit Garg [Fri, 12 Apr 2024 09:54:36 +0000 (15:24 +0530)]
pinctrl: qcom: apq8016: Add GPIO pinctrl function

Add GPIO pinctrl function to enable driving GPIO pins as output low or
high.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: Add support for driving GPIO pins output
Sumit Garg [Fri, 12 Apr 2024 09:54:35 +0000 (15:24 +0530)]
pinctrl: qcom: Add support for driving GPIO pins output

Add support for driving the GPIO pins as output low or high.

Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoserial_msm: Enable RS232 flow control
Sumit Garg [Fri, 12 Apr 2024 09:54:34 +0000 (15:24 +0530)]
serial_msm: Enable RS232 flow control

SE HMIBSC board debug console requires RS232 flow control, so enable
corresponding support if RS232 gpios are present.

Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoapq8016: Add support for UART1 clocks and pinmux
Sumit Garg [Fri, 12 Apr 2024 09:54:33 +0000 (15:24 +0530)]
apq8016: Add support for UART1 clocks and pinmux

SE HMIBSC board uses UART1 as the main debug console, so add
corresponding clocks and pinmux support. Along with that update
instructions to enable clocks for debug UART support.

Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom: Don't enable LINUX_KERNEL_IMAGE_HEADER by default
Sumit Garg [Fri, 12 Apr 2024 09:54:32 +0000 (15:24 +0530)]
qcom: Don't enable LINUX_KERNEL_IMAGE_HEADER by default

Enabling LINUX_KERNEL_IMAGE_HEADER by default doesn't allow
ENABLE_ARM_SOC_BOOT0_HOOK to work properly on db410c when U-Boot is
loaded as a first stage bootloader. It leads to secondary CPUs bringup
failure and later causing the Linux kernel to freeze.

So fix it via selectively enabling LINUX_KERNEL_IMAGE_HEADER where it's
actually required.

Fixes: 059d526af312 ("mach-snapdragon: generalise board support")
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: ipq4019: support all pin functions
Robert Marko [Mon, 22 Apr 2024 11:43:28 +0000 (13:43 +0200)]
pinctrl: qcom: ipq4019: support all pin functions

Currently, IPQ4019 pinctrl driver supports only a very limited number of
pin functions and is not fully DT compatible with Linux pinctrl nodes.

IPQ40xx SoC-s sometimes use different pin function numbers for the same
function depending on the pin number, so for example I2C0 on GPIO58 uses
function number 3 while on GPIO59 it uses function number 2.

So, in order to make the driver compatible with upstream DTS to avoid the
need to patch the pinctrl nodes in U-Boot and support all of the missing
pin functions lets rework the driver based on upstream Linux IPQ4019
pinctrl driver and the pending SM8150 U-Boot pinctrl driver which also uses
different function numbers pased on the exact pin number.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: ipq4019: enable DM_FLAG_PRE_RELOC
Robert Marko [Mon, 22 Apr 2024 11:43:27 +0000 (13:43 +0200)]
pinctrl: qcom: ipq4019: enable DM_FLAG_PRE_RELOC

If compiled with logging and debug UART support, the following is printed:
serial_msm serial@78af000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19

This is due to the fact that IPQ4019 pinctrl driver is not available prior
to relocation and thus MSM serial will fail probing as pinctrl provider is
not available.

So, lets enable DM_FLAG_PRE_RELOC for IPQ4019 pinctrl to fix this.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: ipq4019: adapt pin name lookup to upstream DTS
Robert Marko [Mon, 22 Apr 2024 11:43:26 +0000 (13:43 +0200)]
pinctrl: qcom: ipq4019: adapt pin name lookup to upstream DTS

We want to use OF_UPSTREAM on IPQ40XX as its well supported upstream, so
as a preparation update pinctrl driver to look for the upstream pin format.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agomach-ipq40xx: import GPIO header from mach-snapgradon
Robert Marko [Mon, 22 Apr 2024 11:43:25 +0000 (13:43 +0200)]
mach-ipq40xx: import GPIO header from mach-snapgradon

Pinctrl driver was refactored and moved, but the required header that
it depends on was not included.

Fixes: 24d2908e987a ("pinctrl: qcom: move ipq4019 driver from mach-ipq40xx")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: allow selecting with ARCH_IPQ40XX
Robert Marko [Mon, 22 Apr 2024 11:43:24 +0000 (13:43 +0200)]
pinctrl: qcom: allow selecting with ARCH_IPQ40XX

IPQ4019 pinctrl driver was moved to the dedicated Qualcomm pinctrl
directory, but the KConfig depends on ARCH_SNAPDRAGON only and thus
PINCTRL_QCOM_IPQ4019 cannot be selected when ARCH_IPQ40XX is used.

Fixes: 24d2908e987a ("pinctrl: qcom: move ipq4019 driver from mach-ipq40xx")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoarm: mach-ipq40xx: dont select SMEM by default
Robert Marko [Thu, 18 Apr 2024 09:17:00 +0000 (11:17 +0200)]
arm: mach-ipq40xx: dont select SMEM by default

IPQ40xx SoC-s dont have proper SMEM support like more modern Qualcomm
SoC-s so there is no point in selecting the required drivers.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: set SYS_INIT_SP_BSS_OFFSET
Caleb Connolly [Thu, 18 Apr 2024 17:24:11 +0000 (18:24 +0100)]
qcom_defconfig: set SYS_INIT_SP_BSS_OFFSET

Give us lots of room for the appended FDT.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoarm: dts: drop qcom dts files
Caleb Connolly [Thu, 18 Apr 2024 17:24:10 +0000 (18:24 +0100)]
arm: dts: drop qcom dts files

These files are all identical (or older) than those in dts/upstream.
Drop them as we now use upstream DTS files with OF_UPSTREAM.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agomach-snapdragon: use OF_UPSTREAM
Caleb Connolly [Thu, 18 Apr 2024 17:24:09 +0000 (18:24 +0100)]
mach-snapdragon: use OF_UPSTREAM

Switch to using upstream DT from dts/upstream.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoserial: msm: calculate bit clock divider
Caleb Connolly [Mon, 15 Apr 2024 15:03:40 +0000 (16:03 +0100)]
serial: msm: calculate bit clock divider

The driver currently requires the bit clock divider be hardcoded in
devicetree (or use the hardcoded default from apq8016).

The bit clock divider is used to derive the baud rate from the core
clock:

  baudrate = clk_rate / csr_div

clk_rate is the actual programmed core clock rate which is returned by
clk_set_rate(), and this UART driver only supports a baudrate of 115200.
We can therefore determine the appropriate value for UARTDM_CSR by
iterating over the possible values and finding the one where the
equation above holds true for a baudrate of 115200.

Implement this logic and drop the non-standard DT bindings for this
driver.

Tested on dragonboard410c.

Tested-by: Robert Marko <robert.marko@sartura.hr>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk/qcom: ipq4019: return valid rate when setting UART clock
Caleb Connolly [Mon, 15 Apr 2024 15:03:39 +0000 (16:03 +0100)]
clk/qcom: ipq4019: return valid rate when setting UART clock

clk_set_rate() should return the clock rate that was set. The IPQ4019
clock driver doesn't set any rates yet but it should still return the
expected value so that drivers can work properly.

For a baud rate of 115200 with an expected bit clock divisor of 16, the
clock rate should be 1843200 so return that frequency.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk/qcom: apq8016: return valid rate when setting UART clock
Caleb Connolly [Mon, 15 Apr 2024 15:03:38 +0000 (16:03 +0100)]
clk/qcom: apq8016: return valid rate when setting UART clock

The clk_init_uart() helper always returns 0, but we're meant to return a
real clock rate. Given that we hardcode 115200 baud, just return the
clock rate that we set.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoserial: msm_serial: remove .clk_rate from debug UART
Robert Marko [Mon, 15 Apr 2024 10:49:26 +0000 (12:49 +0200)]
serial: msm_serial: remove .clk_rate from debug UART

MSM serial in DEBUG UART mode is trying to set .clk_rate, but the
msm_serial_data structure does not have such property at all, so lets
remove it as otherwise it will fail compiling.

Fixes: 90023bdfe979 ("serial: msm: add debug UART")
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoserial: allow selecting MSM debug UART with ARCH_IPQ40XX
Robert Marko [Mon, 15 Apr 2024 10:49:25 +0000 (12:49 +0200)]
serial: allow selecting MSM debug UART with ARCH_IPQ40XX

Currently, DEBUG_UART_MSM depends on ARCH_SNAPDRAGON only, but IPQ40XX
devices also use the same UART HW so they can also use the debug UART.

So, allow selecting DEBUG_UART_MSM when using ARCH_IPQ40XX as well.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agommc: msm_sdhci: fix vendor_spec_cap0 registers
Caleb Connolly [Fri, 12 Apr 2024 18:10:21 +0000 (20:10 +0200)]
mmc: msm_sdhci: fix vendor_spec_cap0 registers

The addresses were mistakenly swapped. Put them right.

Reported-by: Sumit Garg <sumit.garg@linaro.org>
Fixes: a737d8962cae ("mmc: msm_sdhci: correct vendor_spec_cap0 register for v5")
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoMAINTAINERS: add Qualcomm mailing list
Caleb Connolly [Tue, 9 Apr 2024 15:02:51 +0000 (17:02 +0200)]
MAINTAINERS: add Qualcomm mailing list

Add the newly created u-boot-qcom mailing list to keep track of Qualcomm
patches.

Additionally, link to the U-Boot Snapdragon custodian tree.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agomach-snapdragon: Allow other board vendors apart from Qcom
Sumit Garg [Thu, 11 Apr 2024 12:37:26 +0000 (18:07 +0530)]
mach-snapdragon: Allow other board vendors apart from Qcom

Qcom SoCs derived boards can come from various OEMs/ODMs and not just
Qcom itself. So allow CONFIG_SYS_VENDOR to be set correctly
corressponding to the actual board vendor.

Suggested-by: Stephan Gerhold <stephan@gerhold.net>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: enable SM8550 & SM8650 clock driver
Neil Armstrong [Thu, 4 Apr 2024 16:46:40 +0000 (18:46 +0200)]
qcom_defconfig: enable SM8550 & SM8650 clock driver

Enable the SM8550 & SM8650 clock driver in the Qualcomm defconfig.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk: qcom: Add SM8650 clock driver
Neil Armstrong [Thu, 4 Apr 2024 16:46:39 +0000 (18:46 +0200)]
clk: qcom: Add SM8650 clock driver

Add the GCC and TCSRCC clock driver for the SM8650 SoC.

The GCC driver uses the clk-qcom infrastructure to support GDSCs,
Resets and gates. While the TCSRCC is a simpler clock driver which
only supports gates.

The GCC enable and set_rate callbacks contains some tweaks to
setup clocks for Debug UART, SDCard controller and USB.

The TCSRCC gates returns the XO frequency, which is used by the
Synopsys eUSB2 driver to determine the PHY configuration.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk: qcom: Add SM8550 clock driver
Neil Armstrong [Thu, 4 Apr 2024 16:46:38 +0000 (18:46 +0200)]
clk: qcom: Add SM8550 clock driver

Add the GCC and TCSRCC clock driver for the SM8550 SoC.

The GCC driver uses the clk-qcom infrastructure to support GDSCs,
Resets and gates. While the TCSRCC is a simpler clock driver which
only supports gates.

The GCC enable and set_rate callbacks contains some tweaks to
setup clocks for Debug UART, SDCard controller and USB.

The TCSRCC gates returns the XO frequency, which is used by the
Synopsys eUSB2 driver to determine the PHY configuration.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agodts: sdm845-db845c-u-boot: adjust MMC clocks
Caleb Connolly [Tue, 9 Apr 2024 18:03:06 +0000 (20:03 +0200)]
dts: sdm845-db845c-u-boot: adjust MMC clocks

Remove the reference to the xo clock which is on the unsupported rpmhcc
clock controller. It isn't needed for MMC functionality.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: sdm845: add special pin names
Caleb Connolly [Tue, 9 Apr 2024 18:03:05 +0000 (20:03 +0200)]
pinctrl: qcom: sdm845: add special pin names

Adjust sdm845_get_pin_name() to return the correct names for the special
pins. This fixes a non-fatal -ENOSYS error when probing MMC.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk/qcom: sdm845: enable SDCC2 core clock
Caleb Connolly [Tue, 9 Apr 2024 18:03:04 +0000 (20:03 +0200)]
clk/qcom: sdm845: enable SDCC2 core clock

Allow setting the clock rate for the SD card core clock. This is
required for SD card support on SDM845 devices.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agommc: msm_sdhci: use a more sensible default clock rate
Caleb Connolly [Tue, 9 Apr 2024 18:03:03 +0000 (20:03 +0200)]
mmc: msm_sdhci: use a more sensible default clock rate

We currently default to the lowest rate but this actually doesn't work
on most platforms. Default to the HS400 speed instead which is most
common on Qualcomm platforms.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agommc: msm_sdhci: print core version
Caleb Connolly [Tue, 9 Apr 2024 18:03:02 +0000 (20:03 +0200)]
mmc: msm_sdhci: print core version

This is useful for debugging.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agommc: msm_sdhci: use modern DT handling
Caleb Connolly [Tue, 9 Apr 2024 18:03:01 +0000 (20:03 +0200)]
mmc: msm_sdhci: use modern DT handling

using fdtdec_* functions is incompatible with OF_LIVE and generally
offers a less friendly interface. Update to use dev_read_* functions
instead.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agommc: msm_sdhci: correct vendor_spec_cap0 register for v5
Caleb Connolly [Tue, 9 Apr 2024 18:03:00 +0000 (20:03 +0200)]
mmc: msm_sdhci: correct vendor_spec_cap0 register for v5

The V4 and V5 controllers have quite varied register layouts. Inherit
the register offsets and naming from the Linux driver. More version
specific offsets can be inherited from Linux as needed.

Fixes: 364c22a ("mmc: msm_sdhci: Add SDCC version 5.0.0 support")
Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: enable clocks for qcm2290/sm6115/sm8250
Caleb Connolly [Mon, 8 Apr 2024 13:06:52 +0000 (15:06 +0200)]
qcom_defconfig: enable clocks for qcm2290/sm6115/sm8250

Enable three new clock drivers.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk/qcom: add driver for sm8250 GCC
Caleb Connolly [Mon, 8 Apr 2024 13:06:51 +0000 (15:06 +0200)]
clk/qcom: add driver for sm8250 GCC

Add a clock driver for the SM8250 SoC. This driver can enable necessary
clocks for UART, UFS, USB, and MMC.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk/qcom: add driver for sm6115 GCC
Caleb Connolly [Mon, 8 Apr 2024 13:06:50 +0000 (15:06 +0200)]
clk/qcom: add driver for sm6115 GCC

Add a driver for the clock controller in the SM6115 SoC, this is used in
the QRB4210 RB2 board.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoclk/qcom: add driver for qcm2290 GCC
Caleb Connolly [Mon, 8 Apr 2024 13:06:49 +0000 (15:06 +0200)]
clk/qcom: add driver for qcm2290 GCC

Add a clock driver for the QCM2290 SoC which is used in the QRB2210 RB1
board.

Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agobutton: qcom-pmic: add support for pmk8350 button configs
Neil Armstrong [Wed, 10 Apr 2024 15:59:45 +0000 (17:59 +0200)]
button: qcom-pmic: add support for pmk8350 button configs

Finally add the entries for the qcom,pmk8350-pwrkey and qcom,pmk8350-resin
found on PMICs used with SM8350 and later SoCs.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agobutton: qcom-pmic: move node name checks to btn_data struct
Neil Armstrong [Wed, 10 Apr 2024 15:59:44 +0000 (17:59 +0200)]
button: qcom-pmic: move node name checks to btn_data struct

Move node name checks to a proper data struct with all information
for the supported subnodes.

Replace the key offset defines with the Linux driver ones.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agogpio: qcom_pmic_gpio: add support for pm8550-gpio
Neil Armstrong [Wed, 10 Apr 2024 15:59:43 +0000 (17:59 +0200)]
gpio: qcom_pmic_gpio: add support for pm8550-gpio

Add support for PM8550 GPIO controller variant, keep read-only
until the GPIO and Pinctrl setup is fixed for new PMICs.

Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agoqcom_defconfig: enable pinctrl for new qcm2290/sm6115/sm8250
Caleb Connolly [Wed, 10 Apr 2024 17:52:39 +0000 (19:52 +0200)]
qcom_defconfig: enable pinctrl for new qcm2290/sm6115/sm8250

Enable the clock and pinctrl drivers for qcm2290, sm6115, and sm8250.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
8 months agopinctrl: qcom: add sm8250 pinctrl driver
Caleb Connolly [Wed, 10 Apr 2024 17:52:38 +0000 (19:52 +0200)]
pinctrl: qcom: add sm8250 pinctrl driver

This SoC features a pinctrl block with north, south, and west tiles
accessible to the AP.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>