TBS2910 Matrix ARM miniPC
=========================

Building
--------
To build u-boot for the TBS2910 Matrix ARM miniPC, you can use the following
procedure:

First add the ARM toolchain to your PATH

Then setup the ARCH and cross compilation environment variables.

When this is done you can then build u-boot for the TBS2910 Matrix ARM miniPC
with the following commands:

.. code-block:: none

   make mrproper
   make tbs2910_defconfig
   make

Once the build is complete, you can find the resulting image as u-boot.imx in
the current directory.

UART
----
The UART voltage is at 3.3V and its settings are 115200bps 8N1

BOOT/UPDATE boot switch:
------------------------
The BOOT/UPDATE switch (SW11) is connected to the BOOT_MODE0 and
BOOT_MODE1 SoC pins. It has "BOOT" and "UPDATE" markings both on
the PCB and on the plastic case.

When set to the "UPDATE" position, the SoC will use the "Boot From Fuses"
configuration, and since BT_FUSE_SEL is 0, this makes the SOC jump to serial
downloader.

When set in the "BOOT" position, the SoC will use the "Internal boot"
configuration, and since BT_FUSE_SEL is 0, it will then use the GPIO pins
for the boot configuration.

SW6 binary DIP switch array on the PCB revision 2.1:
----------------------------------------------------
On that PCB revision, SW6 has 8 positions.

Switching a position to ON sets the corresponding
register to 1.

See the following table for a correspondence between the switch positions and
registers:

===============    ============
Switch position    Register
===============    ============
1                  BOOT_CFG2[3]
2                  BOOT_CFG2[4]
3                  BOOT_CFG2[5]
4                  BOOT_CFG2[6]
5                  BOOT_CFG1[4]
6                  BOOT_CFG1[5]
7                  BOOT_CFG1[6]
8                  BOOT_CFG1[7]
===============    ============

For example:

  - To boot from the eMMC: 1:ON , 2:ON, 3:ON, 4:OFF, 5:OFF, 6:ON, 7:ON, 8:OFF
  - To boot from the microSD slot: 1: ON, 2: OFF, 3: OFF, 4: OFF, 5:OFF, 6:OFF,
    7:ON, 8:OFF
  - To boot from the SD slot: 1: OFF, 2: ON, 3: OFF, 4: OFF, 5:OFF, 6:OFF, 7:ON,
    8:OFF
  - To boot from SATA: 1: OFF, 2: OFF, 3: OFF, 4: OFF, 5:OFF, 6:ON, 7:OFF, 8:OFF

You can refer to the BOOT_CFG registers in the I.MX6Q reference manual for
additional details.

SW6 binary DIP switch array on the PCB revision 2.3:
----------------------------------------------------
On that PCB revision, SW6 has only 4 positions.

Switching a position to ON sets the corresponding
register to 1.

See the following table for a correspondence between the switch positions and
registers:

===============    ============
Switch position    Register
===============    ============
1                  BOOT_CFG2[3]
2                  BOOT_CFG2[4]
3                  BOOT_CFG2[5]
4                  BOOT_CFG1[5]
===============    ============

For example:

- To boot from the eMMC: 1:ON, 2:ON, 3:ON, 4:ON
- To boot from the microSD slot: 1:ON, 2:OFF, 3:OFF, 4:OFF
- To boot from the SD slot: 1:OFF, 2:ON, 3:OFF, 4:OFF

You can refer to the BOOT_CFG registers in the I.MX6Q reference manual for
additional details.

Loading u-boot from USB:
------------------------
If you need to load u-boot from USB, you can use the following instructions:

First build imx_usb_loader, as we will need it to load u-boot from USB. This
can be done with the following commands:

.. code-block:: none

   git clone git://github.com/boundarydevices/imx_usb_loader.git
   cd imx_usb_loader
   make

This will create the resulting imx_usb binary.

When this is done, you can copy the u-boot.imx image that you built earlier
in in the imx_usb_loader directory.

You will then need to power off the TBS2910 Matrix ARM miniPC and make sure that
the boot switch is set to "UPDATE"

Once this is done you can connect an USB cable between the computer that will
run imx_usb and the TBS2910 Matrix ARM miniPC.

If you also need to access the u-boot console, you will also need to connect an
UART cable between the computer running imx_usb and the TBS2910 Matrix ARM
miniPC.

Once everything is connected you can finally power on the TBS2910 Matrix ARM
miniPC. The SoC will then jump to the serial download and wait for you.

Finlay, you can load u-boot through USB with with the following command:

.. code-block:: none

   sudo ./imx_usb -v u-boot.imx

The u-boot boot messages will then appear in the serial console.

Install u-boot on the eMMC:
---------------------------
To install u-boot on the eMMC, you first need to boot the TBS2910 Matrix ARM
miniPC.

Once booted, you can flash u-boot.imx to mmcblk0boot0 with the
following commands:

.. code-block:: none

   sudo echo 0 >/sys/block/mmcblk0boot0/force_ro
   sudo dd if=u-boot.imx of=/dev/mmcblk0boot0 bs=1k seek=1; sync

Note that the eMMC card node may vary, so adjust this as needed.

Once the new u-boot version is installed, to boot on it you then need to power
off the TBS2910 Matrix ARM miniPC.

Once it is off, you need make sure that the boot switch is set to "BOOT" and
that the SW6 switch is set to boot on the eMMC as described in the previous
sections.

If you also need to access the u-boot console, you will also need to connect an
UART cable between the computer running imx_usb and the TBS2910 Matrix ARM
miniPC.

You can then power up the TBS2910 Matrix ARM miniPC and U-Boot messages will
appear in the serial console.

Booting a distribution:
-----------------------
When booting on the TBS2910 Matrix ARM miniPC, by default U-Boot will first try
to boot from hardcoded offsets from the start of the eMMC. This is for
compatibility with the stock GNU/Linux distribution.

If that fails it will then try to boot from several interfaces using
'distro_bootcmd': It will first try to boot from the microSD slot, then the
SD slot, then the internal eMMC, then the SATA interface and finally the USB
interface. For more information on how to configure your distribution to boot,
see 'doc/develop/distro.rst'.

Links:
------
  - https://www.tbsdtv.com/download/document/tbs2910/TBS2910-Matrix-ARM-mini-PC-SCH_rev2.1.pdf
    - The schematics for the revision 2.1 of the TBS2910 Matrix ARM miniPC.
  - https://cache.freescale.com/files/32bit/doc/ref_manual/IMX6DQRM.pdf - The
    SoC reference manual for additional details on the BOOT_CFG registers.
