Here’s a technical review of MSM8953 (also known as Snapdragon 625/626) support for arm64 drivers, focusing on the mainline Linux kernel and Android common kernel perspectives.
If your goal is mainline Linux on MSM8953 (e.g., postmarketOS, bootlin, or generic ARM64 distro):
✅ Good enough for:
❌ Not ready for:
Let’s say you need to rebuild the WiFi driver for a custom ARM64 kernel.
Prerequisites:
aarch64-linux-android- (from NDK) or aarch64-linux-gnu-Steps:
Export environment:
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-android-
make msm8953_defconfig
make -j8
Build WiFi module:
cd drivers/staging/qcacld-3.0/
make -C /path/to/kernel M=$(pwd) modules
The output is wlan.ko. Check its architecture: msm8953 for arm64 driver
file wlan.ko
# Output: ELF 64-bit LSB relocatable, ARM aarch64
Sign the module (if using Android Verified Boot):
/external/avb/avbtool add_hash_footer --image wlan.ko
Push to device:
adb push wlan.ko /vendor/lib/modules/
adb shell insmod /vendor/lib/modules/wlan.ko
Error handling: If you see Required key not available, disable CONFIG_MODULE_SIG_FORCE. Here’s a technical review of MSM8953 (also known
https://github.com/LineageOS/android_kernel_google_msm-4.9msm8953 – includes backported ARM64 fixes for Spectre/Meltdown.The graphics driver is the most critical for ARM64. The open-source msm DRM driver (part of the mainline Linux kernel) supports Adreno 5xx series. However, userspace needs the Freedreno Vulkan driver (Turnip) or Qualcomm’s proprietary kgsl driver.
kgsl (kernel) + adreno firmware (a530_* files) + libGLESv2_adreno.so (64-bit).egl.cfg or incorrect symlinks to /vendor/lib64/egl/MSM8953 uses either eMMC 5.1 or SDIO for storage. The driver is sdhci-msm.c.