Qualcomm Snapdragon 660 (SDM660)
According to Wikipedia, they all are pretty similar. Their advantage is price; these SoCs are usually used in middle-range devices.
SDM660 (Snapdragon 660)
|Asus Zenfone 4||asus-z01k|
|Xiaomi Mi A2||xiaomi-jasmine_sprout||N|
|Xiaomi Mi Note 3||xiaomi-jason|
|Xiaomi Mi Pad 4||xiaomi-clover||Y|
|Xiaomi Redmi Note 7||xiaomi-lavender||P|
SDM636 (Snapdragon 636)
|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)
|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|
Most devices seem to use the PMIC-provided QPNP-charger which currently does not have a mainline driver.
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.
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.
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
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.
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.
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!).
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.
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