Qualcomm Snapdragon 660 (SDM660)
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 |
Components | |
CPU |
Partial |
UART |
Works |
Storage |
Works |
USB |
Partial |
Display |
Partial |
GPU | |
Pinctrl |
Works |
I²C |
Works |
Audio | |
Video | |
Thermal |
Partial |
WiFi | |
Bluetooth | |
Modem |
Partial |
GPS | |
Camera | |
Suspend | |
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 |
Components | |
CPU |
Partial |
UART |
Works |
Storage |
Works |
USB |
Partial |
Display | |
GPU | |
Pinctrl |
Works |
I²C |
Works |
Audio | |
Video | |
Thermal | |
WiFi | |
Bluetooth | |
Modem | |
GPS | |
Camera | |
Suspend | |
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 |
Components | |
CPU |
Partial |
UART |
Works |
Storage |
Partial |
USB |
Partial |
Display | |
GPU | |
Pinctrl |
Works |
I²C | |
Audio | |
Video | |
Thermal | |
WiFi | |
Bluetooth | |
Modem | |
GPS | |
Camera | |
Suspend | |
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 | |
Xiaomi Mi A2 | xiaomi-jasmine_sprout | N |
Xiaomi Mi Note 3 | xiaomi-jason | |
Xiaomi Redmi Note 7 | xiaomi-lavender | P |
SDM636 (Snapdragon 636)
Device | Codename | Mainline |
---|---|---|
Asus Zenfone Max Pro M1 | asus-x00td | N |
Sony Xperia 10 Plus | sony-mermaid | Y |
Xiaomi Redmi Note 5 Pro | xiaomi-whyred |
SDM630 (Snapdragon 630)
Device | Codename | Mainline |
---|---|---|
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 currently does not have a mainline driver.
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
At least four 630 boards can successfully use display (both command- and video-mode) via DRM/MSM (and of course CPU rendering) with some (for now) out-of-tree patches. Most devices make use of PMIC-provided WLED backlight, which does have a mainline driver, but there happens to be an issue with it not working.
GPU
Adreno 508/509/512 are not supported in the mainline kernel yet.
There are patches sent to upstream for enabling support for those GPUs. See kholk commits to upstream for more info
Modem Subsystem
The remote processor responsible for modem subsystem shows up and shows *some* signs of life, but neither the modem itself, nor the Wi-Fi chip currently work. The phone also gets very hot with it enabled, which might suggest it's not really fine right now. Of course it needs firmware.
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.
https://patchwork.kernel.org/project/linux-arm-msm/list/?series=355881
Storage
At least SDHCI (eMMC) was tested to work. UFS is untested (if anybody knows about a sdm630/36/60-based device using UFS, leave a note here!).
USB
There is WIP support for USB 2.0 only (no USB 3) by Konrad Dybcio in https://github.com/konradybcio/linux/commits/ninges_labs
Do note that most devices only have USB 2.0 wired up in hardware.
WiFi
Wireless network should be available via the ath10k_snoc driver, provided the modem subsystem is alive. It also needs firmware (which is possibly signed per-device or per-vendor - though it's unconfirmed!).
Work done so far
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/
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:
- pinctrl: qcom: Add sdm660 pinctrl driver submitted by opendata
- pinctrl: sdm660: Set tile property for pingroups
- clk: qcom: Add Global Clock controller (GCC) driver for SDM660 by Taniya Das, who sent opendata's unsubmitted work after opendata had disappeared
commits merged in 5.1:
- soc: qcom: smd-rpm: Add sdm660 compatible by opendata
commits merged in 5.6:
- dt-bindings: arm: Add kryo260 compatible by alexeymin
commits merged in 5.8:
- dt-bindings: arm: qcom: Add sdm630 and sdm660 SoCs by alexeymin
- arm64: dts: qcom: Add SDM660 SoC support done by opendata sent by alexeymin
- arm64: dts: qcom: Add Xiaomi Redmi Note 7 (lavender) by alexeymin
commits merged in 5.9:
- soc: qcom: socinfo: Add socinfo entry for SDM630 by konradybcio (why not do it for 636 and 660 in one go though?)
- clk: qcom: smd: Add support for SDM660 rpm clocks by konradybcio
- arm64: dts: qcom: pm660(l): Add base dts files by konradybcio
- arm64: dts: qcom: sdm630: Add sdm630 dts file by konradybcio
- arm64: dts: qcom: Add support for Sony Xperia XA2/Plus/Ultra (Nile platform) by konradybcio
- arm64: dts: qcom: Add support for Sony Xperia 10/10 Plus (Ganges platform) by Martin Botka
- pinctrl: qcom: spmi-gpio: Add pm660(l) compatibility by konradybcio
- Documentation: Document pm660(l) SPMI GPIOs compatible by konradybcio
- clk: qcom: gcc-sdm660: Add missing modem reset by konradybcio
- clk: qcom: gcc-sdm660: Fix up gcc_mss_mnoc_bimc_axi_clk by konradybcio
- drm/msm/dsi: Add phy configuration for SDM630/636/660 by konradybcio
- drm/msm/mdp5: Add MDP5 configuration for SDM630 by konradybcio
- drm/msm/dsi: Add DSI configuration for SDM660 by konradybcio
- drm/msm/mdp5: Add MDP5 configuration for SDM636/660 by konradybcio
- mailbox: qcom: Add sdm660 hmss compatible by konradybcio
- regulator: core: Enlarge max OF property name length to 64 chars by kholk
- regulator: qcom_spmi: Add support for new regulator types by kholk
- regulator: qcom_spmi: Add PM660/PM660L regulators by kholk
- regulator: dt-bindings: Document the PM660/660L SPMI PMIC entries by kholk
- regulator: qcom_smd: Add PM660/PM660L regulator support by kholk
- regulator: dt-bindings: Document the PM660/PM660L PMICs entries by kholk
- Merge series "Support for PM660/PM660L SPMI and SMD regulators" from kholk
To be merged in linux-5.10 (currently in linux-next/master):
- arm64: dts: sdm630: Temporarily disable SMMUs by default by konradybcio
- clk: qcom: gcc-sdm660: Fix wrong parent_map by konradybcio
see also: