Qualcomm Snapdragon 820/821 (MSM8996): Difference between revisions
Change audio status (db820c has audio configuration upstream, and it also works on xiaomi-scorpio) |
WolfLink115 (talk | contribs) |
||
(21 intermediate revisions by 8 users not shown) | |||
Line 1: | Line 1: | ||
{{Infobox soc | {{Infobox soc | ||
| name = MSM8996 | | name = MSM8996 | ||
| image = File:Qualcomm_MSM8996.jpg | |||
| imagecaption = MSM8996 in ceramic capsule | |||
| codenames = msmthulium/apqthulium | | codenames = msmthulium/apqthulium | ||
| manufacturer = Qualcomm | | manufacturer = Qualcomm | ||
Line 6: | Line 8: | ||
| year = 2016 | | year = 2016 | ||
| cpu = 2x 2.2/2.3 GHz Kryo, 2x 1.6 GHz Kryo | | cpu = 2x 2.2/2.3 GHz Kryo, 2x 1.6 GHz Kryo | ||
| community_page = https://gitlab.com/msm8996-mainline | |||
| gpu = Adreno 530 | | gpu = Adreno 530 | ||
| process = 14 | | process = 14 | ||
Line 12: | Line 15: | ||
| status_uart = Y | | status_uart = Y | ||
| status_storage = P <!-- SDHCI/eMMC does not work, only UFS does --> | | status_storage = P <!-- SDHCI/eMMC does not work, only UFS does --> | ||
| status_usb = | | status_usb = Y | ||
| status_display = Y | | status_display = Y | ||
| status_gpu = Y | | status_gpu = Y | ||
Line 18: | Line 21: | ||
| status_i2c = Y | | status_i2c = Y | ||
| status_audio = Y | | status_audio = Y | ||
| status_video = | | status_video = Y | ||
| status_thermal = Y | | status_thermal = Y | ||
| status_wifi = <!-- | | status_wifi = - | ||
| | | status_bluetooth = - | ||
| status_modem = P <!-- Modem boots and can send and receive SMS using QRTR-patched ofono, but mobile data will not work due to lack of IPA support--> | |||
| | | status_camera = P | ||
| status_suspend = N | |||
}} | }} | ||
Line 37: | Line 41: | ||
|format=table | |format=table | ||
|limit=9999 | |limit=9999 | ||
|where=Booting AND Devices.chipset LIKE 'Qualcomm APQ8096% | |where=Booting AND Devices.chipset LIKE 'Qualcomm Snapdragon 820E (APQ8096%)' | ||
|more results text= | |more results text= | ||
}} | }} | ||
Line 47: | Line 51: | ||
|format=table | |format=table | ||
|limit=9999 | |limit=9999 | ||
|where=Booting AND Devices.chipset LIKE 'Qualcomm | |where=Booting AND Devices.chipset LIKE 'Qualcomm Snapdragon 820 (MSM8996)' | ||
|more results text= | |more results text= | ||
}} | }} | ||
Line 57: | Line 61: | ||
|format=table | |format=table | ||
|limit=9999 | |limit=9999 | ||
|where=Booting AND Devices.chipset LIKE 'Qualcomm MSM8996%Pro | |where=Booting AND Devices.chipset LIKE 'Qualcomm Snapdragon 821 %(MSM8996%Pro)' | ||
|more results text= | |more results text= | ||
}} | }} | ||
== Porting to a new device == | |||
Getting mainline to boot on MSM8996 devices is generally a straightforward process. Check the mainlining guide to get started: | |||
{{mainpage-button|system-run|MSM8996_Mainlining|MSM8996 Mainlining}} | |||
== Booting == | |||
On at least the [[Xiaomi_Mi_Note_2_(xiaomi-scorpio)|Xiaomi Mi Note 2]], some IOMMU hacks ([https://gitlab.com/Tooniis/linux/-/commit/d3d753f212ee45f1a01c060b9f50feb43fd5f616 1], [https://gitlab.com/Tooniis/linux/-/commit/96da3bd12174a76cd3e47cb3aaa79f19f2aa9dd3 2]) are needed to let it to boot properly. Otherwise it would crash and reboot as soon as the MDP SMMU is probed. | |||
== USB == | |||
Enabling <code>usb3</code> or <code>usb2</code> depending on which one the USB port is connected to should be enough to make USB work, although forcing it to peripheral mode might be needed before adding support for extcon: | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width: 500px; overflow: auto;"> | |||
MSM8996 USB peripheral mode configuration | |||
<div class="mw-collapsible-content"> | |||
&usb3 { | |||
... | |||
dwc3@6a00000 { | |||
dr_mode = "peripheral"; | |||
... | |||
}; | |||
}; | |||
</div> | |||
</div> | |||
Some devices have a USB 2.0 port wired to <code>usb3</code>. In this case it must be limited to high-speed and have <code>usb3phy</code> removed from it: | |||
<div class="toccolours mw-collapsible mw-collapsed" style="width: 500px; overflow: auto;"> | |||
MSM8996 USB 2.0 configuration | |||
<div class="mw-collapsible-content"> | |||
&usb3 { | |||
/* Disable USB3 pipe_clk requirement */ | |||
qcom,select-utmi-as-pipe-clk; | |||
... | |||
dwc3@6a00000 { | |||
/* usb3-phy is not used on this device */ | |||
phys = <&hsusb_phy1>; | |||
phy-names = "usb2-phy"; | |||
/* Limit USB to high-speed */ | |||
maximum-speed = "high-speed"; | |||
... | |||
}; | |||
}; | |||
</div> | |||
</div> | |||
== Haptics == | |||
Haptics are supported, see [[Haptics]] for more details. | |||
== See also == | |||
* [https://gitlab.com/msm8996-mainline/linux msm8996-mainline/linux] a common near-mainline kernel tree for MSM8996 devices. | |||
* [[Xiaomi_Mi_Note_2_(xiaomi-scorpio)#Mainline]] | |||
== Who's working on it == | |||
* [[User:Tooniis]] (@tooniis on Matrix) | |||
* [[User:WolfLink115]] (@WolfLink115 on Telegram, @wolflink115 on Discord) | |||
{{note|Please add yourself if you're working on MSM8996 mainlining!}} |
Latest revision as of 12:41, 22 October 2023
![]() MSM8996 in ceramic capsule | |
Manufacturer | Qualcomm |
---|---|
Name | MSM8996 |
Codenames | msmthulium/apqthulium |
Architecture | aarch64 |
CPU | 2x 2.2/2.3 GHz Kryo, 2x 1.6 GHz Kryo |
GPU | Adreno 530 |
Year | 2016 |
Process | 14nm |
Mainline | yes |
Community Page | https://gitlab.com/msm8996-mainline |
Components | |
CPU |
Partial |
UART |
Works |
Storage |
Partial |
USB |
Works |
Display |
Works |
GPU |
Works |
Pinctrl |
Works |
I²C |
Works |
SPI |
No data |
Audio |
Works |
Video |
Works |
Thermal |
Works |
Modem |
Partial |
GPS |
No data |
Camera |
Partial |
NPU |
No data |
Suspend |
Broken |
Ethernet |
No data |
SATA |
No data |
MSM8996/APQ8096 (or Snapdragon 820) is a Qualcomm SoC released in 2016, with great mainline support orginally added for the Dragonboard 820c. There is also a slightly higher clocked (and supposedly less problematic architecture-wise) MSM8996Pro also known as Snapdragon 821.
Devices
APQ8096(SG) (Snapdragon 820E, WiFi-only)
Device | Codename | Mainline |
---|---|---|
Arrow DragonBoard 820c | arrow-db820c | Y |
MSM8996 (Snapdragon 820)
Device | Codename | Mainline |
---|---|---|
HTC 10 | htc-pme | |
Lenovo ZUK Z2 Plus | zuk-z2-plus | |
Lenovo ZUK Z2 Pro | zuk-z2-row | |
LG V20 | lg-us996 | |
OnePlus 3 | oneplus-oneplus3 | Y |
Xiaomi Mi 5 | xiaomi-gemini | Y |
ZTE Axon 7 | zte-axon7 | P |
MSM8996Pro (Snapdragon 821)
Device | Codename | Mainline |
---|---|---|
LeEco Le Pro3 | leeco-zl1 | N |
LG G6 | lg-h870 | |
OnePlus 3T | oneplus-oneplus3t | Y |
Xiaomi Mi 5S | capricorn | Y |
Xiaomi Mi 5s Plus | xiaomi-natrium | Y |
Xiaomi Mi Note 2 | xiaomi-scorpio | Y |
Porting to a new device
Getting mainline to boot on MSM8996 devices is generally a straightforward process. Check the mainlining guide to get started:
Booting
On at least the Xiaomi Mi Note 2, some IOMMU hacks (1, 2) are needed to let it to boot properly. Otherwise it would crash and reboot as soon as the MDP SMMU is probed.
USB
Enabling usb3
or usb2
depending on which one the USB port is connected to should be enough to make USB work, although forcing it to peripheral mode might be needed before adding support for extcon:
MSM8996 USB peripheral mode configuration
Some devices have a USB 2.0 port wired to usb3
. In this case it must be limited to high-speed and have usb3phy
removed from it:
MSM8996 USB 2.0 configuration
Haptics
Haptics are supported, see Haptics for more details.
See also
- msm8996-mainline/linux a common near-mainline kernel tree for MSM8996 devices.
- Xiaomi_Mi_Note_2_(xiaomi-scorpio)#Mainline
Who's working on it
- User:Tooniis (@tooniis on Matrix)
- User:WolfLink115 (@WolfLink115 on Telegram, @wolflink115 on Discord)
Please add yourself if you're working on MSM8996 mainlining! |