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

U-Boot for Apple Silicon Macs
=============================

Allows Apple Silicon Macs to boot U-Boot via the m1n1 bootloader
developed by the Asahi Linux project.  At this point the machines with
the following SoCs work:

 - Apple M1 SoC

On these SoCs the following hardware is supported:

 - S5L serial port
 - Framebuffer
 - USB 3.1 Type-C ports

Device trees are currently provided for the M1 Mac mini (2020, J274)
and M1 MacBook Pro 13" (2020, J293).  The M1 MacBook Air (2020) is
expected to work with the J293 device tree.  The M1 iMac (2021) may
work with the J274 device tree.

Building U-Boot
---------------

.. code-block:: bash

    $ export CROSS_COMPILE=aarch64-none-elf-
    $ make apple_m1_defconfig
    $ make

This will build ``u-boot-nodtb.bin`` as well as devices trees for some
of the supported machines.  These device trees can be found in the
``arch/arm/dts`` subdirectory of your build.

Image creation
--------------

In order to run U-Boot on an Apple Silicon Mac, U-Boot has to be used
as a payload for the m1n1 bootloader.  Instructions for building m1n1
can be found here:

    https://github.com/AsahiLinux/docs/wiki/SW%3Am1n1

.. code-block:: bash

    $ cat m1n1.macho t8103-j274.dtb u-boot-nodtb.bin > u-boot.macho

This uses ``u-boot-nodtb.bin`` as the device tree is passed to U-Boot
by m1n1 after making some adjustments.

Image installation
------------------

Instructions on how to install U-Boot on your Mac can be found at:

    https://github.com/AsahiLinux/docs/wiki/Developer-Quickstart

Just replace ``m1n1.macho`` with ``u-boot.macho`` in the instructions.
