Even with correct drivers, things fail. Here’s a diagnostic guide.
| Symptom | Logcat/Kmsg hint | ARM64-specific fix |
|---------|------------------|--------------------|
| Device won’t boot after kernel flash | Kernel panic - not syncing: VFS: Unable to mount root fs | Your msm8953.dtb has wrong by-name partitions. Check fstab.qcom for ARM64’s /dev/block/by-name/* |
| GPU crashes in games | kgsl: |kgsl_iommu_fault_handler| IOMMU fault | Increase CMA pool size in dtsi: linux,cma = <0x0 0x1400000>; |
| WiFi mac address is 00:00:00:00:00:00 | wlan: Failed to get nvram | The NV binary is 32-bit. Convert using nvmac_convert tool for ARM64. |
| Camera shows green lines | msm_isp: Cannot get csid virtual channel | Set qcom,csiphy-sd-index = <0> in device tree for ARM64’s different CSIPHY mapping. |
| No audio during calls | aspdrpc: Failed to send cmd 0x3028, ret = -22 | Replace adsp.mdt with ARM64-compatible version from a SDM660 device. | msm8953 for arm64 driver
MSM8953 drivers are part of the Qualcomm Code Aurora Forum (CAF) kernel, based on Linux 4.9 or 4.19. Key driver families include: Even with correct drivers, things fail
| Driver Type | Source Location in Kernel | Purpose |
|---------------------|-----------------------------------------------|------------------------------------------|
| Display (DRM/KMS) | drivers/gpu/drm/msm/ (msm driver) | Adreno 506 GPU, DSI, HDMI, DP |
| Audio | sound/soc/msm/ (ASoC) | Digital audio, PCM, compress offload |
| Camera | drivers/media/platform/msm/camera_v2/ | ISP, sensor drivers, actuators |
| Sensors (I2C) | drivers/input/misc/ & iio/ | Accelerometer, gyro, magnetometer |
| Touchscreen | drivers/input/touchscreen/ | Synaptics, FocalTech, Goodix |
| WiFi | drivers/staging/qcacld-3.0/ or qcacld-2.0| WLAN (Pronto/WCN) |
| Bluetooth | drivers/bluetooth/ (UART/QCA) | BT FM, HCI UART |
| Storage | drivers/mmc/host/sdhci-msm.c | eMMC, SD card |
| USB | drivers/usb/dwc3/ & phy/msm/ | USB OTG, charging, ADB |
| Thermal | drivers/thermal/qcom/ | TSENS, LMH, CPU throttling | MSM8953 drivers are part of the Qualcomm Code
All of these must be compiled for ARM64 (CONFIG_ARM64=y). 32-bit user-space binaries can still call into these drivers via ioctl, sysfs, or netlink.
The GPU is Adreno 506 (part of the Adreno 5xx family).
Qualcomm SoCs are unique in that they treat the modem as a separate processor.