.. SPDX-License-Identifier: GPL-2.0+
.. _partitions:

Partitions
==========

Synopsis
--------

::

    <command> <interface> [devnum][.hwpartnum][:partnum|#partname]

Description
-----------

Many U-Boot commands allow specifying partitions (or whole disks) using a
generic syntax.

interface
        The interface used to access the partition's device, like ``mmc`` or
        ``scsi``. For a full list of supported interfaces, consult the
        ``uclass_idname_str`` array in ``drivers/block/blk-uclass.c``

devnum
        The device number. This defaults to 0.

hwpartnum
        The hardware partition number. All devices have at least one hardware
        partition. On most devices, hardware partition 0 specifies the whole
        device. On eMMC devices, hardware partition 0 is the user partition,
        hardware partitions 1 and 2 are the boot partitions, hardware partition
        3 is the RPMB partition, and further partitions are general-purpose
        user-created partitions. The default hardware partition number is 0.

partnum
        The partition number, starting from 1. The partition number 0 specifies
        that the whole device is to be used as one "partition."

partname
        The partition name. This is the partition label for GPT partitions. For
        MBR partitions, the following syntax is used::

                <devtype><devletter><partnum>

        devtype
                The devtype field is set in dependence of the device class:

                ======= ===============
                devtype device class
                ======= ===============
                hd      IDE or SATA
                sd      SCSI
                usbd    USB
                mmcsd   eMMC or SD-card
                xx      others
                ======= ===============

                See the ``part_set_generic_name`` function in ``disk/part.c``
                for the complete list.

        devletter
                The device number as an offset from ``a``. For example, device
                number 2 would have a device letter of ``c``.

        partnum
                The partition number. This is the same as above.

If neither ``partname`` nor ``partnum`` is specified and there is a partition
table, then partition 1 is used. If there is no partition table, then the whole
device is used as one "partition." If none of ``devnum``, ``hwpartnum``,
``partnum``, or ``partname`` is specified, or only ``-`` is specified, then
``devnum`` defaults to the value of the ``bootdevice`` environmental variable.

Examples
--------

List the root directory contents on MMC device 2, hardware partition 1,
and partition number 3::

        ls mmc 2.1:3 /

Load ``/kernel.itb`` to address ``0x80000000`` from SCSI device 0, hardware partition
0, and the partition labeled ``boot``::

        load scsi #boot 0x80000000 /kernel.itb

Print the partition UUID of the SATA device ``$bootdevice``, hardware partition
0, and partition number 0::

        part uuid sata -
