platform/kernel/u-boot.git
2 years agoMerge branch '2022-06-09-add-support-for-nvmem-api' into next
Tom Rini [Thu, 9 Jun 2022 19:20:11 +0000 (15:20 -0400)]
Merge branch '2022-06-09-add-support-for-nvmem-api' into next

To quote the author:
This adds support for the nvmem-cells properties cropping up in manyb
device trees. This is an easy way to load configuration, version
information, or calibration data from a non-volatile memory source. For
more information, refer to patch 6 ("misc: Add support for nvmem
cells").

For the moment I have only added some integration tests using the
ethernet addresses. This hits the main code paths (looking up nvmem
cells) but doesn't test writing. I can add a few stand-alone tests if
desired.

2 years agotest: Load mac address using misc device
Sean Anderson [Thu, 5 May 2022 17:11:44 +0000 (13:11 -0400)]
test: Load mac address using misc device

This loads a mac address using a misc device using the nvmem interface.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agotest: Load mac address using RTC
Sean Anderson [Thu, 5 May 2022 17:11:43 +0000 (13:11 -0400)]
test: Load mac address using RTC

This uses the nvmem API to load a mac address from an RTC.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agotest: Load mac address with i2c eeprom
Sean Anderson [Thu, 5 May 2022 17:11:42 +0000 (13:11 -0400)]
test: Load mac address with i2c eeprom

This uses an i2c eeprom to load a mac address using the nvmem interface.
Enable I2C_EEPROM for sandbox SPL since it is the only sandbox config
which doesn't enable it eeprom.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agonet: Add support for reading mac addresses from nvmem cells
Sean Anderson [Thu, 5 May 2022 17:11:41 +0000 (13:11 -0400)]
net: Add support for reading mac addresses from nvmem cells

This adds support for reading mac addresses from the "mac-address" nvmem
cell. If there is no (local-)mac-address property, then we will try
reading from an nvmem cell.

For some existing examples of this property, refer to imx8mn.dtsi and
imx8mp.dtsi. Unfortunately, fuse drivers have not yet been converted
to DM.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: Enable NVMEM
Sean Anderson [Thu, 5 May 2022 17:11:40 +0000 (13:11 -0400)]
sandbox: Enable NVMEM

This enables NVMEM for all sandbox defconfigs, enabling it to be used in
unit tests in the next few commits.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agomisc: Add support for nvmem cells
Sean Anderson [Thu, 5 May 2022 17:11:39 +0000 (13:11 -0400)]
misc: Add support for nvmem cells

This adds support for "nvmem cells" as seen in Linux. The nvmem device
class in Linux is used for various assorted ROMs and EEPROMs. In this
sense, it is similar to UCLASS_MISC, but also includes
UCLASS_I2C_EEPROM, UCLASS_RTC, and UCLASS_MTD. New drivers corresponding
to a Linux-style nvmem device should be implemented as one of the
previously-mentioned uclasses. The nvmem API acts as a compatibility
layer to adapt the (slightly different) APIs of these uclasses. It also
handles the lookup of nvmem cells.

While nvmem devices can be accessed directly, they are most often used
by reading/writing contiguous values called "cells". Cells typically
hold information like calibration, versions, or configuration (such as
mac addresses).

nvmem devices can specify "cells" in their device tree:

qfprom: eeprom@700000 {
#address-cells = <1>;
#size-cells = <1>;
reg = <0x00700000 0x100000>;

/* ... */

tsens_calibration: calib@404 {
reg = <0x404 0x10>;
};
};

which can then be referenced like:

tsens {
/* ... */
nvmem-cells = <&tsens_calibration>;
nvmem-cell-names = "calibration";
};

The tsens driver could then read the calibration value like:

struct nvmem_cell cal_cell;
u8 cal[16];
nvmem_cell_get_by_name(dev, "calibration", &cal_cell);
nvmem_cell_read(&cal_cell, cal, sizeof(cal));

Because nvmem devices are not all of the same uclass, supported uclasses
must register a nvmem_interface struct. This allows CONFIG_NVMEM to be
enabled without depending on specific uclasses. At the moment,
nvmem_interface is very bare-bones, and assumes that no initialization
is necessary. However, this could be amended in the future.

Although I2C_EEPROM and MISC are quite similar (and could likely be
unified), they present different read/write function signatures. To
abstract over this, NVMEM uses the same read/write signature as Linux.
In particular, short read/writes are not allowed, which is allowed by
MISC.

The functionality implemented by nvmem cells is very similar to that
provided by i2c_eeprom_partition. "fixed-partition"s for eeproms does
not seem to have made its way into Linux or into any device tree other
than sandbox. It is possible that with the introduction of this API it
would be possible to remove it.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agomisc: i2c_eeprom: Add fallbacks
Sean Anderson [Thu, 5 May 2022 17:11:38 +0000 (13:11 -0400)]
misc: i2c_eeprom: Add fallbacks

Add some fallback functions for when i2c_eeprom is disabled. This allows
code to reference i2c_eeprom_* functions without needing to check
whether support has been compiled in.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agomisc: i2c_eeprom: Make i2c_eeprom_write use a const buf
Sean Anderson [Thu, 5 May 2022 17:11:37 +0000 (13:11 -0400)]
misc: i2c_eeprom: Make i2c_eeprom_write use a const buf

i2c_eeprom_ops->write uses a const buf, so use one for the wrapper
function as well.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agonet: dsa: Fix segmentation fault if master fails to probe
Sean Anderson [Thu, 5 May 2022 17:11:36 +0000 (13:11 -0400)]
net: dsa: Fix segmentation fault if master fails to probe

If the DSA master fails to probe for whatever reason, then DSA devices
will continue on as if nothing is wrong. This can cause incorrect
behavior. In particular, on sandbox, dsa_sandbox_probe attempts to
access the master's private data. This is only safe to do if the master
has been probed first. Fix this by probing the master after we look it
up, and bailing out if we get an error.

Fixes: fc054d563b ("net: Introduce DSA class for Ethernet switches")
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
2 years agosandbox: Move some mac addresses to device tree
Sean Anderson [Thu, 5 May 2022 17:11:35 +0000 (13:11 -0400)]
sandbox: Move some mac addresses to device tree

This prevents some conflicts when running sandbox with -D, since the
"rom" mac address will be random and won't match the environment. We
still need to keep addresses for eth1 and eth6 in the environment,
because dm_test_eth_rotate expects to be able to disable them by
removing their envaddr variables. This can likely be fixed in a future
series by adding a function to cause sandbox eth_opts callback for a
particular mac to fail immediately.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: Remove eth2addr from environment
Sean Anderson [Thu, 5 May 2022 17:11:34 +0000 (13:11 -0400)]
sandbox: Remove eth2addr from environment

DSA interfaces use the same mac address for each interface, unless
instructed otherwise. Just set eth4addr and let eth2addr and eth7addr be
set automatically.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: net: Remove fake-host-hwaddr
Sean Anderson [Thu, 5 May 2022 17:11:33 +0000 (13:11 -0400)]
sandbox: net: Remove fake-host-hwaddr

Instead of reading a pseudo-rom mac address from the device tree, just use
whatever we get from write_hwaddr. This has the effect of using the mac
address from the environment (or from the device tree, if it is
specified).

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Acked-by: Ramon Fried <rfried.dev@gmail.com>
2 years agotest: eth: Add test for ethernet addresses
Sean Anderson [Thu, 5 May 2022 17:11:32 +0000 (13:11 -0400)]
test: eth: Add test for ethernet addresses

This adds a test to make sure that all the ethernet interfaces have
their addresses read properly. At the moment everything is read from the
environment, but the next few commits will add additional sources.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: net: Add mac address for eth8 to environment
Sean Anderson [Thu, 5 May 2022 17:11:31 +0000 (13:11 -0400)]
sandbox: net: Add mac address for eth8 to environment

The phy_eth0 interface introduced in commit f3dd213e15 ("net: introduce
helpers to get PHY ofnode from MAC") uses a globally-administered
address. Switch to using a locally-administered address, and add it to
the sandbox environment, like the others.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agosandbox: net: Add aliases for ethernet devices
Sean Anderson [Thu, 5 May 2022 17:11:30 +0000 (13:11 -0400)]
sandbox: net: Add aliases for ethernet devices

Commit f3dd213e15 ("net: introduce helpers to get PHY ofnode from MAC")
changed the ethernet sequence assignment from

uclass 36: ethernet
0   * eth@10002000 @ 05813460, seq 0
1   * eth@10003000 @ 05813550, seq 5
2   * sbe5 @ 05813640, seq 3
3   * eth@10004000 @ 05813730, seq 6
4   * dsa-test-eth @ 05813820, seq 4
5   * lan0 @ 05813a30, seq 2
6   * lan1 @ 05813b50, seq 7

to

uclass 36: ethernet
0   * eth@10002000 @ 03813630, seq 0
1   * eth@10003000 @ 03813720, seq 5
2   * sbe5 @ 03813810, seq 3
3   * eth@10004000 @ 03813900, seq 6
4     phy-test-eth @ 038139f0, seq 7
5   * dsa-test-eth @ 03813ae0, seq 4
6   * lan0 @ 03813cf0, seq 2
7   * lan1 @ 03813e10, seq 8

This caused the mac address assignment to switch around. Avoid this in
the future by assigning aliases for all ethernet devices. This reverts
the sequence to what it was before the aformentioned commit (with
phy-test-eth as seq 8). There is no ethernet1 for whatever reason.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agoMerge branch '2022-06-08-virtio-harden-and-test-vring' into next
Tom Rini [Wed, 8 Jun 2022 15:15:28 +0000 (11:15 -0400)]
Merge branch '2022-06-08-virtio-harden-and-test-vring' into next

To quote the author:
Make the virtio ring code resilient against corruption of the buffers
shared with the device.

It follows the example of Linux by keeping a private copy of the
descriptors and metadata for state tracking and only ever writing to the
descriptors that are shared with the device. I was able to test these
hardening steps in the sandbox by simulating device writes to the
queues.

2 years agotest: dm: virtio_rng: Test virtio-rng with faked device
Andrew Scull [Mon, 16 May 2022 10:41:40 +0000 (10:41 +0000)]
test: dm: virtio_rng: Test virtio-rng with faked device

Add a regression test for virtio-rng reading beyond the end of its
buffer if the virtio device provides an invalid length.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio: rng: Check length before copying
Andrew Scull [Mon, 16 May 2022 10:41:39 +0000 (10:41 +0000)]
virtio: rng: Check length before copying

Check the length of data written by the device is consistent with the
size of the buffers to avoid out-of-bounds memory accesses in case
values aren't consistent.

Signed-off-by: Andrew Scull <ascull@google.com>
Cc: Sughosh Ganu <sughosh.ganu@linaro.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agotest: dm: virtio: Test virtio device driver probing
Andrew Scull [Mon, 16 May 2022 10:41:38 +0000 (10:41 +0000)]
test: dm: virtio: Test virtio device driver probing

Once the virtio-rng driver has been bound, probe it to trigger the pre
and post child probe hooks of the virtio uclass driver. Check the status
of the virtio device to confirm it reached the expected state.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio: sandbox: Bind RNG rather than block device
Andrew Scull [Mon, 16 May 2022 10:41:37 +0000 (10:41 +0000)]
virtio: sandbox: Bind RNG rather than block device

The virtio-rng driver is extremely simple, making it suitable for
testing more of the virtio uclass logic. Have the sandbox driver bind
the virtio-rng driver rather than the virtio-blk driver so it can be
used in tests.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agotest: dm: virtio: Split out virtio device tests
Andrew Scull [Mon, 16 May 2022 10:41:36 +0000 (10:41 +0000)]
test: dm: virtio: Split out virtio device tests

Virtio tests that find a child device require the virtio device driver
to be included in the build so it can probe. The sandbox virtio
transport driver currently reports a virtio-blk device so make sure the
corresponding driver is built before running tests that need it.

Signed-off-by: Andrew Scull <ascull@google.com>
2 years agotest: dm: virtio: Test notify before del_vqs
Andrew Scull [Mon, 16 May 2022 10:41:35 +0000 (10:41 +0000)]
test: dm: virtio: Test notify before del_vqs

The virtqueue is passed to virtio_notify() so move the virtqueue
deletion to the end of the test when it's no longer needed. This wasn't
causing any problems because the sandbox virtio transport driver doesn't
do anything for notifications, but it could cause problems if things
change and it was a bad example.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio: sandbox: Fix device features bitfield
Andrew Scull [Mon, 16 May 2022 10:41:34 +0000 (10:41 +0000)]
virtio: sandbox: Fix device features bitfield

The virtio sandbox transport was setting the device features value to
the bit index rather than shifting a bit to the right index. Fix this
using the bit manipulation macros.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agodm: test: virtio: Test the virtio ring
Andrew Scull [Mon, 16 May 2022 10:41:33 +0000 (10:41 +0000)]
dm: test: virtio: Test the virtio ring

The virtio ring is the basis of virtio communication. Test its basic
functionality and its resilience against corruption from the device.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio_ring: Check used descriptors are chain heads
Andrew Scull [Mon, 16 May 2022 10:41:32 +0000 (10:41 +0000)]
virtio_ring: Check used descriptors are chain heads

When the device returns used buffers, it should refer to the descriptor
that is the head of the descriptor chain for that buffer. Confirm this
to be the case by tracking the head of descriptor chains that have been
made available to the device.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio_ring: Maintain a shadow copy of descriptors
Andrew Scull [Mon, 16 May 2022 10:41:31 +0000 (10:41 +0000)]
virtio_ring: Maintain a shadow copy of descriptors

The shared descriptors should only be written by the guest driver,
however, the device is still able to overwrite and corrupt them.
Maintain a private shadow copy of the descriptors for the driver to
use for state tracking, removing the need to read from the shared
descriptors.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio_ring: Add helper to attach vring descriptor
Andrew Scull [Mon, 16 May 2022 10:41:30 +0000 (10:41 +0000)]
virtio_ring: Add helper to attach vring descriptor

Move the logic for attaching a descriptor to its own function.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agovirtio_ring: Merge identical variables
Andrew Scull [Mon, 16 May 2022 10:41:29 +0000 (10:41 +0000)]
virtio_ring: Merge identical variables

The variables `total_sg` and `descs_used` have the same value. Replace
the few uses of `total_sg` with `descs_used` to simplify the situation.

Signed-off-by: Andrew Scull <ascull@google.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
2 years agoMerge branch '2022-06-07-assorted-improvements' into next
Tom Rini [Tue, 7 Jun 2022 16:21:57 +0000 (12:21 -0400)]
Merge branch '2022-06-07-assorted-improvements' into next

- A wide ranging set of minor clean-ups and improvements

2 years agoserial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE)
Pali Rohár [Fri, 27 May 2022 20:15:24 +0000 (22:15 +0200)]
serial: Replace CONFIG_DEBUG_UART_BASE by CONFIG_VAL(DEBUG_UART_BASE)

CONFIG_VAL(DEBUG_UART_BASE) expands to CONFIG_DEBUG_UART_BASE or
CONFIG_SPL_DEBUG_UART_BASE or CONFIG_TPL_DEBUG_UART_BASE and allows boards
to set different values for SPL, TPL and U-Boot Proper.

For ns16550 driver this support is there since commit d293759d55cc
("serial: ns16550: Add support for SPL_DEBUG_UART_BASE").

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoqfw: Don't fail if setup data size is 0
Pierre-Clément Tosi [Wed, 25 May 2022 13:38:55 +0000 (14:38 +0100)]
qfw: Don't fail if setup data size is 0

Skip missing setup data (which is valid) rather than failing with an
error.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Reported-by: Andrew Walbran <qwandor@google.com>
Signed-off-by: Pierre-Clément Tosi <ptosi@google.com>
2 years agoubifs: Add missing dependency on GZIP
Pali Rohár [Mon, 23 May 2022 20:50:36 +0000 (22:50 +0200)]
ubifs: Add missing dependency on GZIP

GZIP option can be manually de-selected when UBIFS is enabled. This cause
following compile error because ubifs calls gzip functions.

  /tmp/ccxVrh2c.ltrans1.ltrans.o: in function `gzip_decompress.lto_priv.566':
  <artificial>:(.text+0x768): undefined reference to `zunzip'
  collect2: error: ld returned 1 exit status
  make: *** [Makefile:1813: u-boot] Error 1

So add missing dependency on GZIP.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoinclude/configs: Remove rootwait=1 to all the affected boards
Michael Trimarchi [Sun, 22 May 2022 13:22:08 +0000 (15:22 +0200)]
include/configs: Remove rootwait=1 to all the affected boards

rootwait=1 is not a valid kernel boot parameters. According
to the documenation is only rootwait

rootwait [KNL] Wait (indefinitely) for root device to show up.
Useful for devices that are detected asynchronously
(e.g. USB and MMC devices).

Fix:
Unknown kernel command line parameters "rootwait=1", will be passed to user space.

Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Reviewed-by: Heiko Schocher <hs@denx.de>
2 years agocommon/board_r.c: drop legacy and unused bi_enetaddr
Rasmus Villemoes [Fri, 20 May 2022 11:19:08 +0000 (13:19 +0200)]
common/board_r.c: drop legacy and unused bi_enetaddr

The bi_enetaddr field in struct bd_info is write-only; nothing ever
reads back the value.

Moreover, the value we write is more or less random, and certainly not
something one can rely on: If the board has a writable environment and
the mac address has been stored there, we fetch that value. But if the
board doesn't, this code runs before initr_net() -> eth_initialize(),
and thus before the code in eth-uclass which fetches MAC addresses
from eeprom, fuses or whatnot and populates the (run-time) environment
with those values.

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Reviewed-by: Tom Rini <trini@konsulko.com>
2 years agobootm: Fix Linux silent console on newer kernels
Sean Anderson [Thu, 19 May 2022 22:26:05 +0000 (18:26 -0400)]
bootm: Fix Linux silent console on newer kernels

Linux determines its console based on several sources:

1. the console command line parameter
2. device tree (e.g. /chosen/stdout-path)
3. various other board- and arch-specific sources

If the console parameter specifies a real console (e.g. ttyS0) then that is
used as /dev/console. However, if it does not specify a real console (e.g.
ttyDoesntExist) then *nothing* will be used as /dev/console.
Reading/writing it will return ENODEV. Additionally, no other source will
be used as a console source.

Linux commit ab4af56ae250 ("printk/console: Allow to disable console output
by using console="" or console=null") recently changed the semantics of the
parameter. Previously, specifying console="" would be treated like
specifying some other bad console. This commit changed things so that it
added /dev/ttynull as a console (if available).  However, it also allows
for other console sources. If the device tree specifies a console (such as
if U-Boot and Linux share a device tree), then it will be used in addition
to /dev/ttynull. This can result in a non-silent console.

To avoid this, explicitly set ttynull as the console. This will disable
other console sources. If CONFIG_NULL_TTY is disabled, then this will have
the same behavior as in the past (no output, and writing /dev/console
returns ENODEV).

[1] and [2] have additional background on this kernel change.

[1] https://lore.kernel.org/all/20201006025935.GA597@jagdpanzerIV.localdomain/
[2] https://lore.kernel.org/all/20201111135450.11214-1-pmladek@suse.com/

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agopci: Handle failed calloc in decode_regions()
Pierre-Clément Tosi [Thu, 19 May 2022 16:48:30 +0000 (17:48 +0100)]
pci: Handle failed calloc in decode_regions()

Add a check for calloc() failing to allocate the requested memory.

Make decode_regions() return an error code.

Cc: Bin Meng <bmeng.cn@gmail.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Stefan Roese <sr@denx.de>
Signed-off-by: Pierre-Clément Tosi <ptosi@google.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agofdtdec: drop needlessly convoluted CONFIG_PHANDLE_CHECK_SEQ
Rasmus Villemoes [Thu, 19 May 2022 09:10:43 +0000 (11:10 +0200)]
fdtdec: drop needlessly convoluted CONFIG_PHANDLE_CHECK_SEQ

Asking if the alias we found actually points at the device tree node
we passed in (in the guise of its offset from blob) can be done simply
by asking if the fdt_path_offset() of the alias' path is identical to
offset.

In fact, the current method suffers from the possibility of false
negatives: dtc does not necessarily emit a phandle property for a node
just because it is referenced in /aliases; it only emits a phandle
property for a node if it is referenced in <angle brackets>
somewhere. So if both the node we passed in and the alias node we're
considering don't have phandles, fdt_get_phandle() returns 0 for both.

Since the proper check is so simple, there's no reason to hide that
behind a config option (and if one really wanted that, it should be
called something else because there's no need to involve phandle in
the check).

Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Acked-by: Aswath Govindraju <a-govindraju@ti.com>
2 years agodrivers:optee:rpmb: initialize drivers of mmc devices in UCLASS_BLK for rpmb access
Judy Wang [Tue, 3 May 2022 06:04:40 +0000 (14:04 +0800)]
drivers:optee:rpmb: initialize drivers of mmc devices in UCLASS_BLK for rpmb access

CONFIG_MMC only initializes drivers for devices in UCLASS_MMC, we need
to initialize drivers for devices of type IF_TYPE_MMC in UCLASS_BLK as
well because they are the child devices of devices in UCLASS_MMC.  This
is required for feature RPMB since it will access eMMC in optee-os.

Signed-off-by: Judy Wang <wangjudy@microsoft.com>
[trini: Add my SoB line and adjust Judy's name in git, having emailed
off-list]
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoserial: smh: Fake tstc
Sean Anderson [Tue, 17 May 2022 17:55:07 +0000 (13:55 -0400)]
serial: smh: Fake tstc

ARM semihosting provides no provisions for determining if there is
pending input. The only way to determine if there is console input is to
do a read (and block until the user types something). For this reason,
we always return true for tstc (since you will always get input if you
try). However, this behavior can cause problems for code which expects
tstc to eventually be empty. In query_console_serial, there is the
following construct:

/* empty input buffer */
while (tstc())
getchar();

with the current implementation, this effectively turns into an infinite
loop. To avoid this, fake tstc by returning false half of the time. This
is generally OK because the other common construct looks like

do {
if (tstc())
process(getchar());
} while (!timeout());

so it's fine if we only read a new character every other loop. This will
break things like CYGACC_COMM_IF_GETC_TIMEOUT, but that could be
reworked to test on the timeout instead of calling tstc again (and
ymodem over semihosted serial is not that useful in the first place).

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agodm: core: convert of_machine_is_compatible to livetree
Patrick Delaunay [Tue, 17 May 2022 12:37:05 +0000 (14:37 +0200)]
dm: core: convert of_machine_is_compatible to livetree

Replace in the function of_machine_is_compatible(), the used API
fdt_node_check_compatible() by ofnode_device_is_compatible()
to support a live tree.

Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
2 years agomkimage: Support signing 'auto' FITs
Sean Anderson [Mon, 16 May 2022 20:11:08 +0000 (16:11 -0400)]
mkimage: Support signing 'auto' FITs

This adds support for signing images in auto-generated FITs. To do this,
we need to add a signature node. The algorithm name property already has
its own option, but we need one for the key name hint. We could have
gone the -G route and added an explicit name for the public key (like
what is done for the private key). However, many places assume the
public key can be constructed from the key dir and hint, and I don't
want to do the refactoring necessary.

As a consequence of this, it is now easier to add public keys to an
existing image without signing something. This could be done all along,
but now you don't have to create an its just to do it. Ideally, we
wouldn't create a FIT at the end. This could be done by calling
fit_image_setup_sig/info.crypto->add_verify_data directly.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agomkimage: Document more misc options
Sean Anderson [Mon, 16 May 2022 20:11:07 +0000 (16:11 -0400)]
mkimage: Document more misc options

Document -G and the secondary image types which can be used with -R.
Also reword the documentation of -s for clarity.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agoevent: fix static events for CONFIG_NEEDS_MANUAL_RELOC
Ovidiu Panait [Sun, 15 May 2022 18:40:29 +0000 (21:40 +0300)]
event: fix static events for CONFIG_NEEDS_MANUAL_RELOC

Static events do not currently work post-relocation for boards that enable
CONFIG_NEEDS_MANUAL_RELOC. Relocate event handler pointers for all event
spies to fix this.

Tested on Microblaze.

Signed-off-by: Ovidiu Panait <ovpanait@gmail.com>
2 years agoevent: remove CONFIG_EVENT_DYNAMIC check in event_register()
Ovidiu Panait [Sun, 15 May 2022 18:40:28 +0000 (21:40 +0300)]
event: remove CONFIG_EVENT_DYNAMIC check in event_register()

The whole event_register() function is wrapped in EVENT_DYNAMIC #ifdef
checks, so the inner check is not needed:

 #if CONFIG_IS_ENABLED(EVENT_DYNAMIC)
 ...
 int event_register(...)
 {
     ...
     if (!CONFIG_IS_ENABLED(EVENT_DYNAMIC))
         return -ENOSYS;
 }
 #endif

Signed-off-by: Ovidiu Panait <ovpanait@gmail.com>
2 years agomtd: mtdpart: Change size type from fdt_addr_t to fdt_size_t
Pali Rohár [Fri, 13 May 2022 20:24:51 +0000 (22:24 +0200)]
mtd: mtdpart: Change size type from fdt_addr_t to fdt_size_t

Set correct type for 3rd argument of ofnode_get_addr_size_index_notrans()
function. It expects fdt_size_t * and not fdt_addr_t *.

When these two types do not have same size then U-Boot throw compile
warning:

    drivers/mtd/mtdpart.c: In function ‘add_mtd_partitions_of’:
    drivers/mtd/mtdpart.c:906:57: warning: passing argument 3 of ‘ofnode_get_addr_size_index_notrans’ from incompatible pointer type [-Wincompatible-pointer-types]
       offset = ofnode_get_addr_size_index_notrans(child, 0, &size);
                                                             ^~~~~
    In file included from include/dm/device.h:13,
                     from include/linux/mtd/mtd.h:26,
                     from include/ubi_uboot.h:28,
                     from drivers/mtd/mtdpart.c:27:
    include/dm/ofnode.h:530:25: note: expected ‘fdt_size_t *’ {aka ‘long long unsigned int *’} but argument is of type ‘fdt_addr_t *’ {aka ‘long unsigned int *’}
                 fdt_size_t *size);
                 ~~~~~~~~~~~~^~~~

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
2 years agoscripts: Introduce {quiet_,}cmd_bin2c
Pierre-Clément Tosi [Wed, 11 May 2022 09:36:07 +0000 (10:36 +0100)]
scripts: Introduce {quiet_,}cmd_bin2c

Add a make command to compile binary files as C data through bin2c with

    $(call,bin2c,<data_name_prefix>)

Note that this requires BUILD_BIN2C=y.

Cc: Simon Glass <sjg@chromium.org>
Signed-off-by: Pierre-Clément Tosi <ptosi@google.com>
2 years agofs/squashfs: fix sqfs_read_sblk()
Heinrich Schuchardt [Tue, 10 May 2022 19:53:25 +0000 (21:53 +0200)]
fs/squashfs: fix sqfs_read_sblk()

Setting sblk = NULL has no effect on the caller.
We want to set *sblk = NULL if an error occurrs to avoid usage after free.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agobtrfs: simplify lookup_data_extent()
Heinrich Schuchardt [Tue, 10 May 2022 19:43:38 +0000 (21:43 +0200)]
btrfs: simplify lookup_data_extent()

After returning if ret <= 0 we know that ret > 0. No need to check it.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Anand Jain <anand.jain>
2 years agozlib: Port fix for CVE-2018-25032 to U-Boot
Tom Rini [Tue, 10 May 2022 18:36:59 +0000 (14:36 -0400)]
zlib: Port fix for CVE-2018-25032 to U-Boot

While our copy of zlib is missing upstream commit 263b1a05b04e ("Allow
deflatePrime() to insert bits in the middle of a stream.") we do have
Z_FIXED support, and so the majority of the code changes in 5c44459c3b28
("Fix a bug that can crash deflate on some input when using Z_FIXED.")
apply here directly and cleanly.  As this has been assigned a CVE, lets
go and apply these changes.

Link: https://github.com/madler/zlib/commit/5c44459c3b28a9bd3283aaceab7c615f8020c531
Reported-by: "Gan, Yau Wai" <yau.wai.gan@intel.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agomisc: Correct Kconfig dependencies for a number of options
Tom Rini [Tue, 10 May 2022 16:51:47 +0000 (12:51 -0400)]
misc: Correct Kconfig dependencies for a number of options

We have many cases of SPL (or TPL or VPL) drivers that don't depend on
SPL_MISC (and so on) but rather just MISC.

Cc: Sean Anderson <sean.anderson@seco.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
Reviewed-by: Sean Anderson <sean.anderson@seco.com>
2 years agodoc: regulator: Add regulator-force-boot-off binding
Chris Packham [Mon, 9 May 2022 21:58:28 +0000 (09:58 +1200)]
doc: regulator: Add regulator-force-boot-off binding

The actual support was added in commit fec8c900c8b2 ("power: regulator:
Add support for regulator-force-boot-off"), update the docs to include
this.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
2 years agocmd: dm: migrate dm command to use U_BOOT_CMD_WITH_SUBCMDS()
Ovidiu Panait [Sun, 8 May 2022 10:01:42 +0000 (13:01 +0300)]
cmd: dm: migrate dm command to use U_BOOT_CMD_WITH_SUBCMDS()

Migrate dm command to use U_BOOT_CMD_WITH_SUBCMDS() helper macro, to reduce
duplicated code. We can also drop the CONFIG_NEEDS_MANUAL_RELOC exception,
as the command list is updated post relocation in board_r.c initcall
initr_manual_reloc_cmdtable().

Signed-off-by: Ovidiu Panait <ovpanait@gmail.com>
2 years agodm: fix DM_EVENT dependencies
Heinrich Schuchardt [Sat, 7 May 2022 20:39:01 +0000 (22:39 +0200)]
dm: fix DM_EVENT dependencies

CONFIG_DM_EVENT without CONFIG_EVENT is non-functional.
Let CONFIG_DM_EVENT depend on CONFIG_EVENT.

Remove superfluous stub in include/event.h.

Fixes: 5b896ed5856f ("event: Add events for device probe/remove")
Reported-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoboot: image-pre-load: drop unused CONFIG_SYS_BOOTM_LEN
Peng Fan [Sat, 7 May 2022 13:23:05 +0000 (21:23 +0800)]
boot: image-pre-load: drop unused CONFIG_SYS_BOOTM_LEN

CONFIG_SYS_BOOTM_LEN is not used in this file, drop it.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
2 years agoconfigs: Resync with savedefconfig
Tom Rini [Mon, 6 Jun 2022 16:13:29 +0000 (12:13 -0400)]
configs: Resync with savedefconfig

Rsync all defconfig files using moveconfig.py

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoMerge branch '2022-06-06-finish-SPL-Kconfig-migration' into next
Tom Rini [Mon, 6 Jun 2022 16:09:41 +0000 (12:09 -0400)]
Merge branch '2022-06-06-finish-SPL-Kconfig-migration' into next

- Bring in a number of series of patches that migrate all remaining
  CONFIG_SPL symbols to Kconfig, remove some dead code that this
  uncovered and then start to tighten the dependencies in Kconfig now
  that everything is migrated and these relationships can be clearly
  expressed.

2 years agospl: Rework and tighten some dependencies
Tom Rini [Tue, 31 May 2022 14:24:55 +0000 (10:24 -0400)]
spl: Rework and tighten some dependencies

- In a few places, add missing "depends on" that can be implied from the
  option name (i.e. SPL_DM_xxx depends on SPL_DM).
- Make less use of "if SPL_xxx ... endif" clauses as most of the time
  this reads better as depends on.  In the case of UBI however, move it
  all to a sub-menu.
- Rework SPL_NO_CPU_SUPPORT as it's very specific to the
  non-SPL_FRAMEWORK implementation used on those platforms, and a
  tangent to how CONFIG_SPL_START_S_PATH was used.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agospl: Rework Kconfig to be more menu driven
Tom Rini [Mon, 30 May 2022 21:11:23 +0000 (17:11 -0400)]
spl: Rework Kconfig to be more menu driven

Make it so that all of SPL, TPL and VPL are proper menus hidden behind a
gating question.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agospl: Move all VPL, TPL and PowerPC specific CONFIG options to separate files
Tom Rini [Mon, 30 May 2022 21:01:22 +0000 (17:01 -0400)]
spl: Move all VPL, TPL and PowerPC specific CONFIG options to separate files

- Move all PowerPC (and some shared with Layerscape) options to
  common/spl/Kconfig.nxp
- Move all other TPL related options to common/spl/Kconfig.tpl
- Move all VPL related options to common/spl/Kconfig.vpl

This makes the whole of common/spl/Kconfig slightly more readable.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoarm: mvebu: Remove CONFIG_SPL_BOOT_DEVICE
Chris Packham [Sat, 28 May 2022 23:13:18 +0000 (11:13 +1200)]
arm: mvebu: Remove CONFIG_SPL_BOOT_DEVICE

CONFIG_SPL_BOOT_DEVICE was made obsolete by
CONFIG_MVEBU_SPL_BOOT_DEVICE_{SPI,MMC,SATA,UART}.
CONFIG_MVEBU_SPL_BOOT_DEVICE_SPI is the default so existing users of
CONFIG_SPL_BOOT_DEVICE can simply have the option removed.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoConvert CONFIG_FIXED_SDHCI_ALIGNED_BUFFER to Kconfig
Chris Packham [Sat, 28 May 2022 23:13:17 +0000 (11:13 +1200)]
Convert CONFIG_FIXED_SDHCI_ALIGNED_BUFFER to Kconfig

CONFIG_FIXED_SDHCI_ALIGNED_BUFFER is needed on some Marvell SoCs when
booting from MMC. All existing usages of this have the same value so
make this the default and have the Kconfig option depend on SPL &&
MVEBU_SPL_BOOT_DEVICE_MMC.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoarm: mvebu: Use MVEBU_SPL_BOOT_DEVICE instead of SPL_BOOT_DEVICE
Chris Packham [Sat, 28 May 2022 23:13:16 +0000 (11:13 +1200)]
arm: mvebu: Use MVEBU_SPL_BOOT_DEVICE instead of SPL_BOOT_DEVICE

Update the way KWB_CFG_SEC_BOOT_DEV is determined to use
CONFIG_MVEBU_SPL_BOOT_DEVICE_{SPI,MMC} instead of
CONFIG_SPL_BOOT_DEVICE.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoriotboard, syzygy_hub: Disable SPL_FALCON_BOOT_MMCSD
Tom Rini [Sun, 29 May 2022 13:34:42 +0000 (09:34 -0400)]
riotboard, syzygy_hub: Disable SPL_FALCON_BOOT_MMCSD

Looking at the git history and values used for the raw kernel/args
location, it's clear these platforms only ever did Falcon Mode via
filesystem images and not raw MMC/SD locations.  Disable
CONFIG_SPL_FALCON_BOOT_MMCSD.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR et al to Kconfig
Tom Rini [Sat, 28 May 2022 21:21:03 +0000 (17:21 -0400)]
Convert CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR
   CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_NAND_SPL_KERNEL_OFFS to Kconfig
Tom Rini [Sat, 28 May 2022 20:43:53 +0000 (16:43 -0400)]
Convert CONFIG_SYS_NAND_SPL_KERNEL_OFFS to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_NAND_SPL_KERNEL_OFFS

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agospl: Remove CONFIG_SPL_START_S_PATH and rework the logic behind it
Tom Rini [Sat, 28 May 2022 16:40:40 +0000 (12:40 -0400)]
spl: Remove CONFIG_SPL_START_S_PATH and rework the logic behind it

In some cases, when we don't use CONFIG_SPL_FRAMEWORK nor are we on
PowerPC using their specific SPL/TPL framework, we need to specify the
start.S file to use for these typically very constrained systems.  Do
this within the Makefile logic, rather than introducing a string-based
CONFIG option, as this would get slightly complex to do in Kconfig for a
very limited number of users.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoDrop CONFIG_SPL_SIZE
Tom Rini [Sat, 28 May 2022 16:07:26 +0000 (12:07 -0400)]
Drop CONFIG_SPL_SIZE

We do not reference CONFIG_SPL_SIZE in the code, remove it.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoax25-ae350: Move CONFIG_SYS_FDT_BASE to Kconfig
Tom Rini [Sat, 28 May 2022 13:13:59 +0000 (09:13 -0400)]
ax25-ae350: Move CONFIG_SYS_FDT_BASE to Kconfig

The address where the device tree will be passed in to U-Boot at is now
moved to the Kconfig file.  If this is user configurable, it needs to be
exposed rather than hidden, and should probably be renamed as well.

Reviewed-by: Rick Chen <rick@andestech.com>
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_SPL_ARGS_ADDR to Kconfig
Tom Rini [Sat, 28 May 2022 02:06:52 +0000 (22:06 -0400)]
Convert CONFIG_SYS_SPL_ARGS_ADDR to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_SPL_ARGS_ADDR

In doing so, we also consistently use this variable for SPL_OS_BOOT and
not CONFIG_SYS_FDT_BASE in some cases.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_TARGET to Kconfig
Tom Rini [Fri, 27 May 2022 21:13:52 +0000 (17:13 -0400)]
Convert CONFIG_SPL_TARGET to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_TARGET

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoRemove CONFIG_SPL_STACK_SIZE
Tom Rini [Fri, 27 May 2022 20:56:13 +0000 (16:56 -0400)]
Remove CONFIG_SPL_STACK_SIZE

This is not used anywhere, drop it.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoDrop CONFIG_SPL_SPI_FLASH_MINIMAL
Tom Rini [Fri, 27 May 2022 20:34:14 +0000 (16:34 -0400)]
Drop CONFIG_SPL_SPI_FLASH_MINIMAL

There are no users of CONFIG_SPL_SPI_FLASH_MINIMAL only platforms
defining it, drop it.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_GD_ADDR to Kconfig
Tom Rini [Fri, 27 May 2022 20:19:05 +0000 (16:19 -0400)]
Convert CONFIG_SPL_GD_ADDR to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_GD_ADDR

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoetamin: Remove CONFIG_SPL_CMT defines
Tom Rini [Fri, 27 May 2022 19:20:11 +0000 (15:20 -0400)]
etamin: Remove CONFIG_SPL_CMT defines

These are presumably private to non-upstream code, remove.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoRemove CONFIG_SYS_SPL_LEN largely
Tom Rini [Fri, 27 May 2022 19:18:06 +0000 (15:18 -0400)]
Remove CONFIG_SYS_SPL_LEN largely

This is mostly unused.  In the case where it is currently used, it means
the same as CONFIG_SPL_PAD_TO, which is already set for the platform.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_SPL_MALLOC_SIZE et al to Kconfig
Tom Rini [Fri, 27 May 2022 16:48:32 +0000 (12:48 -0400)]
Convert CONFIG_SYS_SPL_MALLOC_SIZE et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_SPL_MALLOC_SIZE
   CONFIG_SYS_SPL_MALLOC_START

We introduce a default value here as well, and CONFIG_SYS_SPL_MALLOC to
control if we have a malloc pool or not.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_BSS_START_ADDR to Kconfig
Tom Rini [Fri, 27 May 2022 14:19:45 +0000 (10:19 -0400)]
Convert CONFIG_SPL_BSS_START_ADDR to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_BSS_START_ADDR

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_RELOC_TEXT_BASE et al to Kconfig
Tom Rini [Thu, 26 May 2022 20:59:30 +0000 (16:59 -0400)]
Convert CONFIG_SPL_RELOC_TEXT_BASE et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_RELOC_TEXT_BASE
   CONFIG_SPL_RELOC_STACK
   CONFIG_SPL_RELOC_MALLOC_ADDR
   CONFIG_SPL_RELOC_MALLOC_SIZE

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_TPL_NAND_INIT to Kconfig
Tom Rini [Thu, 26 May 2022 18:31:57 +0000 (14:31 -0400)]
Convert CONFIG_TPL_NAND_INIT to Kconfig

This converts the following to Kconfig:
   CONFIG_TPL_NAND_INIT

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoimx7: Update CONFIG_SPL_STACK defaults in Kconfig
Tom Rini [Thu, 26 May 2022 17:46:32 +0000 (13:46 -0400)]
imx7: Update CONFIG_SPL_STACK defaults in Kconfig

Update the Kconfig entry to have the correct defaults for i.MX7
platforms, and move the existing large comment from imx7_spl.h to
doc/imx/common/imx7.txt so that it's not lost.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoimx6: Update CONFIG_SPL_STACK defaults in Kconfig
Tom Rini [Thu, 26 May 2022 17:36:17 +0000 (13:36 -0400)]
imx6: Update CONFIG_SPL_STACK defaults in Kconfig

Update the Kconfig entry to have the correct defaults for i.MX6
platforms, and move the existing large comment from imx6_spl.h to
doc/imx/common/imx6.txt so that it's not lost.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_STACK to Kconfig
Tom Rini [Thu, 26 May 2022 17:13:21 +0000 (13:13 -0400)]
Convert CONFIG_SPL_STACK to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_STACK

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoMigrate CUSTOM_SYS_INIT_SP_ADDR to Kconfig using system-constants.h
Tom Rini [Wed, 25 May 2022 16:16:03 +0000 (12:16 -0400)]
Migrate CUSTOM_SYS_INIT_SP_ADDR to Kconfig using system-constants.h

- Make all users of CUSTOM_SYS_INIT_SP_ADDR reference SYS_INIT_SP_ADDR
- Introduce HAS_CUSTOM_SYS_INIT_SP_ADDR to allow for setting the stack
  pointer directly, otherwise we use the common calculation.
- On some platforms that were using the standard calculation but did not
  set CONFIG_SYS_INIT_RAM_SIZE / CONFIG_SYS_INIT_RAM_ADDR, set them.
- On a small number of platforms that were not subtracting
  GENERATED_GBL_DATA_SIZE do so now via the standard calculation.
- CONFIG_SYS_INIT_SP_OFFSET is now widely unused, so remove it from most
  board config header files.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoIntroduce include/system-constants.h
Tom Rini [Wed, 25 May 2022 14:16:18 +0000 (10:16 -0400)]
Introduce include/system-constants.h

We have a number of CONFIG symbols today that are of the form:
SYM1 = CONST1 + CONST2
or other static math operations (shifts, etc).  The issue is that by
moving these to Kconfig we no longer have the ability to calculate these
values, so they become less flexible and useful.  It's also the case
that sometimes a platform will just define SYM1 directly or perform a
slightly different set of calculations.  We introduce this header now to
have a place to start to handle these cases.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agostih410-b2260: Switch to using GENERATED_GBL_DATA_SIZE
Tom Rini [Tue, 24 May 2022 18:18:11 +0000 (14:18 -0400)]
stih410-b2260: Switch to using GENERATED_GBL_DATA_SIZE

We have GENERATED_GBL_DATA_SIZE to tell us how large the generated
global data is, so do not use a hard-coded value of 1024 for it.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agopowerpc: Switch to using CONFIG_SYS_INIT_SP_OFFSET from CONFIG_SYS_GBL_DATA_OFFSET
Tom Rini [Tue, 24 May 2022 18:14:02 +0000 (14:14 -0400)]
powerpc: Switch to using CONFIG_SYS_INIT_SP_OFFSET from CONFIG_SYS_GBL_DATA_OFFSET

In the places where PowerPC references CONFIG_SYS_GBL_DATA_OFFSET it
does so as (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET).  And
it defines CONFIG_SYS_GBL_DATA_OFFSET in the same manner that other
architectures define CONFIG_SYS_INIT_SP_OFFSET. Other architectures
define CONFIG_SYS_INIT_SP_ADDR as (CONFIG_SYS_INIT_RAM_ADDR +
CONFIG_SYS_INIT_SP_OFFSET) typically.  Rename things within PowerPC for
consistency with other architectures.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agompc85xx: Switch to setting the initial stack pointer more clearly
Tom Rini [Tue, 24 May 2022 17:49:56 +0000 (13:49 -0400)]
mpc85xx: Switch to setting the initial stack pointer more clearly

Currently, since we know that in the combination of
CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET all of the "high"
bits are in CONFIG_SYS_INIT_RAM_ADDR and "low" bits are in
CONFIG_SYS_GBL_DATA_OFFSET we reference this separately in start.S, but
added together everywhere else.  For clarity consistency, reference the
combined value here instead.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agom68k: Stop using CONFIG_SYS_GBL_DATA_OFFSET
Tom Rini [Tue, 24 May 2022 17:40:05 +0000 (13:40 -0400)]
m68k: Stop using CONFIG_SYS_GBL_DATA_OFFSET

This value is only referenced by PowerPC code in a way other than
directly as CONFIG_SYS_INIT_SP_ADDR.  Switch to CONFIG_SYS_INIT_SP_ADDR
directly.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoarm: Stop using CONFIG_SYS_GBL_DATA_OFFSET
Tom Rini [Tue, 24 May 2022 17:23:40 +0000 (13:23 -0400)]
arm: Stop using CONFIG_SYS_GBL_DATA_OFFSET

This value is only referenced by PowerPC code in a way other than
directly as CONFIG_SYS_INIT_SP_ADDR.  Switch to CONFIG_SYS_INIT_SP_ADDR
directly.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoarm: Use CONFIG_SPL_STACK or CONFIG_SYS_INIT_SP_ADDR directly.
Tom Rini [Tue, 24 May 2022 17:11:41 +0000 (13:11 -0400)]
arm: Use CONFIG_SPL_STACK or CONFIG_SYS_INIT_SP_ADDR directly.

In some cases, we define CONFIG_SYS_INIT_SP_ADDR differently for SPL or
full U-Boot.  This case should be making use of CONFIG_SPL_STACK, as
that's what that variable is for.  In a few other cases we define
CONFIG_SPL_STACK directly to CONFIG_SYS_INIT_SP_ADDR, but do not need to
as the code handles this correctly, normally.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agomvebu: Use CONFIG_SPL_STACK + 4 directly for bootparam location
Tom Rini [Tue, 24 May 2022 13:57:18 +0000 (09:57 -0400)]
mvebu: Use CONFIG_SPL_STACK + 4 directly for bootparam location

The definition of CONFIG_SPL_BOOTROM_SAVE is always a fixed
CONFIG_SPL_STACK + 4, while CONFIG_SPL_STACK is not constant.  This
change will make it clear where the location is still, once
CONFIG_SPL_STACK moves to Kconfig.

Cc: Stefan Roese <sr@denx.de>
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoarm: pxa: Remove CONFIG_CPU_PXA25X
Tom Rini [Wed, 25 May 2022 20:13:48 +0000 (16:13 -0400)]
arm: pxa: Remove CONFIG_CPU_PXA25X

There are no platforms that set this, remove the code.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agom68k: Remove dead code
Tom Rini [Wed, 25 May 2022 19:11:18 +0000 (15:11 -0400)]
m68k: Remove dead code

There are no mcf5227x platforms, remove the CPU code.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_COMMON_INIT_DDR to Kconfig
Tom Rini [Sat, 21 May 2022 18:44:28 +0000 (14:44 -0400)]
Convert CONFIG_SPL_COMMON_INIT_DDR to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_COMMON_INIT_DDR

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoppc / layerscape: Clean up CONFIG_SYS_CCSR_DO_NOT_RELOCATE usage
Tom Rini [Sat, 21 May 2022 15:26:27 +0000 (11:26 -0400)]
ppc / layerscape: Clean up CONFIG_SYS_CCSR_DO_NOT_RELOCATE usage

A number of PowerPC platforms define this, for SPL.  To move this to
Kconfig, it needs to be CONFIG_SPL_SYS_CCSR_DO_NOT_RELOCATE, so use
CONFIG_IS_ENABLED() to check for usage.  A number of layerscape
platforms bring this logic from PowerPC, but only need a small part of
it, for the fman driver.  Remove their unused portion at least.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_SYS_MALLOC_SIMPLE to Kconfig
Tom Rini [Fri, 20 May 2022 16:36:05 +0000 (12:36 -0400)]
Convert CONFIG_SPL_SYS_MALLOC_SIMPLE to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_SYS_MALLOC_SIMPLE

The problem here is that a few platforms have been doing:
#ifdef CONFIG_SPL_BUILD
#define CONFIG_SYS_MALLOC_SIMPLE
#endif

instead of defining CONFIG_SPL_SYS_MALLOC_SIMPLE directly.  Correct this
and update the documentation in a few places to match usage.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_BSS_MAX_SIZE et al to Kconfig
Tom Rini [Thu, 19 May 2022 19:09:22 +0000 (15:09 -0400)]
Convert CONFIG_SPL_BSS_MAX_SIZE et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_BSS_MAX_SIZE
   CONFIG_SPL_MAX_FOOTPRINT

Note that the da850evm platforms were violating the "only use one" rule
here, and so now hard-code their BSS limit.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_PAD_TO et al to Kconfig
Tom Rini [Mon, 16 May 2022 21:20:26 +0000 (17:20 -0400)]
Convert CONFIG_SPL_PAD_TO et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_PAD_TO
   CONFIG_SPL_MAX_SIZE
   CONFIG_TPL_PAD_TO
   CONFIG_TPL_MAX_SIZE

Note that we need to make TPL_MAX_SIZE be hex, and so move and convert the
existing places.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SPL_FS_LOAD_PAYLOAD_NAME et al to Kconfig
Tom Rini [Fri, 13 May 2022 21:12:35 +0000 (17:12 -0400)]
Convert CONFIG_SPL_FS_LOAD_PAYLOAD_NAME et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SPL_FS_LOAD_ARGS_NAME
   CONFIG_SPL_FS_LOAD_KERNEL_NAME
   CONFIG_SPL_FS_LOAD_PAYLOAD_NAME

Signed-off-by: Tom Rini <trini@konsulko.com>