platform/kernel/u-boot.git
2 years agotools: kwbimage: Deduplicate v1 regtype header finishing
Pali Rohár [Wed, 12 Jan 2022 17:20:36 +0000 (18:20 +0100)]
tools: kwbimage: Deduplicate v1 regtype header finishing

Deduplicate code that finishes OPT_HDR_V1_REGISTER_TYPE header by
extracing it into separate function.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agotools: kwbimage: Mark all local functions as static
Pali Rohár [Wed, 12 Jan 2022 17:20:35 +0000 (18:20 +0100)]
tools: kwbimage: Mark all local functions as static

Mark all local functions as static.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoddr: marvell: a38x: fix SPLIT_OUT_MIX state decision
Marek Behún [Wed, 12 Jan 2022 16:06:59 +0000 (17:06 +0100)]
ddr: marvell: a38x: fix SPLIT_OUT_MIX state decision

This is a cleaned up and fixed version of a patch
  mv_ddr: a380: fix SPLIT_OUT_MIX state decision

  in each pattern cycle the bus state can be changed
  in order to avoide it, need to back to the same bus state on each
  pattern cycle
by
  Moti Boskula <motib@marvell.com>

The original patch is not in Marvell's mv-ddr-marvell repository. It was
gives to us by Marvell to fix an issues with DDR training on some
boards, but it cannot be applied as is to mv-ddr-marvell, because it is
a very dirty draft patch that would certainly break other things, mainly
DDR4 training code in mv-ddr-marvell, since it changes common functions.

I have cleaned up the patch and removed stuff that seemed unnecessary
(when removed, it still fixed things). Note that I don't understand
completely what the code does exactly, since I haven't studied the DDR
training code extensively (and I suspect that no one besides some few
people in Marvell understand the code completely).

Anyway after the cleanup the patch still fixes isssues with DDR training
on the failing boards.

There was also a problem with the original patch on some of the Allied
Telesis' x530 boards, reported by Chris Packham. I have asked Chris to
send me some logs, and managed to fix it:
- if you look at the change, you'll notice that it introduces
  subtraction of cur_start_win[] and cur_end_win[] members, depending on
  a bit set in the current_byte_status variable
- the original patch subtracted cur_start_win[] if either
  BYTE_SPLIT_OUT_MIX or BYTE_HOMOGENEOUS_SPLIT_OUT bits were set, but
  subtracted cur_end_win[] only if the first one (BYTE_SPLIT_OUT_MIX)
  was set
- from Chris Packham logs I discovered that the x530 board where the
  original patch introduced DDR training failure, only the
  BYTE_HOMOGENEOUS_SPLIT_OUT bit was set, and on our boards where the
  patch is needed only the BYTE_SPLIT_OUT_MIX is set in the
  current_byte_status variable
- this led me to the hypothesis that both cur_start_win[] and
  cur_end_win[] should be subtracted only if BYTE_SPLIT_OUT_MIX bit is
  set, the BYTE_HOMOGENEOUS_SPLIT_OUT bit shouldn't be considered at all
- this hypothesis also gains credibility when considering the commit
  title ("fix SPLIT_OUT_MIX state decision")

Hopefully this will fix things without breaking anything else.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-by: Chris Packham <judge.packham@gmail.com>
2 years agoboard: gdsys: Drop Dirk Eibach from MAINTAINERS
Marek Behún [Tue, 4 Jan 2022 15:14:54 +0000 (16:14 +0100)]
board: gdsys: Drop Dirk Eibach from MAINTAINERS

I got an

<dirk.eibach@gdsys.cc>: host mxlb.ispgateway.de[80.67.18.126] said:
  554 Sorry, no mailbox here by that name. (in reply to RCPT TO command)

when sending e-mail to dirk.eibach@gdsys.cc.

Drop Dirk Eibach from MAINTAINERS of board/gdsys/a38x and
board/gdsys/mpc8308. The latter would be left maintainerless, add
Mario Six <mario.six@gdsys.cc> (he is also maintainer of the former
board).

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoddr: marvell: a38x: Fix Synchronous vs Asynchronous mode determination
Marek Behún [Tue, 4 Jan 2022 14:57:49 +0000 (15:57 +0100)]
ddr: marvell: a38x: Fix Synchronous vs Asynchronous mode determination

Before commit 4c289425752f ("mv_ddr: a38x: add support for ddr async
mode"), Asynchornous Mode was only used when the CPU Subsystem Clock
Options[4:0] field in the SAR1 register was set to value 0x13: CPU at
2 GHz and DDR at 933 MHz.

Then commit 4c289425752f ("mv_ddr: a38x: add support for ddr async
mode") added support for Asynchornous Modes with frequencies other than
933 MHz (but at least 467 MHz), but the code it added to check for
whether Asynchornous Mode should be used is wrong: it checks whether the
frequency setting in board DDR topology map is set to value other than
MV_DDR_FREQ_SAR.

Thus boards which define a specific value, greater than 400 MHz, for DDR
frequency in their board topology (e.g. Turris Omnia defines
MV_DDR_FREQ_800), are incorrectly put into Asynchornous Mode after that
commit.

The A38x Functional Specification, section 10.12 DRAM Clocking, says:
  In Synchornous mode, the DRAM and CPU clocks are edge aligned and run
  in 1:2 or 1:3 CPU to DRAM frequency ratios.

Change the check for whether Asynchornous Mode should be used according
to this explanation in Functional Specification.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Tested-by: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoarm: kirkwood: iConnect : Update board maintainer
Tony Dinh [Sun, 2 Jan 2022 04:57:39 +0000 (20:57 -0800)]
arm: kirkwood: iConnect : Update board maintainer

Add myself as maintainer.

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoarm: kirkwood: iConnect : Add PCIe late init
Tony Dinh [Sun, 2 Jan 2022 04:57:38 +0000 (20:57 -0800)]
arm: kirkwood: iConnect : Add PCIe late init

- Add board_late_init function to enable pci_init

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agoarm: kirkwood: iConnect : Add PCIe related configs
Tony Dinh [Sun, 2 Jan 2022 04:57:37 +0000 (20:57 -0800)]
arm: kirkwood: iConnect : Add PCIe related configs

- Add MVEBU PCIe configs
- Also add SYS_THUMB_BUILD to keep u-boot image size within 512K

Signed-off-by: Tony Dinh <mibodhi@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agomtd: nand: pxa3xx: use marvell, prefix for custom DT properties
Pierre Bourdon [Sat, 25 Dec 2021 04:46:29 +0000 (05:46 +0100)]
mtd: nand: pxa3xx: use marvell, prefix for custom DT properties

The DT properties for the "enable-arbiter" and "keep-config" config
knobs were previously named inconsistently:

- The u-boot driver used "nand-enable-arbiter" and "nand-keep-config"
  names, without Marvell prefixes.

- The Linux driver uses "marvell,nand-keep-config" ("enable-arbiter"
  does not exist anymore in recent kernels, but it also used to be
  "marvell,nand-enable-arbiter").

- The device trees almost all use "marvell," prefixed names, except for
  one single instance of "nand-enable-arbiter" without vendor prefix.

This commit standardizes on the vendor prefixed version, making the
u-boot driver read from DT props "marvell,nand-enable-arbiter" and
"marvell,nand-keep-config". The one device tree using the unprefixed
version is also changed to use the new naming.

This has the side effect of making the previously no-op "marvell,"
config knobs already present in some DTs actually do something. This was
likely the original intention of the DT authors, but note that this
commit was not tested on every single impacted board.

Signed-off-by: Pierre Bourdon <delroth@gmail.com>
2 years agoarm: mvebu: a38x: serdes: Move non-serdes PCIe code to pci_mvebu.c
Pali Rohár [Tue, 21 Dec 2021 11:20:19 +0000 (12:20 +0100)]
arm: mvebu: a38x: serdes: Move non-serdes PCIe code to pci_mvebu.c

As explained in commit 3bedbcc3aa18 ("arm: mvebu: a38x: serdes: Don't
overwrite read-only SAR PCIe registers") it is required to set Maximum Link
Width bits of PCIe Root Port Link Capabilities Register depending of number
of used serdes lanes. As this register is part of PCIe address space and
not serdes address space, move it into pci_mvebu.c driver.

Read number of PCIe lanes from DT property "num-lanes" which is used also
by other PCIe controller drivers in Linux kernel. If this property is
absent then it defaults to 1. This property needs to be set to 4 for every
mvebu board which use PEX_ROOT_COMPLEX_X4 or PEX_BUS_MODE_X4.

Enabling of PCIe port needs to be done afer all registers in PCIe address
space are properly configure. For this purpose use new mvebu-reset driver
(part of system-controller) and remove this code from serdes code.

Because some PCIe ports cannot be enabled individually, it is required to
first setup all PCIe ports and then enable them.

This change contains also all required "num-lanes" and "resets" DTS
properties, to make pci_mvebu.c driver work correctly.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoarm: mvebu: Implement simple mvebu-reset driver for enabling/disabling PCIe ports
Pali Rohár [Tue, 21 Dec 2021 11:20:18 +0000 (12:20 +0100)]
arm: mvebu: Implement simple mvebu-reset driver for enabling/disabling PCIe ports

Enabling and disabling PCIe ports is done via address space of system
controller. All 32-bit Armada SoCs use low 4 bits in SoC Control 1 Register
for enabling and disabling some or more PCIe ports. Correct mapping needs
to be set in particular DTS files.

DT API for mvebu-reset is prepared for implementing resets also for other
HW blocks, but currently only PCIe is implemented via index 0.

Currently this driver is not used as PCIe ports are automatically enabled
by SerDes code executed by U-Boot SPL. But this will change in followup
patches.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agopci: pci_mvebu: Wait 100ms for Link Up in mvebu_pcie_probe()
Pali Rohár [Tue, 21 Dec 2021 11:20:17 +0000 (12:20 +0100)]
pci: pci_mvebu: Wait 100ms for Link Up in mvebu_pcie_probe()

After function mvebu_pcie_probe() returns U-Boot DM expects that PCIe link
is already up. In followup patches link initialization will be moved from
SPL to proper and therefore explicitly link up delay is required.

Delay mvebu_pcie_probe() for 100ms to ensure that PCIe link is up after
function finish. In the case when no card is connected to the PCIe slot,
this will delay probe time by 100ms, which should not be problematic.

This change fixes detection and initialization of some QCA98xx cards on
the first serdes when configured in x1 mode. Default configuration of
the first serdes on A385 is x4 mode, so it looks as if some delay is
required when x4 is changed to x1 and card correctly links with A385.
Other PCIe serdes ports on A385 are x1-only, and so they don't have this
problem.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agopci: pci_mvebu: Split initialization of PCIe ports into 3 phases
Pali Rohár [Tue, 21 Dec 2021 11:20:16 +0000 (12:20 +0100)]
pci: pci_mvebu: Split initialization of PCIe ports into 3 phases

In first phase just parse DT properties and fill struct mvebu_pcie. In
second phase setup all PCIe links (without enabling them). And in the last
third phase enable all PCIe links and create UCLASS_PCI device for each
one.

Because parsing of DT is done before UCLASS_PCI is created, we cannot use
DM for this action anymore. So remove .of_to_plat callback and replace it
by ad-hoc function for parsing DT properties and filling struct mvebu_pcie.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agopci: pci_mvebu: Remove dependency on SOC_REGS_PHY_BASE macro
Pali Rohár [Tue, 21 Dec 2021 11:20:15 +0000 (12:20 +0100)]
pci: pci_mvebu: Remove dependency on SOC_REGS_PHY_BASE macro

SoC specific macro SOC_REGS_PHY_BASE is used for two things:

* calculation of base PCIe port address
* filling PCIe register with address of internal registers

For calculating base PCIe port address use function
ofnode_translate_address() which translates DT "assigned-addresses" to
final PCIe port address.

And for calculating address of internal registers use untranslated and
translated DT "assigned-addresses".

Basically this change reads SOC_REGS_PHY_BASE address indirectly from DT.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agopci: pci_mvebu: Inline mvebu_pcie_port_parse_dt() function
Pali Rohár [Tue, 21 Dec 2021 11:20:14 +0000 (12:20 +0100)]
pci: pci_mvebu: Inline mvebu_pcie_port_parse_dt() function

Function mvebu_pcie_port_parse_dt() is called only from
mvebu_pcie_of_to_plat() function. Both these function parse DT properties
required to setup mvebu pcie. So inline mvebu_pcie_port_parse_dt() function
into mvebu_pcie_of_to_plat() to have all code related to parsing DT
properties at one place.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agopci: pci_mvebu: Fix PCIe MEM and IO resources assignment and mbus mapping
Pali Rohár [Tue, 21 Dec 2021 11:20:13 +0000 (12:20 +0100)]
pci: pci_mvebu: Fix PCIe MEM and IO resources assignment and mbus mapping

Do not call pci_set_region() for resources which were not properly mapped.
This prevents U-Boot to access unmapped memory space.

Update MBUS_PCI_MEM_SIZE and MBUS_PCI_IO_SIZE macros to cover all PCIe MEM
and IO ranges. Previously these macros covered only address ranges for the
first PCIe port. Between MBUS_PCI_IO_BASE and MBUS_PCI_MEM_BASE there is
space for six 128 MB long address ranges. So set MBUS_PCI_MEM_SIZE to value
of 6*128 MB. Similarly set MBUS_PCI_IO_SIZE to 6*64 KB.

Function resource_size() returns zero when start address is 0 and end
address is -1. So set invalid resources to these values to indicate that
resource has no mapping.

Split global PCIe MEM and IO resources (defined by MBUS_PCI_*_* macros)
into PCIe ports in mvebu_pcie_bind() function which allocates per-port
based struct mvebu_pcie, instead of using global state variables
mvebu_pcie_membase and mvebu_pcie_iobase. This makes pci_mvebu.c driver
independent of global static variables (which store the state of
allocation) and allows to bind and unbind the driver more times.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <marek.behun@nic.cz>
2 years agoboard: gdsys: a38x: Enable PCIe link 2 in spl_board_init()
Pali Rohár [Tue, 21 Dec 2021 11:20:12 +0000 (12:20 +0100)]
board: gdsys: a38x: Enable PCIe link 2 in spl_board_init()

A385 controlcenterdc board does not use PCI DM properly and touches some
PCIe devices directly in its board code.

This controlcenterdc spl_board_init() function expects that PCIe link is
already initialized. Link itself is initialized in a38x serdes code but
this will change in future and link initialization will be postponed from
U-Boot SPL to proper U-Boot.

So explicitly enable PCIe link 2 in spl_board_init() function via
SoC Control Register 1 to not break this code by future changes. This board
has PCIe link 2 just x1, so no additional initialization (except enabling
PCIe port) is needed.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoarm: mvebu: Convert board_pex_config() to CONFIG_SPL_BOARD_INIT
Pali Rohár [Tue, 21 Dec 2021 11:20:11 +0000 (12:20 +0100)]
arm: mvebu: Convert board_pex_config() to CONFIG_SPL_BOARD_INIT

The only user of board_pex_config() weak function is A385 controlcenterdc
board. It looks like that code in its board_pex_config() function needs to
be executed after PCIe link is up. Therefore put this code into
spl_board_init() function which is called after a38x serdes initialization,
and therefore it is after the serdes hws_pex_config() function finishes
(which is the state before this change).

With this change completely remove board_pex_config() function as it is not
used anymore.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoMerge tag 'dm-pull-13jan22' of https://source.denx.de/u-boot/custodians/u-boot-dm
Tom Rini [Thu, 13 Jan 2022 19:33:02 +0000 (14:33 -0500)]
Merge tag 'dm-pull-13jan22' of https://source.denx.de/u-boot/custodians/u-boot-dm

bloblist prep for standard passage
switch order of pinctrl and power domain calls
various minor fixes

2 years agobloblist: Relicense to allow BSD-3-Clause
Simon Glass [Thu, 13 Jan 2022 02:26:25 +0000 (19:26 -0700)]
bloblist: Relicense to allow BSD-3-Clause

This implementation is intended to be copied to other projects and
modified, to as to foster a standard means of communcating runtime
information between firmware projects.

The GPL-2 license is too restrictive for some projects, e.g. those
intended as reference implementations rather than designed for
collaborative open-source development.

Update the license to make this easier to share.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: doc: Bring in the API documentation
Simon Glass [Thu, 13 Jan 2022 02:26:24 +0000 (19:26 -0700)]
bloblist: doc: Bring in the API documentation

FIx up various minor errors and add the API documentation to the bloblist
docs, since it is quite useful to see it in the same place.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Add functions to obtain base address and size
Simon Glass [Thu, 13 Jan 2022 02:26:23 +0000 (19:26 -0700)]
bloblist: Add functions to obtain base address and size

Add a few convenience functions to obtain useful information about the
bloblist.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Refactor Kconfig to support alloc or fixed
Simon Glass [Thu, 13 Jan 2022 02:26:22 +0000 (19:26 -0700)]
bloblist: Refactor Kconfig to support alloc or fixed

At present we do support allocating the bloblist but the Kconfig is a bit
strange, since we still have to specify an address in that case. Partly
this is because it is a pain to have CONFIG options that disappears when
its dependency is enabled. It means that we must have #ifdefs in the code,
either in the C code or header file.

Make use of IF_ENABLED_INT() and its friend to solve that problem, so we
can separate out the location of bloblist into a choice. Put the address
and size into variables so we can log the result.

Add the options for SPL as well, so we can use CONFIG_IS_ENABLED().

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Use 'phase' consistently for bloblists
Simon Glass [Thu, 13 Jan 2022 02:26:21 +0000 (19:26 -0700)]
bloblist: Use 'phase' consistently for bloblists

We typically refer to the different U-Boot builds that a board runs
through as phases. This avoids confusion with the word 'stage' which is
used with bootstage, for example. Fix up some bloblist Kconfig help
which uses the wrong term.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Use LOG_CATEGORY to simply logging
Simon Glass [Thu, 13 Jan 2022 02:26:20 +0000 (19:26 -0700)]
bloblist: Use LOG_CATEGORY to simply logging

Use the convenience functions to improve readability.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Use explicit numbering for the tags
Simon Glass [Thu, 13 Jan 2022 02:26:19 +0000 (19:26 -0700)]
bloblist: Use explicit numbering for the tags

At present if someone adds a tag in the middle of the list it works well
enough within a U-Boot build. But if these tags are used in another
project, or with an older version of SPL, the numbers make become
inconsistent.

Use explicit tag numbers that never change, to resolve this problem.
Allocate areas for existing U-Boot tags and set up an area for use by
projects and vendors, as well as for private use. Keep tags above
0x10000 unallocated for now.

Update bloblist_tag_name() and the tests to work with this new setup.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Drop unused tags
Simon Glass [Thu, 13 Jan 2022 02:26:18 +0000 (19:26 -0700)]
bloblist: Drop unused tags

The EC event log tag is no-longer used. The vboot handoff is now handled
by the vboot context instead.

Drop these unused tags.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Rename the SPL tag
Simon Glass [Thu, 13 Jan 2022 02:26:17 +0000 (19:26 -0700)]
bloblist: Rename the SPL tag

Add a U_BOOT prefix to this tag since it is specific to the U-Boot
project.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobloblist: Put the magic number first
Simon Glass [Thu, 13 Jan 2022 02:26:16 +0000 (19:26 -0700)]
bloblist: Put the magic number first

It seems best to put the magic number right at the start of the bloblist
header, so it is easier to check. This is how devicetree works.

Make this change now, before other projects make use of bloblist. Other
changes may be needed / discussed, but that is TBD.

Add a checker function as well.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Drop SPL_BUILD macro
Simon Glass [Thu, 13 Jan 2022 02:26:15 +0000 (19:26 -0700)]
fdt: Drop SPL_BUILD macro

This old macro is not needed anymore since we can use IS_ENABLED() now.
Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agostddef: Avoid warning with clang with offsetof()
Simon Glass [Thu, 13 Jan 2022 13:47:55 +0000 (06:47 -0700)]
stddef: Avoid warning with clang with offsetof()

Some bright sparks have decided that a cast on a constant cannot be a
constant, so offsetof() produces this warning on clang-10:

include/intel_gnvs.h:113:1: error: static_assert expression is not an
integral constant expression
check_member(acpi_global_nvs, unused2, GNVS_CHROMEOS_ACPI_OFFSET);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kernel.h:284:2: note: expanded from macro 'check_member'
        offsetof(struct structure, member) == (offset), \
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/stddef.h:20:32: note: expanded from macro 'offsetof'
                                ^
include/intel_gnvs.h:113:1: note: cast that performs the conversions of
a reinterpret_cast is ot allowed in a constant expression
include/linux/stddef.h:20:33: note: expanded from macro 'offsetof'

Fix it by using the compiler built-in version, if available. This syncs
the function to the same implementation as Linux v5.16 in this header
file.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agogenboardscfg: limit to 240 jobs
Andre Przywara [Tue, 11 Jan 2022 15:34:50 +0000 (15:34 +0000)]
genboardscfg: limit to 240 jobs

When genboardscfg.py is run on machines with 255 or more cores, the
process will consume more than 1024 file descriptors, which is a common
standard ulimit for user processes. As a consequence it will fail with a
lenghty Python trace, with the almost hidden message:
OSError: [Errno 24] Too many open files

It's somewhat questionable whether that level of parallelity is actually
useful for genboardscfg, so we limit the *default* number of jobs to the
safe number of 240, to avoid the problem.
If a user persists, she can still force a higher number via the -j
parameter - hopefully having raised the ulimit accordingly beforehand.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: compatibility of os_get_filesize()
Heinrich Schuchardt [Tue, 11 Jan 2022 00:50:24 +0000 (01:50 +0100)]
sandbox: compatibility of os_get_filesize()

U-Boot define loff_t as long long. But the header
/usr/include/linux/types.h may not define it.
This has lead to a build error on Alpine Linux.

So let's use long long instead of loff_t for
the size parameter of function os_get_filesize().

Reported-by: Milan P. Stanić <mps@arvanta.net>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Tested-by: Milan P. Stanić <mps@arvanta.net>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopatman: Support absolute and ~user-relative alias files
Brian Norris [Fri, 7 Jan 2022 23:15:55 +0000 (15:15 -0800)]
patman: Support absolute and ~user-relative alias files

Python doesn't naturally support tilde (~) as a user-home marker in
paths, but git-config does. So we need to resolve it before continuing.

We also shouldn't blindly join the top-level tree with the aliasesfile
path, because it might be an absolute path.

This resolves warnings like the following:

  Warning: Cannot find alias file '/path/to/source/tree/~/.git-email'

Seen when git-config is like:

  $ git config sendemail.aliasesfile
  ~/.git-email

Signed-off-by: Brian Norris <briannorris@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Otavio Salvador <otavio@ossystems.com.br>
2 years agodm: core: Switch order of pinctrl and power domain calls
Michal Simek [Fri, 7 Jan 2022 15:38:09 +0000 (16:38 +0100)]
dm: core: Switch order of pinctrl and power domain calls

The commit 3ad307784847 ("dm: core: device: enable power domain in probe")
introduced enabling power domain when device is probed.
By checking this sequence in Linux kernel was found that power domain is
handled first followed by pinctrl setting.

This patch is switching this order to follow Linux kernel that power
domains are handled first follow by pinctrl setting.

The issue was found on Xilinx Kria SOM where firmware is blocking setting
up pin configuration/muxes without enabling power domain for the specific
IP first.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoMerge https://source.denx.de/u-boot/custodians/u-boot-marvell
Tom Rini [Thu, 13 Jan 2022 13:00:02 +0000 (08:00 -0500)]
Merge https://source.denx.de/u-boot/custodians/u-boot-marvell

- Add Apple M1 watchdog timer (Mark)

2 years agoMerge branch '2022-01-13-assorted-spelling-fixes'
Tom Rini [Thu, 13 Jan 2022 12:57:56 +0000 (07:57 -0500)]
Merge branch '2022-01-13-assorted-spelling-fixes'

- Fix a large number of spelling mistakes

2 years agodrivers/usb/gadget/dwc2_udc_otg.c: Fix spelling of "resetting".
Vagrant Cascadian [Tue, 21 Dec 2021 21:07:02 +0000 (13:07 -0800)]
drivers/usb/gadget/dwc2_udc_otg.c: Fix spelling of "resetting".

2 years agodrivers/ddr/altera/sequencer.c: Fix spelling of "resetting".
Vagrant Cascadian [Tue, 21 Dec 2021 21:07:01 +0000 (13:07 -0800)]
drivers/ddr/altera/sequencer.c: Fix spelling of "resetting".

2 years agoarch/arm/mach-keystone/ddr3.c: Fix spelling of "resetting".
Vagrant Cascadian [Tue, 21 Dec 2021 21:07:00 +0000 (13:07 -0800)]
arch/arm/mach-keystone/ddr3.c: Fix spelling of "resetting".

2 years agodrivers/core/of_addr.c: Fix spelling of "shouldn't".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:59 +0000 (13:06 -0800)]
drivers/core/of_addr.c: Fix spelling of "shouldn't".

2 years agocommon/fdt_support.c: Fix spelling of "shouldn't".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:58 +0000 (13:06 -0800)]
common/fdt_support.c: Fix spelling of "shouldn't".

2 years agodrivers/net/fec_mxc.c: Fix spelling of "resetting".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:57 +0000 (13:06 -0800)]
drivers/net/fec_mxc.c: Fix spelling of "resetting".

2 years agocmd/Kconfig: Fix spelling of "resetting".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:56 +0000 (13:06 -0800)]
cmd/Kconfig: Fix spelling of "resetting".

2 years agoarch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c: Fix spelling of "resetting".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:55 +0000 (13:06 -0800)]
arch/arm/cpu/armv8/fsl-layerscape/fsl_lsch2_serdes.c: Fix spelling of "resetting".

2 years agodrivers/usb/musb/musb_udc.c: Fix spelling of "mismatch".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:54 +0000 (13:06 -0800)]
drivers/usb/musb/musb_udc.c: Fix spelling of "mismatch".

2 years agodrivers/mtd/ubispl/ubispl.c: Fix spelling of "mismatched".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:53 +0000 (13:06 -0800)]
drivers/mtd/ubispl/ubispl.c: Fix spelling of "mismatched".

2 years agoarch/arm/mach-bcm283x/msg.c: Fix spelling of "Failed".
Vagrant Cascadian [Tue, 21 Dec 2021 21:06:52 +0000 (13:06 -0800)]
arch/arm/mach-bcm283x/msg.c: Fix spelling of "Failed".

2 years agotreewide: invaild -> invalid
Sean Anderson [Wed, 1 Dec 2021 19:26:53 +0000 (14:26 -0500)]
treewide: invaild -> invalid

Somewhere along the way, someone misspelt "invalid" and it got copied
everywhere. Fix it.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Alexander Dahl <ada@thorsis.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agoMerge branch '2022-01-12-assorted-updates'
Tom Rini [Thu, 13 Jan 2022 12:34:27 +0000 (07:34 -0500)]
Merge branch '2022-01-12-assorted-updates'

- Fix binman fake blob support to write outside source directory
- Azure now has stages in the pipeline
- Update to latest focal tag for containers in CI.
- Finish dropping LynxOS
- Add migration message for timer code

2 years agoarm: apple: Use watchdog timer for system reset
Mark Kettenis [Wed, 12 Jan 2022 18:55:17 +0000 (19:55 +0100)]
arm: apple: Use watchdog timer for system reset

Rely on the new watchdog timer driver and the sysreset uclass to
reset the system.  This gets rid of hard-coded addresses and
should work on systems based on the new M1 Pro and M1 Max SoCs
as well.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-on: Apple M1 Macbook
Tested-by: Simon Glass <sjg@chromium.org>
2 years agoarm: dts: apple: Add watchdog timer node
Mark Kettenis [Wed, 12 Jan 2022 18:55:16 +0000 (19:55 +0100)]
arm: dts: apple: Add watchdog timer node

Add a node for the watchdog timer based on the proposed Linux
device tree bindings.

Remove the old reboot node which was a watchdog timert node in
disguise using a preliminary device tree binding.

Signed-off-by: Sven Peter <sven@svenpeter.dev>
Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-on: Apple M1 Macbook
Tested-by: Simon Glass <sjg@chromium.org>
2 years agowatchdog: Add a driver for the Apple watchdog
Mark Kettenis [Wed, 12 Jan 2022 18:55:15 +0000 (19:55 +0100)]
watchdog: Add a driver for the Apple watchdog

This driver supports the watchdog timer found on Apple's M1 SoC.
On systems that use these SoC, the watchdog timer is the primary
way to reboot the system.

Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Sven Peter <sven@svenpeter.dev>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Tested-on: Apple M1 Macbook
Tested-by: Simon Glass <sjg@chromium.org>
2 years agotimer: Add a migration message
Simon Glass [Sat, 18 Dec 2021 18:27:29 +0000 (11:27 -0700)]
timer: Add a migration message

Some boards still use the old timer mechanism. Set a deadline for them to
update to driver model. Point to some examples as well.

This needs a bit of a strange rule to avoid an error on some boards.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoLynxOS is no longer supported
Thomas Huth [Sat, 13 Nov 2021 17:13:50 +0000 (18:13 +0100)]
LynxOS is no longer supported

LynxOS needed the do_bootm_lynxkdi() function that got removed in
7e713067ee ("Remove LYNX KDI remainders") - and that function needed
a lynxkdi_boot() function, where the last implementation had been
removed in 98f705c9ce ("powerpc: remove 4xx support") already. Looks
like this OS is definitely not supported anymore, so remove it from
the corresponding lists.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agobinman: Write fake blobs to the output directory
Simon Glass [Wed, 12 Jan 2022 20:10:36 +0000 (13:10 -0700)]
binman: Write fake blobs to the output directory

At present binman writes fake blobs to the current directory. This is not
very helpful, since the files serve no useful purpose once binman has
finished. They clutter up the source directory and affect future runs,
since the files in the current directory are often used in preference to
those in the board directory.

To avoid these problems, write them to the output directory instead.

Move the file-creation code to the Entry base class, so it can be used by
any entry type that needs it. This is required since some entry types,
such as Entry_blob_ext_list, are not subclasses of Entry_blob.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agobinman: Renumber the fake blob dts
Simon Glass [Wed, 12 Jan 2022 20:10:35 +0000 (13:10 -0700)]
binman: Renumber the fake blob dts

Use a unique number instead of the current 203, which is used by 203_fip
as well. Reformat the code to avoid a long line.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoCI, Dockerfile: Update to latest "focal" tag
Tom Rini [Wed, 12 Jan 2022 00:14:29 +0000 (19:14 -0500)]
CI, Dockerfile: Update to latest "focal" tag

Bring us to the focal-20220105 tag and rebuild our images on top of
this.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoci: azure: Update to use stages
Tom Rini [Wed, 12 Jan 2022 00:14:28 +0000 (19:14 -0500)]
ci: azure: Update to use stages

Follow what we do in GitLab CI where we break the jobs up in to stages
such that if earlier and often quicker sanity tests fail we don't run
everything else.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoMakefile: Add more files to clean list
Adam Ford [Wed, 22 Dec 2021 16:40:27 +0000 (10:40 -0600)]
Makefile: Add more files to clean list

When building for i.mx8m boards with binman, a few more additional
files are created which should be removed when running 'make clean'

Signed-off-by: Adam Ford <aford173@gmail.com>
2 years agoMerge branch '2022-01-12-pci-updates'
Tom Rini [Thu, 13 Jan 2022 01:49:39 +0000 (20:49 -0500)]
Merge branch '2022-01-12-pci-updates'

- PCI code clean up and bug fixes from Pali

2 years agopci: sh7751: Fix access to config space via PCI_CONF1_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:52 +0000 (11:42 +0100)]
pci: sh7751: Fix access to config space via PCI_CONF1_ADDRESS() macro

sh7751 platform uses standard format of Config Address for PCI
Configuration Mechanism #1.

Commit 72c2f4acd76f ("pci: sh7751: Convert to DM and DT probing") which did
conversion of PCI sh7751 driver to DM, broke access to config space as that
commit somehow swapped device and function bits in config address.

Fix all these issues by using new U-Boot macro PCI_CONF1_ADDRESS() which
calculates Config Address correctly.

Also remove nonsense function sh7751_pci_addr_valid() which was introduced
in commit 72c2f4acd76f ("pci: sh7751: Convert to DM and DT probing")
probably due to workarounded issues with mixing/swapping device and
function bits of config address which probably resulted in non-working
access to some devices. With correct composing of config address there
should not be such issue anymore.

Signed-off-by: Pali Rohár <pali@kernel.org>
Fixes: 72c2f4acd76f ("pci: sh7751: Convert to DM and DT probing")
Cc: Marek Vasut <marek.vasut+renesas@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agom68k: mcf5445x: pci: Use PCI_CONF1_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:51 +0000 (11:42 +0100)]
m68k: mcf5445x: pci: Use PCI_CONF1_ADDRESS() macro

mcf5445x platform uses standard format of Config Address for PCI
Configuration Mechanism #1. So use new U-Boot macro PCI_CONF1_ADDRESS().

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agox86: pci: Use PCI_CONF1_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:50 +0000 (11:42 +0100)]
x86: pci: Use PCI_CONF1_ADDRESS() macro

x86 platform uses standard format of Config Address for PCI Configuration
Mechanism #1. So use new U-Boot macro PCI_CONF1_ADDRESS().

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: sh7780: Use PCI_CONF1_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:49 +0000 (11:42 +0100)]
pci: sh7780: Use PCI_CONF1_ADDRESS() macro

PCI sh7780 driver uses standard format of Config Address for PCI
Configuration Mechanism #1.

So use new U-Boot macro PCI_CONF1_ADDRESS().

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: mediatek: Use PCI_CONF1_EXT_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:48 +0000 (11:42 +0100)]
pci: mediatek: Use PCI_CONF1_EXT_ADDRESS() macro

PCI mediatek driver uses extended format of Config Address for PCI
Configuration Mechanism #1 but with cleared Enable bit.

So use new U-Boot macro PCI_CONF1_EXT_ADDRESS() with clearing
PCI_CONF1_ENABLE bit and remove old custom driver address macros.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: fsl: Use PCI_CONF1_EXT_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:47 +0000 (11:42 +0100)]
pci: fsl: Use PCI_CONF1_EXT_ADDRESS() macro

PCI fsl driver uses extended format of Config Address for PCI
Configuration Mechanism #1.

So use new U-Boot macro PCI_CONF1_EXT_ADDRESS().

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: tegra: Use PCI_CONF1_EXT_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:46 +0000 (11:42 +0100)]
pci: tegra: Use PCI_CONF1_EXT_ADDRESS() macro

PCI tegra driver uses extended format of Config Address for PCI
Configuration Mechanism #1 but with cleared Enable bit.

So use new U-Boot macro PCI_CONF1_EXT_ADDRESS() with clearing
PCI_CONF1_ENABLE bit and remove old custom driver address function.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: mvebu: Use PCI_CONF1_EXT_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:45 +0000 (11:42 +0100)]
pci: mvebu: Use PCI_CONF1_EXT_ADDRESS() macro

PCI mvebu driver uses extended format of Config Address for PCI
Configuration Mechanism #1.

So use new U-Boot macro PCI_CONF1_EXT_ADDRESS() and remove old custom
driver address macros.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: msc01: Use PCI_CONF1_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:44 +0000 (11:42 +0100)]
pci: msc01: Use PCI_CONF1_ADDRESS() macro

PCI msc01 driver uses standard format of Config Address for PCI
Configuration Mechanism #1 but with cleared Enable bit.

So use new U-Boot macro PCI_CONF1_ADDRESS() with clearing PCI_CONF1_ENABLE
bit and remove old custom driver address macros.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: mpc85xx: Use PCI_CONF1_EXT_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:43 +0000 (11:42 +0100)]
pci: mpc85xx: Use PCI_CONF1_EXT_ADDRESS() macro

PCI mpc85xx driver uses extended format of Config Address for PCI
Configuration Mechanism #1.

So use new U-Boot macro PCI_CONF1_EXT_ADDRESS().

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: gt64120: Use PCI_CONF1_ADDRESS() macro
Pali Rohár [Fri, 26 Nov 2021 10:42:42 +0000 (11:42 +0100)]
pci: gt64120: Use PCI_CONF1_ADDRESS() macro

PCI gt64120 driver uses standard format of Config Address for PCI
Configuration Mechanism #1.

So use new U-Boot macro PCI_CONF1_ADDRESS() and remove old custom driver
address macros.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: Add standard PCI Config Address macros
Pali Rohár [Fri, 26 Nov 2021 10:42:41 +0000 (11:42 +0100)]
pci: Add standard PCI Config Address macros

Lot of PCI and PCIe controllers are using standard Config Address for PCI
Configuration Mechanism #1 or its extended version.

So add PCI_CONF1_ADDRESS() and PCI_CONF1_EXT_ADDRESS() macros into U-Boot's
pci.h header file which can be suitable for most PCI and PCIe controller
drivers. Drivers do not have to invent their own macros and can use these
new U-Boot macros.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2 years agopci: When disabling pref MEM set all base bits
Pali Rohár [Thu, 25 Nov 2021 10:34:37 +0000 (11:34 +0100)]
pci: When disabling pref MEM set all base bits

It is common to set all base address bits to one and all limit address bits
to zero for disabling address forwarding. Forwarding is disabled when base
address is higher than limit address, so this change should not have any
effect.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agopci: Disable I/O forwarding during autoconfiguration if unsupported
Pali Rohár [Thu, 25 Nov 2021 10:32:43 +0000 (11:32 +0100)]
pci: Disable I/O forwarding during autoconfiguration if unsupported

If U-Boot does not have any I/O resource for assignment then disable I/O
forwarding in PCI bridge autoconfiguration code. Default initial state of
PCI bridge IO registers is unspecified, therefore they can be in enabled if
U-Boot does not touch them.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agopci: Fix register for determining type of IO base address
Pali Rohár [Thu, 25 Nov 2021 10:30:58 +0000 (11:30 +0100)]
pci: Fix register for determining type of IO base address

Function dm_pciauto_prescan_setup_bridge() configures base address
registers, therefore it should read type of IO from base address registers
(and not from limit address registers).

Note that base and limit address registers should have same type, so this
change is just usage correction and has no functional change on correctly
working hardware.

Fixes: 8e85f36a8fab ("pci: Fix configuring io/memory base and limit registers of PCI bridges")
Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agopci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro
Pali Rohár [Wed, 24 Nov 2021 17:00:33 +0000 (18:00 +0100)]
pci: pci_octeontx: Use PCIE_ECAM_OFFSET() macro

Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2 years agopci: pcie_iproc: Use PCIE_ECAM_OFFSET() macro
Pali Rohár [Wed, 24 Nov 2021 17:00:32 +0000 (18:00 +0100)]
pci: pcie_iproc: Use PCIE_ECAM_OFFSET() macro

Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agopci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro
Pali Rohár [Wed, 24 Nov 2021 17:00:31 +0000 (18:00 +0100)]
pci: pcie-brcmstb: Use PCIE_ECAM_OFFSET() macro

Replace custom driver macros by PCIE_ECAM_OFFSET() macro from pci.h

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org>
2 years agovexpress64: Remove unused macro XR3PCI_ECAM_OFFSET
Pali Rohár [Wed, 24 Nov 2021 17:00:30 +0000 (18:00 +0100)]
vexpress64: Remove unused macro XR3PCI_ECAM_OFFSET

Macro XR3PCI_ECAM_OFFSET is unused and in case it would be needed in future
it can be replaced by standard PCIE_ECAM_OFFSET macro from pci.h file.

Signed-off-by: Pali Rohár <pali@kernel.org>
2 years agoMerge https://source.denx.de/u-boot/custodians/u-boot-mmc
Tom Rini [Wed, 12 Jan 2022 03:21:15 +0000 (22:21 -0500)]
Merge https://source.denx.de/u-boot/custodians/u-boot-mmc

2 years agommc: unconditionally define mmc_deinit()
Heinrich Schuchardt [Sat, 18 Dec 2021 09:53:48 +0000 (10:53 +0100)]
mmc: unconditionally define mmc_deinit()

We want to replace '#ifdef' by 'if (IS_ENABLED(CONFIG_...))' in our code.
Therefore functions should be defined unconditionally even if they are not
implemented.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Acked-by: Peng Fan <peng.fan@nxp.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: dwmmc: return a proper error code when busy
John Keeping [Tue, 7 Dec 2021 16:09:35 +0000 (16:09 +0000)]
mmc: dwmmc: return a proper error code when busy

When failing to send a command because the hardware is busy, return
EBUSY to indicate the cause instead of just -1.

Signed-off-by: John Keeping <john@metanate.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: set sysctl register for clock initialization
Sean Anderson [Tue, 23 Nov 2021 20:03:47 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: set sysctl register for clock initialization

[ fsl_esdhc commit 263ddfc3454ead3a988adef39b962479adce2b28 ]

The initial clock setting should be through sysctl register only,
while the mmc_set_clock() will call mmc_set_ios() introduce other
configurations like bus width, mode, and so on.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agommc: fsl_esdhc_imx: Replace more #ifdefs by if
Sean Anderson [Tue, 23 Nov 2021 20:03:46 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: Replace more #ifdefs by if

This builds on the previous patch by converting yet more preprocessor
macros to C ifs. This is split off so that the changes adapted from
Micheal's patch may be clearly distinguished from the ones I have
authored myself.

MMC_SUPPORTS_TUNING should really get a Kconfig conversion. And DM_GPIO
needs some -ENOSYS stubs when it isn't defined.

Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agommc: fsl_esdhc_imx: replace most #ifdefs by IS_ENABLED()
Sean Anderson [Tue, 23 Nov 2021 20:03:45 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: replace most #ifdefs by IS_ENABLED()

[ fsl_esdhc commit 52faec31827ec1a1837977e29c067424426634c5 ]

Make the code cleaner and drop the old-style #ifdef constructs where it is
possible.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agommc: fsl_esdhc_imx: simplify esdhc_setup_data()
Sean Anderson [Tue, 23 Nov 2021 20:03:44 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: simplify esdhc_setup_data()

[ fsl_esdhc commit 7e48a028a42c111ba38a90b86e5f57dace980fa0 ]

First, we need the waterlevel setting for PIO mode only. Secondy, both DMA
setup code is identical for both directions, except for the data pointer.
Thus, unify them.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: use dma-mapping API
Sean Anderson [Tue, 23 Nov 2021 20:03:43 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: use dma-mapping API

[ fsl_esdhc commit b1ba1460a445bcc67972a617625d0349e4f22b31 ]

Use the dma_{map,unmap}_single() calls. These will take care of the
flushing and invalidation of caches.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: simplify 64bit check for SDMA transfers
Sean Anderson [Tue, 23 Nov 2021 20:03:42 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: simplify 64bit check for SDMA transfers

[ fsl_esdhc commit da86e8cfcb03ed5c1d8e0718bc8bc8583e60ced8 ]

SDMA can only do DMA with 32 bit addresses. This is true for all
architectures (just doesn't apply to 32 bit ones). Simplify the code and
remove unnecessary CONFIG_FSL_LAYERSCAPE.

Also make the error message more concise.

Signed-off-by: Michael Walle <michael@walle.cc>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: fix mmc->clock with actual clock
Sean Anderson [Tue, 23 Nov 2021 20:03:41 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: fix mmc->clock with actual clock

[ fsl_esdhc commit 30f6444d024a74ee48aa6969c1531aecd3c59deb ]

Fix mmc->clock with actual clock which is divided by the
controller, and record it with priv->clock.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: drop redundant code for non-removable feature
Sean Anderson [Tue, 23 Nov 2021 20:03:40 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: drop redundant code for non-removable feature

[ fsl_esdhc commit commit 08197cb8dff7cd097ab07a325093043c39d19bbd ]

Drop redundant code for non-removable feature. "non-removable" property
has been read in mmc_of_parse().

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
[ set MMC_CAP_NONREMOVABLE in plat->cfg.host_caps ]
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
2 years agommc: fsl_esdhc_imx: clean up bus width configuration code
Sean Anderson [Tue, 23 Nov 2021 20:03:39 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: clean up bus width configuration code

[ fsl_esdhc commit 07bae1de382723b94244096953b05225572728cd ]

This patch is to clean up bus width setting code.

- For DM_MMC, remove getting "bus-width" from device tree.
  This has been done in mmc_of_parse().

- For non-DM_MMC, move bus width configuration from fsl_esdhc_init()
  to fsl_esdhc_initialize() which is non-DM_MMC specific.
  And fix up bus width configuration to support only 1-bit, 4-bit,
  or 8-bit. Keep using 8-bit if it's not set because many platforms
  use driver without providing max bus width.

- Remove bus_width member from fsl_esdhc_priv structure.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
[ converted if statement to switch ]
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: fix voltage validation
Sean Anderson [Tue, 23 Nov 2021 20:03:38 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: fix voltage validation

[ fsl_esdhc commit 5b05fc0310cd933acf76ee661577c6b07a95e684 ]

Voltage validation should be done by CMD8. Current comparison between
mmc_cfg voltages and host voltage capabilities is meaningless.
So drop current comparison and let voltage validation is through CMD8.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: remove redundant DM_MMC checking
Sean Anderson [Tue, 23 Nov 2021 20:03:37 +0000 (15:03 -0500)]
mmc: fsl_esdhc_imx: remove redundant DM_MMC checking

[ fsl_esdhc commit 2913926f3b3dec282f8773e3c02377c9600d8267 ]

Remove redundant DM_MMC checking which is already in DM_MMC conditional
compile block.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agommc: fsl_esdhc_imx: make BLK as hard requirement of DM_MMC
Sean Anderson [Tue, 11 Jan 2022 23:18:52 +0000 (08:18 +0900)]
mmc: fsl_esdhc_imx: make BLK as hard requirement of DM_MMC

U-boot prefers DM_MMC + BLK for MMC. Now eSDHC driver has already
support it, so let's force to use it.

- Drop non-BLK support for DM_MMC introduced by below patch.
   66fa035 mmc: fsl_esdhc: fix probe issue without CONFIG_BLK enabled

- Support only DM_MMC + BLK (assuming BLK is always enabled for DM_MMC).

- Use DM_MMC instead of BLK for conditional compile.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
2 years agoMerge branch 'next'
Tom Rini [Mon, 10 Jan 2022 19:01:57 +0000 (14:01 -0500)]
Merge branch 'next'

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoPrepare v2022.01 v2022.01
Tom Rini [Mon, 10 Jan 2022 18:46:34 +0000 (13:46 -0500)]
Prepare v2022.01

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years ago.mailmap: add Atish Patra, Anup Patel
Heinrich Schuchardt [Sun, 9 Jan 2022 17:51:27 +0000 (18:51 +0100)]
.mailmap: add Atish Patra, Anup Patel

Both have left Western Digital.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agolib/rsa: avoid -Wdiscarded-qualifiers
Heinrich Schuchardt [Sun, 9 Jan 2022 14:39:40 +0000 (15:39 +0100)]
lib/rsa: avoid -Wdiscarded-qualifiers

The return type of EVP_PKEY_get0_RSA() is const struct rsa_st *.
Our code drops the const qualifier leading to

In file included from tools/lib/rsa/rsa-sign.c:1:
./tools/../lib/rsa/rsa-sign.c: In function ‘rsa_add_verify_data’:
./tools/../lib/rsa/rsa-sign.c:631:13: warning:
assignment discards ‘const’ qualifier from pointer target type
[-Wdiscarded-qualifiers]
  631 |         rsa = EVP_PKEY_get0_RSA(pkey);
      |             ^

Add a type conversion.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoMerge tag 'u-boot-amlogic-20220107' of https://source.denx.de/u-boot/custodians/u...
Tom Rini [Sun, 9 Jan 2022 12:56:31 +0000 (07:56 -0500)]
Merge tag 'u-boot-amlogic-20220107' of https://source.denx.de/u-boot/custodians/u-boot-amlogic into next

- disable CONFIG_NET_RANDOM_ETHADDR when unnecessary on amlogic based configs
- meson64_android: add board specific env settings, in order to support VIM3/L for android
- add changes to support VIM3/L android boot by using meson64_android.h config