Jump to content

Qualcomm Snapdragon 660/630/636 (SDM660/SDM630/SDM636)

From postmarketOS Wiki
Qualcomm SDM630
Qualcomm SDM630 in ceramic package
Qualcomm SDM630 in ceramic package
Manufacturer Qualcomm
Name SDM630
Codenames msmtriton/apqtriton
Architecture aarch64
CPU 4x Cortex-A53 PERF cluster
4x Cortex-A53 PWR cluster
GPU Adreno 508
Year 2017
Process 14nm
Mainline yes
Community Page https://github.com/sdm660-mainline
Components
CPU
Partial
UART
Works
Storage
Works
USB
Partial
Display
Works
GPU
Partial
Pinctrl
Works
I²C
Works
SPI
Works
Audio
Broken
Video
Works
Thermal
Works
WiFi
Works
Bluetooth
Works
Modem
Partial
GPS
No data
Camera
Partial
Suspend
No data
Ethernet
No data
SATA
No data


Qualcomm SDM636
Qualcomm SDM636 in ceramic package
Qualcomm SDM636 in ceramic package
Manufacturer Qualcomm
Name SDM636
Architecture aarch64
CPU 4x Kryo 260 Gold PERF cluster
4x Kryo 260 Silver PWR cluster
GPU Adreno 509
Year 2017
Process 14nm
Mainline yes
Community Page https://github.com/sdm660-mainline
Components
CPU
Partial
UART
Works
Storage
Works
USB
Partial
Display
Works
GPU
Works
Pinctrl
Works
I²C
Works
SPI
Works
Audio
Broken
Video
Works
Thermal
Works
WiFi
Works
Bluetooth
Works
Modem
Partial
GPS
No data
Camera
Partial
Suspend
No data
Ethernet
No data
SATA
No data


Qualcomm SDM660
Qualcomm SDM660 in ceramic package
Qualcomm SDM660 in ceramic package
Manufacturer Qualcomm
Name SDM660
Codenames msmfalcon/apqfalcon
Architecture aarch64
CPU 4x 2.2 GHz Kryo 260 Gold
4x 1.84 GHz Kryo 260 Silver
GPU Adreno 512
Year 2017
Process 14nm
Mainline yes
Community Page https://github.com/sdm660-mainline
Components
CPU
Partial
UART
Works
Storage
Works
USB
Partial
Display
Works
GPU
Partial
Pinctrl
Works
I²C
Works
SPI
Works
Audio
Broken
Video
Works
Thermal
Works
WiFi
Works
Bluetooth
Works
Modem
Partial
GPS
No data
Camera
Partial
Suspend
No data
Ethernet
No data
SATA
No data


General description

SDM660/636/630 are Qualcomm SoCs released in 2017, with mostly out-of-tree mainline support.

According to Wikipedia, they all are pretty similar. Their advantage is price; these SoCs are usually used in middle-range devices.

Closest similar SoC is MSM8998 Snapdragon 835 (which has decent mainline support), and it seems that several drivers from MSM8998 can be reused for SDM660.

Devices

SDM660 (Snapdragon 660)

Device Codename Mainline
Asus Zenfone 4 asus-z01k
HMD Global Nokia 7.2 nokia-daredevil
Samsung Galaxy A9 2018 (A920F) samsung-a9y18qlte
Xiaomi Mi 8 Lite xiaomi-platina P
Xiaomi Mi A2 xiaomi-jasmine_sprout Y
Xiaomi Mi Note 3 xiaomi-jason
Xiaomi Mi Pad 4 xiaomi-clover Y
Xiaomi Redmi Note 7 xiaomi-lavender Y

SDM636 (Snapdragon 636)

Device Codename Mainline
Asus Zenfone Max Pro M1 asus-x00td Y
BQ Aquaris X2 bq-zangya
HMD Global Nokia 6.1 Plus nokia-DRG
Motorola Moto Z3 Play motorola-beckham P
Sony Xperia 10 Plus sony-mermaid Y
Xiaomi Mi Max 3 xiaomi-nitrogen
Xiaomi Redmi Note 5 Pro xiaomi-whyred
Xiaomi Redmi Note 6 Pro xiaomi-tulip Y

SDM630 (Snapdragon 630)

Device Codename Mainline
HMD Global Nokia 6.1 nokia-PL2 P
Motorola Moto X4 motorola-payton
Sony Xperia 10 sony-kirin Y
Sony Xperia XA2 sony-pioneer Y
Sony Xperia XA2 Plus sony-voyager Y
Sony Xperia XA2 Ultra sony-discovery Y

Battery/Charging

Most devices seem to use the PMIC-provided QPNP-charger which does have a mainline driver, and it works.

Fulegauge (qcom_fg) is in the fork, but not in mainline yet.

CPU

All cores are up, PSCI is working. Marked as partial because there is no support for CPU frequency scaling. It is advised to use only 4 CPUs for now due to the lack of cluster interconnect scaling, which results in 8 cores being slower than 4.

Display

All 630/636/660 boards can successfully use display (both command- and video-mode) via DRM/MSM (and of course CPU rendering, if you wish so). Support for platform's MDSS/MDP (and DPU) is in mainline.

Most devices (notably clover-plus is the exception) make use of PMIC-provided WLED backlight, which does have a mainline driver, and it works.

GPU

Mainline adreno driver has support for all of the the Adreno 508/509/512. Situation with mesa drviver (freedreno), however, is worse. SDM630's Adreno 508 suffers from rendering artifacts, A509/A512 experience artifacts a lot less.

GPU frequency scaling was partially fixed in the sdm660-mainline kernel fork. Fixes are expected to be published in pmaports with 6.14.x stable release.

There is no vulkan support for Adreno 5XX in mesa. Ticket: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5491

Modem Subsystem

The remote processor responsible for modem subsystem shows up and works "fine" on most devices. It is known to crash soon after startup on Sony devices, and on some Xiaomi (clover). If the modem crashes, then Wi-Fi breaks too. But on some devices this is working pretty alright (lavender, whyred).

The thing missing to call it "functioning modem" is mobile data driver (IPA), and without this driver ModemManager is completely ignoring the presence of modem in the system, even though some functionality like sending/receiving SMS would be possible. Voice calls would be useless without working audio, and mobile data (3G/4G) is of course not working without IPA driver. Otherwise modem subsystem is functional.

If the modem is in crash/restart loop, then the phone can get very hot, so stop rmtfs service if this happens.

Pinctrl

Was ported from downstream kernel to mainline by opendata in 2018.

SMMUs / IOMMUs

This platform is very picky about its SMMUs and therefore requires many downstream workarounds to be implemented. Upstream maintainers aren't exactly happy with that.

But eventually workarounds were merged - https://patchwork.kernel.org/project/linux-arm-msm/cover/20240907-sdm660-wifi-v1-0-e316055142f8@linaro.org/

Storage

At least SDHCI (eMMC/SD) was tested to work. SoC has support for UFS, but it is untested, there are no known devices with it (if anybody knows about a sdm630/36/60-based device using UFS, leave a note here!).

USB

Both USB 2 and USB 3 are now supported in mainline kernel. Do note though, that most devices only have USB 2.0 wired up in hardware. Notable exception here is only INFORCE IFC6560 singleboard computer (sda660-inforce-ifc6560), which is not supported by pmOS, but is supported in mainline by Linaro devs.

WiFi

Wireless network is available via the ath10k_snoc driver, provided the modem subsystem is alive. It also needs firmware, which is signed per-device or per-vendor.

On some devices Wi-Fi is a bit crashy, because modem is crashing by itself.

There is an issue that e.g. manually disconnecting from Wi-Fi, or by going outside of AP range breaks it until reboot.

Work done so far

Who is working on it

Upstream commits related to sdm630/636/660

Hopefully this can serve as history log, a step-by-step example of what needs to be done to bring new SoC support to mainline kernel from zero.

Commits merged in 4.20:

Commits merged in 5.1:

Commits merged in 5.6:

Commits merged in 5.8:

Commits merged in 5.9:

Commits merged in 5.10:

Commits merged in 5.11:

Commits merged in 5.12:

Commits merged in 5.13:

Commits merged in 5.15:

see also: