Qualcomm Snapdragon 660/630/636 (SDM660/SDM630/SDM636)
![]() 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 A link to a git{hub,lab} organisation/repo where development happens. |
https://github.com/sdm660-mainline |
CPU SMP (bring up secondary CPU cores), CPU frequency scaling, CPUidle |
Partial
|
|---|---|
UART |
Works
|
Storage eMMC, SD cards, UFS, ... |
Works
|
USB |
Partial
|
Display |
Works
|
GPU |
Partial
|
Pinctrl |
Works
|
I²C |
Works
|
SPI Serial Peripheral Interface |
Works
|
Audio |
Partial
|
Video Hardware-accelerated video de/encoding |
Works
|
Thermal |
Works
|
WiFi |
Works
|
Bluetooth |
Works
|
Modem Calls, SMS, Internet |
Partial
|
GPS |
Broken
|
Camera |
Partial
|
Suspend |
Broken
|
|
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 A link to a git{hub,lab} organisation/repo where development happens. |
https://github.com/sdm660-mainline |
CPU SMP (bring up secondary CPU cores), CPU frequency scaling, CPUidle |
Partial
|
|---|---|
UART |
Works
|
Storage eMMC, SD cards, UFS, ... |
Works
|
USB |
Partial
|
Display |
Works
|
GPU |
Partial
|
Pinctrl |
Works
|
I²C |
Works
|
SPI Serial Peripheral Interface |
Works
|
Audio |
Partial
|
Video Hardware-accelerated video de/encoding |
Works
|
Thermal |
Works
|
WiFi |
Works
|
Bluetooth |
Works
|
Modem Calls, SMS, Internet |
Partial
|
GPS |
Broken
|
Camera |
Partial
|
Suspend |
Broken
|
|
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 A link to a git{hub,lab} organisation/repo where development happens. |
https://github.com/sdm660-mainline |
CPU SMP (bring up secondary CPU cores), CPU frequency scaling, CPUidle |
Partial
|
|---|---|
UART |
Works
|
Storage eMMC, SD cards, UFS, ... |
Works
|
USB |
Partial
|
Display |
Works
|
GPU |
Partial
|
Pinctrl |
Works
|
I²C |
Works
|
SPI Serial Peripheral Interface |
Works
|
Audio |
Partial
|
Video Hardware-accelerated video de/encoding |
Works
|
Thermal |
Works
|
WiFi |
Works
|
Bluetooth |
Works
|
Modem Calls, SMS, Internet |
Partial
|
GPS |
Broken
|
Camera |
Partial
|
Suspend |
Broken
|
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 | Category |
|---|---|---|
| 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 | testing |
| Xiaomi Mi A2 | xiaomi-jasmine_sprout | testing |
| Xiaomi Mi Note 3 | xiaomi-jason | |
| Xiaomi Mi Pad 4 | xiaomi-clover | testing |
| Xiaomi Redmi Note 7 | xiaomi-lavender | testing |
SDM636 (Snapdragon 636)
| Device | Codename | Category |
|---|---|---|
| Asus Zenfone Max Pro M1 | asus-x00td | testing |
| BlackBerry KEY2 LE | blackberry-luna | testing |
| BQ Aquaris X2 | bq-zangya | |
| HMD Global Nokia 6.1 Plus | nokia-DRG | |
| Motorola Moto Z3 Play | motorola-beckham | testing |
| ONYX BOOX Leaf | onyx-leaf | |
| ONYX BOOX Poke3 | onyx-poke3 | |
| Sony Xperia 10 Plus | sony-mermaid | |
| Xiaomi Mi Max 3 | xiaomi-nitrogen | |
| Xiaomi Redmi Note 5 Pro | xiaomi-whyred | testing |
| Xiaomi Redmi Note 6 Pro | xiaomi-tulip | testing |
SDM630 (Snapdragon 630)
| Device | Codename | Category |
|---|---|---|
| HMD Global Nokia 6.1 | nokia-PL2 | |
| Motorola Moto X4 | motorola-payton | downstream |
| Sony Xperia 10 | sony-kirin | |
| Sony Xperia XA2 | sony-pioneer | testing |
| Sony Xperia XA2 Plus | sony-voyager | |
| Sony Xperia XA2 Ultra | sony-discovery |
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
Audio
Since 6.17 release sdm660 internal codec is supported, which allows devices to have functional "Headphones" output and "Internal mic" input. Earpiece, speakers, etc require additional codecs (some of them are not SoC-dependent) and each individual device requires its own ALSA UCM configs written for it.
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 (wlanmdsp.mbn), 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: https://github.com/sdm660-mainline/linux/issues/75
Who is working on it
- User:opendata worked on initial basic SoC support (pinctrl-sdm660, gcc-sdm660) (+ various branches)
- Pavel Dubrova worked on SDM630 SoC support based on kernel 5.3. It is unknown where the sources are located.
- User:Alexeymin tried to continue opendata's work. WIP Branch is in linux-postmarketos repo.
- Konrad Dybcio in https://github.com/konradybcio/linux/commits/ninges_labs (warning: frequent forcepushes!)
- SoMainline on GitHub: https://github.com/SoMainline/linux/ (not updated since long ago)
- See also Article on Phoronix, Linux-SDM630-SDM660-Patches
- Several developers in the Matrix channel #sdm660-mainline:matrix.org; join if you want to cooperate.
