Mainline Linux on Marvell PXA1908

The Marvell PXA1908 was Marvell’s first ARM64 SoC released sometime around 2014 or 2015. The SoC is used in some of Samsung’s entry level 2015 phones such as the Core Prime VE LTE and the Xcover 3 LTE. The PXA1908 currently has out-of-tree support for booting mainline Linux.

U-Boot port

There is now a somewhat functional U-Boot port! It can be found on my Git server. It’s packaged into a bootimg just like Linux itself as seen below. Pay particular attention to the fact that the U-Boot binary is gzipped and packed into an uImage.

The port has been upstreamed since U-Boot v2025.04-rc3.

Building outside pmbootstrap

  1. Clone and compile pxa-mkbootimg
  2. Clone repository
  3. Checkout pxa1908/master
  4. Get kernel config from pmaports
  5. make the kernel and create a boot.img using the below script

Script for creating boot.img

With U-Boot installed, creating an image consists of simply creating a FIT and adding it into the U-Boot boot.img as the initramfs.

The following script creates a Linux boot image without U-Boot. Alternatively, it can also create an U-Boot boot.img.

#!/bin/sh

mkimage -A arm64 -C gzip -a 0x1000000 -e 0x1000000 -n "pxa1928dkb linux" -d Image.gz uImage
~/code/pxa-mkbootimg/pxa1908-dtbTool -p ../../../scripts/dtc/ -s 2048 -o dt.img dts/marvell/
~/code/pxa-mkbootimg/pxa-mkbootimg \
    --kernel uImage \
    --base 0x10000000 \
    --ramdisk /tmp/postmarketOS-export/initramfs \
    --ramdisk_offset 0x1000000 \
    --pagesize 2048 \
    --dt dt.img \
    --second_offset 0xf00000 \
    --tags_offset 0x100 \
    -o boot.img

Todo

Moved here