Commit Graph

94362 Commits

Author SHA1 Message Date
Simon Glass
c50b6f18f3 qconfig: Move checking directory to the top
Move this check to the top, so it happens always. The tool should be
run from the U-Boot source directory.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
035ecb44ec qconfig: Move getting the colour to where it is needed
Move this assignment down to just above where it is needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
382c662c82 qconfig: Move arg checking to the top of main()
Check for 'test' as one of the possible operations for this tool,
moving the check above the implementation.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
fd385b3b01 qconfig: Move arg checking a little higher
Check for scan_source as one of the possible operations for this tool,
moving the check above the scan_source implementation.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
a056c4272c qconfig: Move arg parsing into a separate function
Reduce the size of main() by putting this code into its own function.
For now the parser object needs to be returned too.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
495e58c920 qconfig: Rename the doc link
This was missed during the renaming of the tool. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: ea4d6dead3 ("moveconfig: Rename the tool to qconfig")
2024-07-26 08:01:06 -06:00
Simon Glass
0e03fb1848 qconfig: Correct format string in do_imply_config()
One of the strings was converted incorrectly. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Fixes: 1bd43060b3 ("moveconfig: Use f strings where possible")
2024-07-26 08:01:06 -06:00
Simon Glass
f876e96f4c qconfig: Tidy up some pylint warnings
Reduce the number of warnings in this file a little bit.

Add my own name to the copyright message.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
0a0c124008 qconfig: Make KconfigScanner a function
This doesn't have any methods so is not good as a class. Make it a
function instead, to keep pylint happy.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
deedf65306 qconfig: Drop the try_expand() function
This is not used anymore, so drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:06 -06:00
Simon Glass
61d555d8a7 qconfig: Fix pylint error in read_database()
Fix this error by initing the variable before the loop:

tools/qconfig.py:880:22: E0606: Possibly using variable 'defconfig'
   before assignment (possibly-used-before-assignment)

Signed-off-by: Simon Glass <sjg@chromium.org>
2024-07-26 08:01:05 -06:00
Tom Rini
f4e163ece4 Merge branch 'qcom-main' of https://gitlab.denx.de/u-boot/custodians/u-boot-snapdragon
* Qualcomm platforms >~2016 gain support for the RPMh (Resource Power Manager)
  peripheral which is used to control most regulators. The RB5 is now able to
  power up its USB VBUS regulator via the rpmh regulator driver. Git history
  from the original Linux driver is preserved for ease of maintenance.
* IPQ40xx SoCs gain ethernet networking support via the new ESS EDMA driver.
2024-07-26 07:49:36 -06:00
Robert Marko
927739c0b7 arm: dts: add IPQ4019 ESS EDMA U-Boot additions
IPQ4019 ESS EDMA support is not yet in upstream Linux, so for now lets use
the latest pending Linux DTS node for wired networking.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2024-07-26 01:53:13 +02:00
Robert Marko
c4360954ef net: add Qualcomm ESS EDMA adapter
This adds the driver for the ESS EDMA ethernet adapter
found inside of Qualcomm IPQ40xx SoC series.

This driver also integrates the built in modified QCA8337N
switch support as they are tightly integrated.

Co-Developed-by: Gabor Juhos <j4g8y7@gmail.com>
Signed-off-by: Gabor Juhos <j4g8y7@gmail.com>
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
2024-07-26 01:53:12 +02:00
Robert Marko
13cb918769 clock: qcom: ipq4019: add missing networking resets
IPQ4019 has more networking related resets that will be required for future
wired networking support, so lets add them.

This syncs the driver with Linux.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:53:12 +02:00
Robert Marko
19ea72e489 dt-bindings: clock: qcom: ipq4019: drop downstream file
IPQ4019 clock dt-bindings are available in Linux upstream, and we can just
use those instead of carrying a downstream file that matches the upstream one
anyway.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
2024-07-26 01:53:12 +02:00
Robert Marko
6af8dae852 clock: qcom: ipq4019: add ESS clock
ESS clock is the Ethernet Subsystem clock, so lets add it as its
already configured by SBL1.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Reviewed-by: Caleb Connolly <caleb.connolly@linaro.org>
Reviewed-by: Sumit Garg <sumit.garg@linaro.org>
2024-07-26 01:53:11 +02:00
Caleb Connolly
d1b01d8502 qcom_defconfig: enable rpmh regulators
Enable RPMh, cmd-db, and RPMh regulators. Additionally enable
CMD_REGULATOR for debugging.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:41 +02:00
Caleb Connolly
426d35d24f power: regulator: qcom-rpmh-regulator: add build infra
Add Kconfig and Makefile entries for this driver now that it can build
for U-Boot.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:13 +02:00
Caleb Connolly
b501a65cd8 power: regulator: qcom-rpmh-regulator: adjust probe for U-Boot
Refactor initialization to use U-Boot's driver model and API.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
a330dec3af power: regulator: qcom-rpmh-regulator: port ops to U-Boot
Port over the regulator ops to U-Boot's regulator API. Add back the
pmic5 mode map using U-Boot dm_regulator_mode API and adjust the
pmic5_pldo and pmic5_pldo_lv definitions. No functional changes.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
be1f1b7b28 power: regulator: qcom-rpmh-regulator: remove unused regulators
Initially just include the few regulators needed for the RB5 board.
Others can be added back as-needed.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
e651b4f1f6 power: regulator: qcom-rpmh-regulator: adjust structs for U-Boot
Switch to our linear_range helpers and remove unused/unsupported
linux-isms.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
21c7b74a56 power: regulator: qcom-rpmh-regulator: port over lineage_range helpers
Import struct linear_range() and builder macro from Linux regulator
core.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
13bed6c903 power: regulator: qcom-rpmh-regulator: adjust headers for U-Boot
Remove unused/unsupported Linux headers and add necessary U-Boot ones.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
7d264b5a4c power: regulator: import qcom-rpmh-regulator from Linux
Import the driver from Linux 6.10-rc6.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:12 +02:00
Caleb Connolly
1384436dd8 soc: qcom: add build infrastructure
Add Kconfig / Makefiles to build rpmh and cmd-db drivers.

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:11 +02:00
Caleb Connolly
c6112dd247 soc: qcom: rpmh: U-Boot API changes
Fix build errors, add some debug logging.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:11 +02:00
Caleb Connolly
a726ea1140 soc: qcom: rpmh: drop unused functions
A lot of the features in here are only relevant when running
multi-threaded with interrupts. Drop everything except what we need to
run single-threaded with a single TCS (which is all the rpmh-rsc
framework in U-Boot supports).

Keep rpmh_write_async() for simplicity and make it wrap the regular
rpmh_write().

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:11 +02:00
Caleb Connolly
e5218206ce soc: qcom: rpmh: adjust headers for U-Boot
Drop unused/unsupported Linux headers and add dm/device.h for U-Boot.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:11 +02:00
Caleb Connolly
f55f7decdf soc: qcom: rpmh-rsc: remaining U-Boot API changes
Minor adjustments to fix building with U-Boot and work correctly as a
synchronous driver without interrupts. RPMh is fast enough that we can
get away with just firing off requests and assuming they complete.

U-Boot behaviour changes are annotated with a "U-Boot:" comment.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:11 +02:00
Caleb Connolly
3f02b06fbc soc: qcom: rpmh-rsc: adjust probe for U-Boot
Rework the rpmh-rsc initialization to use U-Boot's driver model and
initialize cmd-db.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:11 +02:00
Caleb Connolly
3b2f15f530 soc: qcom: rpmh-rsc: adjust headers for U-Boot
Remove unsupported / unused Linux headers and add those needed for
U-Boot.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
80c5be164a soc: qcom: rpmh-rsc: drop unused multi-threading and non-active TCS support
Since U-Boot is single threaded, we can avoid most of the complexity
that comes with handling more than one in-flight TCS. Drop all the rpmh
code associated with multi-threading as we'll instead wait for a
response on each TCS.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
fb0fd32a4d soc: qcom: cmd-db: adjust for U-Boot API
Keep the header pointer in the .data section so we don't initialize it
again after relocation, adjust cmd_db_get_header() to work with the
U-Boot API, and skip validating the header since all cmd-db users are
children of the rpmh-rsc and those children will only probe if cmd-db
initializes successfully.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
1a2df137aa soc: qcom: cmd-db: adjust probe for U-Boot
Integrate cmd-db into the U-Boot driver model.

This is just a wrapper around an in-memory database, so we just need to
get the address and validate that cmd-db is there.

Since cmd_db_header will be stored in the .data section we can skip
bind if it's already set.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
bb991ab7a9 soc: qcom: cmd-db: drop unused functions
Due to our simpler rpmh-rsc driver and lack of debugfs, we don't need
quite a few cmd-db functions, just drop them.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
5f791b8118 soc: qcom: cmd-db: adjust headers for U-Boot
Replace unused/unsupported Linux headers with appropriate U-Boot
alternatives.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
6716e2211f soc: qcom: import rpmh and cmd-db drivers from Linux
Import RPMh and cmd-db framework from Linux 6.10-rc6.

Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:10 +02:00
Caleb Connolly
555047df6a linux/bitmap.h: add bitmap_empty helper
Import this function from Linux as of 6.10-rc6

Reviewed-by: Tom Rini <trini@konsulko.com>
Acked-by: Sumit Garg <sumit.garg@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:09 +02:00
Caleb Connolly
1fbd0582a2 dm: core: scan reserved-memory nodes
Qualcomm platforms may have drivers that bind to reserved memory nodes
(cmd-db [1] and smem [2]) which are relevant to U-Boot. Include
/reserved-memory in dm_extended_scan() so that these will be handled
correctly.

[1]: https://www.kernel.org/doc/Documentation/devicetree/bindings/reserved-memory/qcom%2Ccmd-db.yaml
[2]: https://www.kernel.org/doc/Documentation/devicetree/bindings/soc/qcom/qcom%2Csmem.yaml

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
2024-07-26 01:28:09 +02:00
Tom Rini
2d4925a096 Merge branch 'master' of https://gitlab.denx.de/u-boot/custodians/u-boot-samsung 2024-07-25 09:14:29 -06:00
Sam Protsenko
2269217bbd arm: exynos: Enable TRNG on E850-96 board
Enable True Random Number Generator (TRNG) on E850-96 board. To do so:
  1. Enable DM_RNG and RNG_EXYNOS for TARGET_E850_96
  2. Add TRNG node to E850-96 device tree
  3. Enable 'rng' command support for easy TRNG testing

TRNG node is already applied in Linux kernel device tree, but it hasn't
appeared in upstream dts yet. Add it in U-Boot override dtsi file
temporarily; it can be removed once it appears in upstream dts.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-07-24 16:37:09 +09:00
Sam Protsenko
9344efc9bb rng: Add Exynos TRNG driver
Add True Random Number Generator (TRNG) driver for Exynos chips. This
implementation is heavily based on Linux kernel's counterpart [1]. It
also follows upstream dt-bindings [2].

TRNG block is usually a part of SSS (Security Sub System) IP-core on
Exynos chips. Because SSS access on Exynos850 is protected by TZPC
(TrustZone Protection Control), it's not possible to read/write TRNG
registers from U-Boot, as it's running in EL1 mode. Instead, the
corresponding SMC calls should be used to make the secure software
running in EL3 mode access it for us. Those SMC calls are handled by
LDFW (Loadable Firmware), which has to be loaded first. For example, for
E850-96 board it's done in its board_init(), so by the time RNG
capabilities are needed the LDFW should be already loaded and TRNG
should be functional.

[1] drivers/char/hw_random/exynos-trng.c
[2] dts/upstream/Bindings/rng/samsung,exynos5250-trng.yaml

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-07-24 16:37:09 +09:00
Sam Protsenko
95d8937d7c clk: exynos: Add SSS clocks for Exynos850
Add ACLK (operating clock) and PCLK (bus clock) for Security Sub System
(SSS) in Exynos850. Those clocks are needed for RNG enablement.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-07-24 16:37:09 +09:00
Sam Protsenko
f04e58cc97 board: samsung: e850-96: Load LDFW firmware on board init
LDFW is a Loadable Firmware which provides additional security
capabilities in EL3 monitor. For example, True Random Number Generator
(TRNG) block registers can't be accessed from EL1 (where U-Boot and
Linux kernel are running), but it's possible to access TRNG capabilities
via corresponding SMC calls, which in turn are handled by LDFW. To do
so, LDFW firmware has to be loaded first. It's stored on a raw eMMC
partition, so it has to be read into NWD (Normal World) RAM buffer, and
then loaded to SWD (Secure World) memory using the special SMC call to
EL3 monitor program. EL3_MON will load LDFW to SWD memory, more
specifically to the area starting at 0xbf700000 (with size of 7.5 MiB).
That memory area is reserved in device tree, so there shouldn't be any
collisions. After that LDFW becomes functional.

Implement LDFW firmware loading on board init. While at it, fix the
copyright date in header comments, as this board support was actually
added in 2024, not in 2020: it was probably a copy-paste mistake.

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-07-24 16:37:09 +09:00
Sam Protsenko
ac1a474b38 board: samsung: e850-96: Add default partitions
Add an environment file for E850-96 board with default eMMC partition
list. It follows the Samsung's partition list used for Android-Q on
Exynos850 devices. It was verified on E850-96 board with:

    => gpt verify mmc 0 "$partitions"
   Verify GPT: success!

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
2024-07-24 16:37:09 +09:00
Tom Rini
f659ba4383 Merge branch '2024-07-23-remove-or-update-some-platforms'
- Update a few platforms to use DM_I2C finally, and remove a number of
  other older platforms.
2024-07-23 10:43:58 -06:00
Anatolij Gustschin
3a63612c5f pxm2: switch to DM_I2C
Enable DM_I2C to avoid board removal warning.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Cc: Enrico Leto <enrico.leto@siemens.com>
2024-07-23 10:40:46 -06:00
Anatolij Gustschin
4beca13485 board: keymile: convert to CONFIG_DM_I2C
The conversion to DM_I2C is mandatory, rework to remove
use of legacy I2C API.

Signed-off-by: Anatolij Gustschin <agust@denx.de>
Cc: Aleksandar Gerasimovski <aleksandar.gerasimovski@hitachienergy.com>
Cc: Holger Brunck <holger.brunck@hitachienergy.com>
Cc: Tomas Alvarez Vanoli <tomas.alvarez-vanoli@hitachienergy.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heiko Schocher <hs@denx.de>
2024-07-23 10:38:20 -06:00