Jump to content

OLIMEX Teres-I (olimex-teres i): Difference between revisions

From postmarketOS Wiki
Kreyren (talk | contribs)
Added initial merge request and alpine fixes for the u-boot
Knuxify (talk | contribs)
m gitlab.com -> gitlab.postmarketos.org (bot edit)
 
(45 intermediate revisions by 3 users not shown)
Line 3: Line 3:
{{Infobox device
{{Infobox device
| manufacturer = OLIMEX
| manufacturer = OLIMEX
| name = Teres 1
| name = Teres-I
| codename = teres_i
| codename = teres_i
| image = /* File:Pinephone-plasma-mobile.jpg */
| model = Rev.C
| imagecaption = TBD
| image = File:Teres_at_fosdem.jpg
| releaseyear = 2017
| imagecaption = The Odrysian King at [https://olimex.wordpress.com/2017/02/07/fosdem-and-teres-i-update/ FOSDEM2017]
| releaseyear = [https://olimex.wordpress.com/2017/10/12/teres-i-do-it-yourself-open-source-laptop-update/ 12 Oct 2017]
| category = testing
| category = testing
| originalsoftware = none
| originalsoftware = Android
| pmoskernel = Mainline
| pmoskernel = [https://pkgs.postmarketos.org/package/master/postmarketos/aarch64/linux-postmarketos-allwinner linux-postmarketos-allwinner]
| chipset = Allwinner A64
| chipset = Allwinner A64
| cpu = 4x 1152 MHz Cortex-A53
| cpu = 4x 1152 MHz Cortex-A53
| gpu = Mali-400 MP2
| gpu = [https://linux-sunxi.org/Mali#Utgard_.28Mali-400_and_Mali-450.29 600Mhz Mali-400 MP2]
| display = 1366x768 IPS
| display = 1366x768 IPS ([https://github.com/OLIMEX/DIY-LAPTOP/blob/rel3/doc/datasheets/TERES-015-LCD11.6/N116BGE-EA2.pdf N11BGE-EA2 Rev.C3])
| storage = 16 GB
| storage = 16 GB eMMC ([https://github.com/OLIMEX/DIY-LAPTOP/blob/rel3/doc/datasheets/eMMC/emmc_1664gb_ps8222_153b_v50_it.pdf MTFC16GAKAENA-4M]) + SDCard
| memory = 2 GB
| memory = 2GB DDR3L RAM ([https://github.com/OLIMEX/DIY-LAPTOP/blob/rel3/doc/datasheets/RAM/H5TC8G63AMR-PBA.pdf 2x Hynix H5TC8G63AMR-PBA])
| architecture = aarch64
| architecture = aarch64
| type = laptop
| type = laptop
| whet_dhry = Unknown
| whet_dhry = 0.0
| status_usbnet = -
 
<!-- Features -->
| status_usbnet = - <!-- Do we even want this to work? -->
| status_flashing = Y
| status_flashing = Y
| status_touch = -
| status_touch = Y
| status_screen = Y
| status_screen = Y
| status_wifi = Y
| status_wifi = Y
Line 32: Line 35:
| status_bluetooth = Y
| status_bluetooth = Y
| status_camera = Y
| status_camera = Y
| status_gps = -
| status_gps = Y <!-- MOD: https://www.olimex.com/Products/Modules/GPS/MOD-GPS -->
| status_mobiledata = -
| status_mobiledata = -
| status_emmc = Y
| status_emmc = Y
| status_sms = -
| status_sms = Y <!-- MOD: https://www.olimex.com/Products/IoT/LTE/USB-gLINK-ANT/open-source-hardware -->
| status_calls = -
| status_calls = Y <!-- MOD: https://www.olimex.com/Products/IoT/LTE/USB-gLINK-ANT/open-source-hardware -->
| status_otg = -
| status_otg = Y <!-- Daughter board USB-A port only -->
| status_nfc = -
| status_nfc = Y <!-- MOD: https://www.olimex.com/Products/Modules/RFID/MOD-RFID1356MIFARE -->
/* Sensors */
 
| status_accel = -
<!-- SENSORS -->
| status_magnet = -
| status_accel = Y <!-- MOD: https://www.olimex.com/Products/Modules/Sensors/MOD-SMB380 -->
| status_light = -
| status_magnet = Y <!-- Passive component -->
| status_proximity = -
| status_light = Y <!-- MOD: https://www.olimex.com/Products/Modules/Sensors/MOD-LTR-501ALS/open-source-hardware -->
| status_hall = Y
| status_proximity = Y <!-- MOD: https://www.olimex.com/Products/Modules/Sensors/MOD-LTR-501ALS/open-source-hardware -->
| status_barometer = -
| status_hall = -
| status_barometer = Y <!-- MOD: https://www.olimex.com/Products/Modules/Sensors/MOD-BMP085/open-source-hardware -->
| status_powersensor = Y
| status_powersensor = Y
/* Misc */
 
<!-- MISC -->
| status_dvb = -
| status_dvb = -
| status_cameraflash = -
| status_cameraflash = -
Line 54: Line 59:
| status_usba = Y
| status_usba = Y
| status_hdmidp = Y
| status_hdmidp = Y
| status_irtx = -
| status_irtx = Y <!-- MOD: https://www.olimex.com/Products/Modules/Interface/MOD-IRDA+/open-source-hardware -->
| status_irrx = -
| status_irrx = Y <!-- MOD: https://www.olimex.com/Products/Modules/Interface/MOD-IRDA+/open-source-hardware -->
| status_stylus = -
| status_stylus = -  
| status_sdcard = Y
| status_sdcard = Y
| status_haptics = -
| status_haptics = -
| status_ethernet = -
| status_ethernet = Y <!-- MOD: https://www.olimex.com/Products/USB-Modules/USB-GIGABIT/open-source-hardware -->
| status_fossbootloader = Y
| status_fossbootloader = Y <!-- U-Boot -->
 
<!-- U-Boot -->
| status_uboot_primary = Y
| status_uboot_secondary = Y <!-- Can be booted from FEL or AllWinner SDK -->
| status_uboot_mainline = Y <!-- teres_i_defconfig -->
| status_uboot_internalstorage = Y
| status_uboot_sd = Y
| status_uboot_usbhost = Y
| status_uboot_usbperipheral = Y
| status_uboot_screen = Y <!-- since alpine u-boot 24.01-r3, see aports!59249 -->
| status_uboot_keyboard = Y
| status_uboot_buttons = Y <!-- Can use keyboard buttons -->
 
<!-- Unassigned -->
| status_uart = Y
| status_uboot = Y
| status = In Works
| status = In Works
| booting = yes
| booting = yes
| packaged = N <!-- In works: https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/4743 -->
| supported = N
}}
}}
...


=== Engineers, Maintainers and Contributors ===
=== Engineers, Maintainers and Contributors ===
* ''[https://github.com/TsvetanUsunov Tsvetan Usunov]'' -- Hardware Engineer and Supplier
* ''[https://github.com/TsvetanUsunov Tsvetan Usunov]'' -- Hardware Engineer and Supplier
* ''[https://github.com/DanKoloff Dan Koloff]'' -- Main Repository Maintainer
* ''[https://github.com/DanKoloff Dan Koloff]'' -- Main Repository Maintainer
* ''[https://github.com/hehopmajieh Dimitar Gamishev]]'' -- The Linux Kernel Mainline and Hardware Engineer
* ''[https://github.com/hehopmajieh Dimitar Gamishev]'' -- The Linux Kernel Mainline and Hardware Engineer
* ''[https://www.olimex.com/forum/index.php?action=profile;u=99 Lub]'' -- Official Technical Support
* ''[https://www.olimex.com/forum/index.php?action=profile;u=99 Lub]'' -- Official Technical Support
* ''[[user:Kreyren|KREYREN]]'' -- Maintainer of Armbian, Debian GNU/Linux, Ubuntu, (Devuan GNU/Linux), NixOS, (GNU Guix GNU/Linux), PostmarketOS, (Alpine Linux), Parabola GNU/Linux, (Archlinux ARM). Contributor to The Linux Kernel
* ''[[user:Kreyren|KREYREN]]'' -- Maintainer of Armbian, Debian GNU/Linux, Ubuntu, (Devuan GNU/Linux), NixOS, (GNU Guix GNU/Linux), PostmarketOS, (Alpine Linux), Parabola GNU/Linux, (Archlinux ARM). Contributor to The Linux Kernel
Line 78: Line 99:
* ''[https://github.com/bill-auger Bill Auger]'' -- Parabola GNU/Linux Maintainer
* ''[https://github.com/bill-auger Bill Auger]'' -- Parabola GNU/Linux Maintainer
* ''[https://github.com/GNUtoo Denis 'GNUtoo' Carikli]'' -- Parabola GNU/Linux Maintainer
* ''[https://github.com/GNUtoo Denis 'GNUtoo' Carikli]'' -- Parabola GNU/Linux Maintainer
* ''[https://github.com/khumarahn/teres1-gentoo Alexey Korepanov] (former)'' -- Gentoo Linux Maintainer
* ''[https://github.com/khumarahn/teres1-gentoo Alexey Korepanov]'' -- Gentoo Linux Maintainer
* ''[https://code.forksand.com/forksand/olimex-teres-case Jeff Moe]'' -- Engineer of 3D printable case
* ''[https://code.forksand.com/forksand/olimex-teres-case Jeff Moe]'' -- Engineer of 3D printable case
* ''[https://github.com/d3v1c3nv11/teres1-debug Chris Boudacoff]'' -- teres1-debug developer
* ''Torsten Duwe'' -- [https://lore.kernel.org/lkml/20220417181538.57fa1303@blackhole/T/ Linux kernel contributor who fixed ANX6345 power up sequence]
* ''Harald Geyer'' -- [https://lore.kernel.org/lkml/20220417181538.57fa1303@blackhole/T/ Linux kernel contributor who reported issue with ANX6345]
* (and many more!)
* (and many more!)


Line 86: Line 110:


== Installation ==
== Installation ==
TBA
Use [[pmbootstrap]] to build your own image.
 
Insert your desired sdcard in the build system and note it's device identifier (e.g. /dev/mmcblk1)
 
<syntaxhighlight lang="shell-session">
$ pmbootstrap init  # vendor: olimex, device: teres_i
$ pmbootstrap install --fde --sdcard=/dev/your-sdcard-device
</syntaxhighlight>
 
Disconnect the sdcard from your build system and insert it into a laptop, it's expected to boot.
 
Alternatively you can flash a pre-built images from ...
 
== U-boot Updates ==
{{Warning| This process might result in a device that will not boot postmarketOS, make sure you understand how you might recover from this situation before proceeding!! }}
 
<syntaxhighlight lang="shell-session">
# update-u-boot --board=teres_i --device=/dev/your-device
Updating teres_i u-boot in /dev/your-device in 3 seconds...
Completed successfully.
# sync
</syntaxhighlight>


== Serial console ==
== Serial console ==
Teres has a serial port in the headphone connector...
Teres has a serial port in the headphone connector.


The UART is 115200n8
The default UART is '''115200n8'''


The pinout for the serial connector on the headphone jack is:
The pinout for the serial connector on the headphone jack is:


* Tip: ...
  TX  RX
* Ring: ...
  |  |   
* Sleeve: ...
  === == ====|||||||||---------
          |
          GND
 
The serial connection is '''3.3V'''
 
You can also buy the debug cable from [https://www.olimex.com/Products/DIY-Laptop/KITS/TERES-USB-DEBUG the supplier's web store] or make one.
 
For instructions and firmware: https://github.com/d3v1c3nv11/teres1-debug
 
== Storage ==
 
The SD card is <code>/dev/mmcblk2</code> and the eMMC is <code>/dev/mmcblk0</code>
 
== Booting ==
 
Teres boots using u-boot. The bootrom in the A64 soc will look for u-boot on the SPI flash chip, then the eMMC and then the SD card slot and It will boot the first functioning u-boot image it can find.
 
=== Booting from SD ===
 
To boot from the SD the SPI bootloader and eMMC bootloader need to be disabled. Then the SoC will fallback to a bootloader on the SD card so postmarketOS can be fully booted from SD.
 
Teres comes with an empty SPI chip from the factory so that doesn't need anything by default.
 
=== Booting from eMMC ===
 
To boot it from eMMC you have to overwrite the OS that's on the eMMC already. This is possible to do from an OS booted from SD with the steps above and then flashed on the eMMC using live system.
 
Fastboot mode is work-in-progress
 
=== Booting from SPI ===
 
TBD
 
== Connecting to the WiFi ==
 
=== wpa_supplicant ===
 
Refet to the https://wiki.alpinelinux.org/wiki/Wi-Fi#wpa_supplicant.
 
== Notes ==
 
Refer to the linux-sunxi.org wiki for more details about the device: https://linux-sunxi.org/Olimex_Teres-A64
 
== Known issues with alpine/postmarketos ==
 
Only for distribution-relevant issues, for device-specific issue see the linux-sunxi wiki.
 
=== Disfunctional display when BL31.bin is compiled with SUNXI_SETUP_REGULATORS=0 ===
 
The The Arm-Trusted-Firmware's BL31 is responsible for PMIC initialization that should be correctly printed in serial console as:
  U-Boot SPL 2024.01 (Jan 18 2024 - 19:32:49 +0100)
  DRAM: 2048 MiB
  Trying to boot from MMC1
  NOTICE:  BL31: v2.10.0 (debug):
  NOTICE:  BL31: Built : 01:25:38, Dec  4 2023
  NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
  NOTICE:  BL31: Found U-Boot DTB at 0x20a2d98, model: Olimex A64 Teres-I
  INFO:    ARM GICv2 driver initialized
  INFO:    Configuring SPC Controller
  INFO:    PMIC: Probing AXP803 on RSB
  INFO:    PMIC: aldo1 voltage: 2.800V
  INFO:    PMIC: dcdc1 voltage: 3.300V
  INFO:    PMIC: dcdc5 voltage: 1.500V
  INFO:    PMIC: dcdc6 voltage: 1.100V
  INFO:    PMIC: dldo1 voltage: 3.300V
  INFO:    PMIC: dldo2 voltage: 2.500V
  INFO:    PMIC: dldo3 voltage: 1.200V
  INFO:    PMIC: dldo4 voltage: 3.300V
  INFO:    PMIC: fldo1 voltage: 1.200V
  INFO:    PMIC: Enabling DC SW
  INFO:    BL31: Platform setup done
  INFO:    BL31: Initializing runtime services
  INFO:    BL31: cortex_a53: CPU workaround for erratum 843419 was applied
  INFO:    BL31: cortex_a53: CPU workaround for erratum 855873 was applied
  INFO:    BL31: cortex_a53: CPU workaround for erratum 1530924 was applied
  INFO:    PSCI: Suspend is unavailable
  INFO:    BL31: Preparing for EL3 exit to normal world
  INFO:    Entry point address = 0x4a000000
  INFO:    SPSR = 0x3c9
 
If your U-Boot initializes with:


The serial connection is ...V
  U-Boot SPL 2024.01 (Jan 20 2024 - 10:52:04 +0000)
  DRAM: 2048 MiB
  Trying to boot from MMC1
  NOTICE:  BL31: lts-v2.8.14(release):
  NOTICE:  BL31: Built : 10:47:18, Jan 20 2024
  NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
  NOTICE:  BL31: Found U-Boot DTB at 0x20a2d98, model: Olimex A64 Teres-I


You can also buy the debug cable from ... .
Then you likely need to review your BL31.bin's compilation logs for the presence of 'SUNXI_SETUP_REGULATORS=0 such as https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59249/diffs#082488b14c7615f24feec8cd5916dfbd77c6a78d_41_41.


== Components ==
This issue affected alpine's u-boot <=2024.01-r2 and was addressed in:
* https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59177
* https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59249
* https://gitlab.alpinelinux.org/alpine/aports/-/commit/34e1f452115975ac88b04d3bbe0b75436a5b0f69


{| class="wikitable"
== Troubleshooting ==
! Component
! Model
! Linux Module
|-
| LCD
| [https://www.olimex.com/Products/DIY-Laptop/SPARE-PARTS/TERES-015-LCD11-6/resources/N116BGE-EA2.pdf InnoLux N116BGE EA2 Rev. C3]
| DRM_ANALOGIX_ANX6345
|-
| WiFi+BLE
| [https://github.com/Kreyren/OSHW-DEIMOS/blob/b62731773026b9ba0e4428738d60b324faa07477/doc/datasheets/wifible/RTL8723BS.pdf Realtek RTL8723BS]
| RTL8723BS
|-
| Battery Gauge
| [https://linux-sunxi.org/AXP803 X-Powers AXP803]
| AXP20X_BATTERY
|}


..


== See also ==
== See also ==
* {{MR|4743|pmaports}} Initial merge request.
* {{MR|4743|pmaports}} Initial merge request.
* [https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59177 aports!59177] Fixes for broken screen initialization on Alpine Linux.
* [https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59177 aports!59177] Fixes for broken screen initialization on Alpine Linux.
* Datasheets
* [https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59249 aports!59249] Fixes PMIC regulator initialization
* repo
* [https://gitlab.alpinelinux.org/alpine/aports/-/commit/34e1f452115975ac88b04d3bbe0b75436a5b0f69 aports!34e1f4] Rebuilds u-boot with fixed atf dependency
* Product page
* [https://gitlab.alpinelinux.org/alpine/aports/-/issues/15732 aports!/issues/15732] Adjustments to the Linux-lts/Edge kernel in alpine to support the device
* [https://github.com/Kreyren/pmaports-TERES github:Kreyren/pmports-TERES] Work repository for teres compatibility patches for alpine/pmos
* [https://github.com/OLIMEX/DIY-LAPTOP/blob/rel3/doc/datasheets/TERES-015-LCD11.6/N116BGE-EA2.pdf github.com/OLIMEX/DIY_LAPTOP] Device Repository
* [https://www.olimex.com/Products/DIY-Laptop Olimex.com/Products/DIY-Laptop] Products page
* [https://linux-sunxi.org/Olimex_Teres-A64 linux-sunxi.org/Olimex_teres-A64] Sunxi wiki page about the device

Latest revision as of 13:52, 4 November 2024

Note New device port in works by the community maintainer
OLIMEX Teres-I
The Odrysian King at FOSDEM2017
The Odrysian King at FOSDEM2017
Manufacturer OLIMEX
Name Teres-I
Codename teres_i
Model Rev.C
Released 12 Oct 2017
Type laptop
Hardware
Chipset Allwinner A64
CPU 4x 1152 MHz Cortex-A53
GPU 600Mhz Mali-400 MP2
Display 1366x768 IPS (N11BGE-EA2 Rev.C3)
Storage 16 GB eMMC (MTFC16GAKAENA-4M) + SDCard
Memory 2GB DDR3L RAM (2x Hynix H5TC8G63AMR-PBA)
Architecture aarch64
Software
Original software Android
FOSS bootloader yes
postmarketOS
Category testing
Pre-built images no
Mainline yes
postmarketOS kernel linux-postmarketos-allwinner
Unixbench Whet/Dhry score 0.0
Features
Flashing
Works
Internal storage
Works
SD card
Works
Battery
Works
Screen
Works
Touchscreen
Works
Keyboard
Works
Touchpad
Works
Multimedia
3D Acceleration
Works
Audio
Works
Camera
Works
IR TX
Works
IR RX
Works
Connectivity
WiFi
Works
Bluetooth
Works
Ethernet
Works
GPS
Works
NFC
Works
Modem
Calls
Works
SMS
Works
Miscellaneous
FDE
Works
USB-A
Works
SATA/eSATA
No data
USB OTG
Works
HDMI/DP
Works
Sensors
Accelerometer
Works
Magnetometer
Works
Ambient Light
Works
Proximity
Works
Barometer
Works
Power Sensor
Works
U-Boot
Primary Bootloader
Works
Secondary Bootloader
Works
Mainline
Works
Internal Storage
Works
SD card
Works
USB Host
Works
USB Peripheral
Works
Display
Works
Keyboard
Works
Buttons
Works

Engineers, Maintainers and Contributors

Users owning this device

Installation

Use pmbootstrap to build your own image.

Insert your desired sdcard in the build system and note it's device identifier (e.g. /dev/mmcblk1)

$ pmbootstrap init  # vendor: olimex, device: teres_i
$ pmbootstrap install --fde --sdcard=/dev/your-sdcard-device

Disconnect the sdcard from your build system and insert it into a laptop, it's expected to boot.

Alternatively you can flash a pre-built images from ...

U-boot Updates

Warning WARNING: This process might result in a device that will not boot postmarketOS, make sure you understand how you might recover from this situation before proceeding!!
# update-u-boot --board=teres_i --device=/dev/your-device
Updating teres_i u-boot in /dev/your-device in 3 seconds...
Completed successfully.
# sync

Serial console

Teres has a serial port in the headphone connector.

The default UART is 115200n8

The pinout for the serial connector on the headphone jack is:

 TX  RX
  |   |    
 === == ====|||||||||---------
          |
         GND

The serial connection is 3.3V

You can also buy the debug cable from the supplier's web store or make one.

For instructions and firmware: https://github.com/d3v1c3nv11/teres1-debug

Storage

The SD card is /dev/mmcblk2 and the eMMC is /dev/mmcblk0

Booting

Teres boots using u-boot. The bootrom in the A64 soc will look for u-boot on the SPI flash chip, then the eMMC and then the SD card slot and It will boot the first functioning u-boot image it can find.

Booting from SD

To boot from the SD the SPI bootloader and eMMC bootloader need to be disabled. Then the SoC will fallback to a bootloader on the SD card so postmarketOS can be fully booted from SD.

Teres comes with an empty SPI chip from the factory so that doesn't need anything by default.

Booting from eMMC

To boot it from eMMC you have to overwrite the OS that's on the eMMC already. This is possible to do from an OS booted from SD with the steps above and then flashed on the eMMC using live system.

Fastboot mode is work-in-progress

Booting from SPI

TBD

Connecting to the WiFi

wpa_supplicant

Refet to the https://wiki.alpinelinux.org/wiki/Wi-Fi#wpa_supplicant.

Notes

Refer to the linux-sunxi.org wiki for more details about the device: https://linux-sunxi.org/Olimex_Teres-A64

Known issues with alpine/postmarketos

Only for distribution-relevant issues, for device-specific issue see the linux-sunxi wiki.

Disfunctional display when BL31.bin is compiled with SUNXI_SETUP_REGULATORS=0

The The Arm-Trusted-Firmware's BL31 is responsible for PMIC initialization that should be correctly printed in serial console as:

 U-Boot SPL 2024.01 (Jan 18 2024 - 19:32:49 +0100)
 DRAM: 2048 MiB
 Trying to boot from MMC1
 NOTICE:  BL31: v2.10.0	(debug):
 NOTICE:  BL31: Built : 01:25:38, Dec  4 2023
 NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
 NOTICE:  BL31: Found U-Boot DTB at 0x20a2d98, model: Olimex A64 Teres-I
 INFO:    ARM GICv2 driver initialized
 INFO:    Configuring SPC Controller
 INFO:    PMIC: Probing AXP803 on RSB
 INFO:    PMIC: aldo1 voltage: 2.800V
 INFO:    PMIC: dcdc1 voltage: 3.300V
 INFO:    PMIC: dcdc5 voltage: 1.500V
 INFO:    PMIC: dcdc6 voltage: 1.100V
 INFO:    PMIC: dldo1 voltage: 3.300V
 INFO:    PMIC: dldo2 voltage: 2.500V
 INFO:    PMIC: dldo3 voltage: 1.200V
 INFO:    PMIC: dldo4 voltage: 3.300V
 INFO:    PMIC: fldo1 voltage: 1.200V
 INFO:    PMIC: Enabling DC SW
 INFO:    BL31: Platform setup done
 INFO:    BL31: Initializing runtime services
 INFO:    BL31: cortex_a53: CPU workaround for erratum 843419 was applied
 INFO:    BL31: cortex_a53: CPU workaround for erratum 855873 was applied
 INFO:    BL31: cortex_a53: CPU workaround for erratum 1530924 was applied
 INFO:    PSCI: Suspend is unavailable
 INFO:    BL31: Preparing for EL3 exit to normal world
 INFO:    Entry point address = 0x4a000000
 INFO:    SPSR = 0x3c9

If your U-Boot initializes with:

 U-Boot SPL 2024.01 (Jan 20 2024 - 10:52:04 +0000)
 DRAM: 2048 MiB
 Trying to boot from MMC1
 NOTICE:  BL31: lts-v2.8.14(release):
 NOTICE:  BL31: Built : 10:47:18, Jan 20 2024
 NOTICE:  BL31: Detected Allwinner A64/H64/R18 SoC (1689)
 NOTICE:  BL31: Found U-Boot DTB at 0x20a2d98, model: Olimex A64 Teres-I

Then you likely need to review your BL31.bin's compilation logs for the presence of 'SUNXI_SETUP_REGULATORS=0 such as https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/59249/diffs#082488b14c7615f24feec8cd5916dfbd77c6a78d_41_41.

This issue affected alpine's u-boot <=2024.01-r2 and was addressed in:

Troubleshooting

..

See also