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

U-Boot for Anbernic RGxx3 Devices
=================================

This allows U-Boot to boot the following Anbernic devices:

 - Anbernic RG353M
 - Anbernic RG353P
 - Anbernic RG353PS
 - Anbernic RG353V
 - Anbernic RG353VS
 - Anbernic RG503

The correct device is detected automatically by comparing ADC values
from ADC channel 1. In the event of an RG353V or RG353P, an attempt
is then made to probe for an eMMC and if it fails the device is assumed
to be an RG353VS or RG353PS. Based on the detected device, the
environment variables "board", "board_name", and "fdtfile" are set to
the correct values corresponding to the board which can be read by a
boot script to boot with the correct device tree. If the board detected
is not of type RG503 (which currently has only 1 panel revision) a
panel detect is then performed by probing a "dummy" display on the DSI
bus and then querying the display ID. The display ID is then compared
to a table to get the known compatible string for use in Linux, and
this string is saved as an environment variable of "panel".

FDT fixups are performed in the event of an RG353M to change the device
name, or in the event the panel detected does not match the devicetree.
This allows Linux to load the correct panel driver without having to
know exactly which panel is used (as there is no user distingushable
way to tell).

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

.. code-block:: bash

    $ export CROSS_COMPILE=aarch64-linux-gnu-
    $ export BL31=../rkbin/bin/rk35/rk3568_bl31_v1.34.elf
    $ export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1056MHz_v1.13.bin
    $ make anbernic-rgxx3_defconfig
    $ make

This will build ``u-boot-rockchip.bin`` which can be written to an SD
card.

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

Write the ``u-boot-rockchip.bin`` to an SD card offset 32kb from the
start. Please note that eMMC booting has not been tested at this time.

.. code-block:: bash

    $ dd if=u-boot-rockchip.bin of=/dev/mmcblk0 bs=512 seek=64
