Merge tag 'v2023.07-rc6' into next

Prepare v2023.07-rc6
This commit is contained in:
Tom Rini
2023-07-05 11:28:55 -04:00
124 changed files with 5042 additions and 4066 deletions

103
doc/usage/cmd/bind.rst Normal file
View File

@@ -0,0 +1,103 @@
.. SPDX-License-Identifier: GPL-2.0+:
bind command
============
Synopsis
--------
::
bind <node path> <driver>
bind <class> <index> <driver>
Description
-----------
The bind command is used to bind a device to a driver. This makes the
device available in U-Boot.
While binding to a *node path* typically provides a working device
binding by parent node and driver may lead to a device that is only
partially initialized.
node path
path of the device's device-tree node
class
device class name
index
index of the parent device in the device class
driver
device driver name
Example
-------
Given a system with a real time clock device with device path */pl031@9010000*
and using driver rtc-pl031 unbinding and binding of the device is demonstrated
using the two alternative bind syntaxes.
.. code-block::
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
...
rtc 0 [ ] rtc-pl031 |-- pl031@9010000
...
=> fdt addr $fdtcontroladdr
Working FDT set to 7ed7fdb0
=> fdt print
/ {
interrupt-parent = <0x00008003>;
model = "linux,dummy-virt";
#size-cells = <0x00000002>;
#address-cells = <0x00000002>;
compatible = "linux,dummy-virt";
...
pl031@9010000 {
clock-names = "apb_pclk";
clocks = <0x00008000>;
interrupts = <0x00000000 0x00000002 0x00000004>;
reg = <0x00000000 0x09010000 0x00000000 0x00001000>;
compatible = "arm,pl031", "arm,primecell";
};
...
}
=> unbind /pl031@9010000
=> date
Cannot find RTC: err=-19
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
...
=> bind /pl031@9010000 rtc-pl031
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
...
rtc 0 [ ] rtc-pl031 |-- pl031@9010000
=> date
Date: 2023-06-22 (Thursday) Time: 15:14:51
=> unbind rtc 0 rtc-pl031
=> bind root 0 rtc-pl031
=> date
Date: 1980-08-19 (Tuesday) Time: 14:45:30
Obviously the device is not initialized correctly by the last bind command.
Configuration
-------------
The bind command is only available if CONFIG_CMD_BIND=y.
Return code
-----------
The return code $? is 0 (true) on success and 1 (false) on failure.

300
doc/usage/cmd/bootm.rst Normal file
View File

@@ -0,0 +1,300 @@
.. SPDX-License-Identifier: GPL-2.0+
bootm command
=============
Synopsis
--------
::
bootm [fit_addr]#<conf>[#extra-conf]
bootm [[fit_addr]:<os_subimg>] [[<fit_addr2>]:<rd_subimg2>] [[<fit_addr3>]:<fdt_subimg>]
bootm <addr1> [[<addr2> [<addr3>]] # Legacy boot
Description
-----------
The *bootm* command is used to boot an Operating System. It has a large number
of options depending on what needs to be booted.
Note that the second form supports the first and/or second arguments to be
omitted by using a hyphen '-' instead.
fit_addr / fit_addr2 / fit_addr3
address of FIT to boot, defaults to CONFIG_SYS_LOAD_ADDR. See notes below.
conf
configuration unit to boot (must be preceded by hash '#')
extra-conf
extra configuration to boot. This is supported only for additional
devicetree overlays to apply on the base device tree supplied by the first
configuration unit.
os_subimg
OS sub-image to boot (must be preceded by colon ':')
rd_subimg
ramdisk sub-image to boot. Use a hyphen '-' if there is no ramdisk but an
FDT is needed.
fdt_subimg
FDT sub-image to boot
See below for legacy boot. Booting using :doc:`../fit/index` is recommended.
Note on current image address
-----------------------------
When bootm is called without arguments, the image at current image address is
booted. The current image address is the address set most recently by a load
command, etc, and is by default equal to CONFIG_SYS_LOAD_ADDR. For example,
consider the following commands::
tftp 200000 /tftpboot/kernel
bootm
# Last command is equivalent to:
# bootm 200000
As shown above, with FIT the address portion of any argument
can be omitted. If <addr3> is omitted, then it is assumed that image at
<addr2> should be used. Similarly, when <addr2> is omitted, it is assumed that
image at <addr1> should be used. If <addr1> is omitted, it is assumed that the
current image address is to be used. For example, consider the following
commands::
tftp 200000 /tftpboot/uImage
bootm :kernel-1
# Last command is equivalent to:
# bootm 200000:kernel-1
tftp 200000 /tftpboot/uImage
bootm 400000:kernel-1 :ramdisk-1
# Last command is equivalent to:
# bootm 400000:kernel-1 400000:ramdisk-1
tftp 200000 /tftpboot/uImage
bootm :kernel-1 400000:ramdisk-1 :fdt-1
# Last command is equivalent to:
# bootm 200000:kernel-1 400000:ramdisk-1 400000:fdt-1
Legacy boot
-----------
U-Boot supports a legacy image format, enabled by `CONFIG_LEGACY_IMAGE_FORMAT`.
This is not recommended as it is quite limited and insecure. Use
:doc:`../fit/index` instead. It is documented here for old boards which still
use it.
Arguments are:
addr1
address of legacy image to boot. If the image includes a second component
(ramdisk) it is used as well, unless the second parameter is hyphen '-'.
addr2
address of legacy image to use as ramdisk
addr3
address of legacy image to use as FDT
Example syntax
--------------
This section provides various examples of possible usage::
1. bootm /* boot image at the current address, equivalent to 2,3,8 */
This is equivalent to cases 2, 3 or 8, depending on the type of image at
the current image address.
Boot method: see cases 2,3,8
Legacy uImage syntax
~~~~~~~~~~~~~~~~~~~~
::
2. bootm <addr1> /* single image at <addr1> */
Boot kernel image located at <addr1>.
Boot method: non-FDT
::
3. bootm <addr1> /* multi-image at <addr1> */
First and second components of the image at <addr1> are assumed to be a
kernel and a ramdisk, respectively. The kernel is booted with initrd loaded
with the ramdisk from the image.
Boot method: depends on the number of components at <addr1>, and on whether
U-Boot is compiled with OF support, which it should be.
==================== ======================== ========================
Configuration 2 components 3 components
(kernel, initrd) (kernel, initrd, fdt)
==================== ======================== ========================
#ifdef CONFIG_OF_* non-FDT FDT
#ifndef CONFIG_OF_* non-FDT non-FDT
==================== ======================== ========================
::
4. bootm <addr1> - /* multi-image at <addr1> */
Similar to case 3, but the kernel is booted without initrd. Second
component of the multi-image is irrelevant (it can be a dummy, 1-byte file).
Boot method: see case 3
::
5. bootm <addr1> <addr2> /* single image at <addr1> */
Boot kernel image located at <addr1> with initrd loaded with ramdisk
from the image at <addr2>.
Boot method: non-FDT
::
6. bootm <addr1> <addr2> <addr3> /* single image at <addr1> */
<addr1> is the address of a kernel image, <addr2> is the address of a
ramdisk image, and <addr3> is the address of a FDT binary blob. Kernel is
booted with initrd loaded with ramdisk from the image at <addr2>.
Boot method: FDT
::
7. bootm <addr1> - <addr3> /* single image at <addr1> */
<addr1> is the address of a kernel image and <addr3> is the address of
a FDT binary blob. Kernel is booted without initrd.
Boot method: FDT
FIT syntax
~~~~~~~~~~
::
8. bootm <addr1>
Image at <addr1> is assumed to contain a default configuration, which
is booted.
Boot method: FDT or non-FDT, depending on whether the default configuration
defines FDT
::
9. bootm [<addr1>]:<subimg1>
Similar to case 2: boot kernel stored in <subimg1> from the image at
address <addr1>.
Boot method: non-FDT
::
10. bootm [<addr1>]#<conf>[#<extra-conf[#...]]
Boot configuration <conf> from the image at <addr1>.
Boot method: FDT or non-FDT, depending on whether the configuration given
defines FDT
::
11. bootm [<addr1>]:<subimg1> [<addr2>]:<subimg2>
Equivalent to case 5: boot kernel stored in <subimg1> from the image
at <addr1> with initrd loaded with ramdisk <subimg2> from the image at
<addr2>.
Boot method: non-FDT
::
12. bootm [<addr1>]:<subimg1> [<addr2>]:<subimg2> [<addr3>]:<subimg3>
Equivalent to case 6: boot kernel stored in <subimg1> from the image
at <addr1> with initrd loaded with ramdisk <subimg2> from the image at
<addr2>, and pass FDT blob <subimg3> from the image at <addr3>.
Boot method: FDT
::
13. bootm [<addr1>]:<subimg1> [<addr2>]:<subimg2> <addr3>
Similar to case 12, the difference being that <addr3> is the address
of FDT binary blob that is to be passed to the kernel.
Boot method: FDT
::
14. bootm [<addr1>]:<subimg1> - [<addr3>]:<subimg3>
Equivalent to case 7: boot kernel stored in <subimg1> from the image
at <addr1>, without initrd, and pass FDT blob <subimg3> from the image at
<addr3>.
Boot method: FDT
15. bootm [<addr1>]:<subimg1> - <addr3>
Similar to case 14, the difference being that <addr3> is the address
of the FDT binary blob that is to be passed to the kernel.
Boot method: FDT
Example
-------
boot kernel "kernel-1" stored in a new uImage located at 200000::
bootm 200000:kernel-1
boot configuration "cfg-1" from a new uImage located at 200000::
bootm 200000#cfg-1
boot configuration "cfg-1" with extra "cfg-2" from a new uImage located
at 200000::
bootm 200000#cfg-1#cfg-2
boot "kernel-1" from a new uImage at 200000 with initrd "ramdisk-2" found in
some other new uImage stored at address 800000::
bootm 200000:kernel-1 800000:ramdisk-2
boot "kernel-2" from a new uImage at 200000, with initrd "ramdisk-1" and FDT
"fdt-1", both stored in some other new uImage located at 800000::
bootm 200000:kernel-1 800000:ramdisk-1 800000:fdt-1
boot kernel "kernel-2" with initrd "ramdisk-2", both stored in a new uImage
at address 200000, with a raw FDT blob stored at address 600000::
bootm 200000:kernel-2 200000:ramdisk-2 600000
boot kernel "kernel-2" from new uImage at 200000 with FDT "fdt-1" from the
same new uImage::
bootm 200000:kernel-2 - 200000:fdt-1
.. sectionauthor:: Bartlomiej Sieka <tur@semihalf.com>
.. sectionauthor:: Simon Glass <sjg@chromium.org>

View File

@@ -0,0 +1,81 @@
.. SPDX-License-Identifier: GPL-2.0+:
imxtract command
================
Synopsis
--------
::
imxtract addr part [dest]
imxtract addr uname [dest]
Description
-----------
The imxtract command is used to extract a part of a multi-image file.
Two different file formats are supported:
* FIT images
* legacy U-Boot images
addr
Address of the multi-image file from which a part shall be extracted
part
Index (hexadecimal) of the part of a legacy U-Boot image to be extracted
uname
Name of the part of a FIT image to be extracted
dest
Destination address (defaults to 0x0)
The value of environment variable *verify* controls if the hashes and
signatures of FIT images or the check sums of legacy U-Boot images are checked.
To enable checking set *verify* to one of the values *1*, *yes*, *true*.
(Actually only the first letter is checked disregarding the case.)
To list the parts of an image the *iminfo* command can be used.
Examples
--------
With verify=no incorrect hashes, signatures, or check sums don't stop the
extraction. But correct hashes are still indicated in the output
(here: md5, sha1).
.. code-block:: console
=> setenv verify no
=> imxtract $loadaddr kernel-1 $kernel_addr_r
## Copying 'kernel-1' subimage from FIT image at 40200000 ...
md5+ sha1+ Loading part 0 ... OK
=>
With verify=yes incorrect hashes, signatures, or check sums stop the extraction.
.. code-block:: console
=> setenv verify yes
=> imxtract $loadaddr kernel-1 $kernel_addr_r
## Copying 'kernel-1' subimage from FIT image at 40200000 ...
md5 error!
Bad hash value for 'hash-1' hash node in 'kernel-1' image node
Bad Data Hash
=>
Configuration
-------------
The imxtract command is only available if CONFIG_CMD_XIMG=y. Support for FIT
images requires CONFIG_FIT=y. Support for legacy U-Boot images requires
CONFIG_LEGACY_IMAGE_FORMAT=y.
Return value
------------
On success the return value $? of the command is 0 (true). On failure the
return value is 1 (false).

View File

@@ -13,7 +13,7 @@ Synopsis
Description
-----------
The loady command is used to transfer a file to the device via the serial line
The loadb command is used to transfer a file to the device via the serial line
using the Kermit protocol.
The number of transferred bytes is saved in environment variable filesize.

96
doc/usage/cmd/loads.rst Normal file
View File

@@ -0,0 +1,96 @@
.. SPDX-License-Identifier: GPL-2.0+:
loads command
=============
Synopsis
--------
::
loads [offset [baud]]
Description
-----------
The loads command is used to transfer a file to the device via the serial line
using the Motorola S-record file format.
offset
offset added to the addresses in the S-record file
baud
baud rate to use for download. This parameter is only available if
CONFIG_SYS_LOADS_BAUD_CHANGE=y
Example
-------
As example file to be transferred we use a script printing 'hello s-record'.
Here are the commands to create the S-record file:
.. code-block:: bash
$ echo 'echo hello s-record' > script.txt
$ mkimage -T script -d script.txt script.scr
Image Name:
Created: Sun Jun 25 10:35:02 2023
Image Type: PowerPC Linux Script (gzip compressed)
Data Size: 28 Bytes = 0.03 KiB = 0.00 MiB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 20 Bytes = 0.02 KiB = 0.00 MiB
$ srec_cat script.scr -binary -CRLF -Output script.srec
$ echo -e "S9030000FC\r" >> script.srec
$ cat script.srec
S0220000687474703A2F2F737265636F72642E736F75726365666F7267652E6E65742F1D
S1230000270519566D773EB6649815E30000001700000000000000003DE3D97005070601E2
S12300200000000000000000000000000000000000000000000000000000000000000000BC
S11A00400000000F0000000068656C6C6F20732D7265636F72640A39
S5030003F9
S9030000FC
$
The load address in the first S1 record is 0x0000.
The terminal emulation program picocom is invoked with *cat* as the send
command to transfer the file.
.. code-block::
picocom --send-cmd 'cat' --baud 115200 /dev/ttyUSB0
After entering the *loads* command the key sequence <CTRL-A><CTRL-S> is used to
let picocom prompt for the file name. Picocom invokes the program *cat* for the
file transfer. The loaded script is executed using the *source* command.
.. code-block::
=> loads $scriptaddr
## Ready for S-Record download ...
*** file: script.srec
$ cat script.srec
*** exit status: 0 ***
## First Load Addr = 0x4FC00000
## Last Load Addr = 0x4FC0005B
## Total Size = 0x0000005C = 92 Bytes
## Start Addr = 0x00000000
=> source $scriptaddr
## Executing script at 4fc00000
hello s-record
=>
Configuration
-------------
The command is only available if CONFIG_CMD_LOADS=y. The parameter to set the
baud rate is only available if CONFIG_SYS_LOADS_BAUD_CHANGE=y
Return value
------------
The return value $? is 0 (true) on success, 1 (false) otherwise.

88
doc/usage/cmd/saves.rst Normal file
View File

@@ -0,0 +1,88 @@
.. SPDX-License-Identifier: GPL-2.0+:
saves command
=============
Synopsis
--------
::
saves [offset [size [baud]]]
Description
-----------
The *saves* command is used to transfer a file from the device via the serial
line using the Motorola S-record file format.
offset
start address of memory area to save, defaults to 0x0
size
size of memory area to save, defaults to 0x0
baud
baud rate to use for upload. This parameter is only available if
CONFIG_SYS_LOADS_BAUD_CHANGE=y
Example
-------
In the example the *screen* command is used to connect to the U-Boot serial
console.
In a first screen session a file is loaded from the SD-card and the *saves*
command is invoked. <CTRL+A><k> is used to kill the screen session.
A new screen session is started which logs the output to a file and the
<ENTER> key is hit to start the file output. <CTRL+A><k> is issued to kill the
screen session.
The log file is converted to a binary file using the *srec_cat* command.
A negative offset of -1337982976 (= -0x4c000000) is applied to compensate for
the offset used in the *saves* command.
.. code-block::
$ screen /dev/ttyUSB0 115200
=> echo $scriptaddr
0x4FC00000
=> load mmc 0:1 $scriptaddr boot.txt
124 bytes read in 1 ms (121.1 KiB/s)
=> saves $scriptaddr $filesize
## Ready for S-Record upload, press ENTER to proceed ...
Really kill this window [y/n]
$ screen -Logfile out.srec -L /dev/ttyUSB0 115200
S0030000FC
S3154FC00000736574656E76206175746F6C6F616420AD
S3154FC000106E6F0A646863700A6C6F6164206D6D633E
S3154FC0002020303A3120246664745F616464725F72B3
S3154FC00030206474620A6C6F6164206D6D6320303AC0
S3154FC000403120246B65726E656C5F616464725F72DA
S3154FC0005020736E702E6566690A626F6F74656669C6
S3154FC0006020246B65726E656C5F616464725F7220CB
S3114FC00070246664745F616464725F720A38
S70500000000FA
## S-Record upload complete
=>
Really kill this window [y/n]
$ srec_cat out.srec -offset -1337982976 -Output out.txt -binary 2>/dev/null
$ cat out.txt
setenv autoload no
dhcp
load mmc 0:1 $fdt_addr_r dtb
load mmc 0:1 $kernel_addr_r snp.efi
bootefi $kernel_addr_r $fdt_addr_r
$
Configuration
-------------
The command is only available if CONFIG_CMD_SAVES=y. The parameter to set the
baud rate is only available if CONFIG_SYS_LOADS_BAUD_CHANGE=y
Return value
------------
The return value $? is 0 (true) on success, 1 (false) otherwise.

View File

@@ -22,7 +22,7 @@ Two formats for script files exist:
* Flat Image Tree (FIT)
The benefit of the FIT images is that they can be signed and verifed as
decribed in :download:`signature.txt <../../uImage.FIT/signature.txt>`.
described in :doc:`../fit/signature`.
Both formats can be created with the mkimage tool.

95
doc/usage/cmd/unbind.rst Normal file
View File

@@ -0,0 +1,95 @@
.. SPDX-License-Identifier: GPL-2.0+:
unbind command
==============
Synopsis
--------
::
unbind <node path>
unbind <class> <index>
unbind <class> <index> <driver>
Description
-----------
The unbind command is used to unbind a device from a driver. This makes the
device unavailable in U-Boot.
node path
path of the device's device-tree node
class
device class name
index
index of the device in the device class
driver
device driver name
Example
-------
Given a system with a real time clock device with device path */pl031@9010000*
and using driver rtc-pl031 unbinding and binding of the device is demonstrated
using the three alternative unbind syntaxes.
.. code-block::
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
...
rtc 0 [ ] rtc-pl031 |-- pl031@9010000
...
=> fdt addr $fdtcontroladdr
Working FDT set to 7ed7fdb0
=> fdt print
/ {
interrupt-parent = <0x00008003>;
model = "linux,dummy-virt";
#size-cells = <0x00000002>;
#address-cells = <0x00000002>;
compatible = "linux,dummy-virt";
...
pl031@9010000 {
clock-names = "apb_pclk";
clocks = <0x00008000>;
interrupts = <0x00000000 0x00000002 0x00000004>;
reg = <0x00000000 0x09010000 0x00000000 0x00001000>;
compatible = "arm,pl031", "arm,primecell";
};
...
}
=> unbind /pl031@9010000
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
...
=> unbind /pl031@9010000
Cannot find a device with path /pl031@9010000
=> bind /pl031@9010000 rtc-pl031
=> dm tree
Class Index Probed Driver Name
-----------------------------------------------------------
root 0 [ + ] root_driver root_driver
...
rtc 0 [ ] rtc-pl031 |-- pl031@9010000
=> unbind rtc 0
=> bind /pl031@9010000 rtc-pl031
=> unbind rtc 0 rtc-pl031
Configuration
-------------
The unbind command is only available if CONFIG_CMD_BIND=y.
Return code
-----------
The return code $? is 0 (true) on success and 1 (false) on failure.