If you are a developer building AOSP or a custom kernel, here are the essential sources:
Downstream Android kernels use proprietary Qualcomm drivers ( kgsl for graphics, mdss for display). Porting to newer 64-bit environments often requires switching to the open-source DRM stack, which uses standard Linux display frameworks. 5. Challenges in Mainlining and Porting Drivers
g., camera, display, or modem) or trying to compile a kernel for a particular device?
Always use a cross-compiler like aarch64-linux-gnu-gcc when building drivers for the MSM8953. msm8953 for arm64 driver
What are some difficulties in mainlining Qualcomm chip drivers into the Linux kernel?
The Image Signal Processor (ISP) on MSM8953 is the most painful driver for ARM64. Qualcomm’s camera HAL ( mm-camera ) is a monolithic user-space blob that expects 32-bit pointers.
All of these must be compiled ( CONFIG_ARM64=y ). 32-bit user-space binaries can still call into these drivers via ioctl , sysfs , or netlink. If you are a developer building AOSP or
When compiling or configuring drivers for this platform, targeting the ARM64 (or aarch64 ) architecture is critical. The 64-bit instruction set introduces structural changes that impact driver development:
: Maps to the Top-Level Mode Multiplexer (TLMM), Qualcomm’s GPIO and interrupt controller.
As of 2024, mainline Linux (kernel 6.5+) has for MSM8953 thanks to the Qualcomm ARM64 platform maintainers. Notable drivers mainlined: Challenges in Mainlining and Porting Drivers g
Defines the hardware layout for the ARM64 architecture.
Bringing modern operating systems or custom Linux kernels to this hardware requires a deep understanding of the MSM8953 for ARM64 driver architecture. This technical guide explores how the 64-bit ARM architecture (AArch64) interacts with the silicon peripherals of the MSM8953, covering device trees, core subsystems, and mainline Linux kernel porting challenges. 1. Architectural Overview: ARM64 and the MSM8953
| 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. |