Jump to content

Qualcomm Snapdragon 820/821 (MSM8996): Difference between revisions

From postmarketOS Wiki
Tooniis (talk | contribs)
Update modem status
 
(15 intermediate revisions by 7 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 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_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_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 =  
| 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% Snapdragon 820E'
|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 MSM8996 Snapdragon 820'
|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 Snapdragon 821'
|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 ==
== 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.
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.
== Display ==
Mainline is missing DSI device tree nodes at the moment but there are patches that add them, [https://gitlab.com/msm8996-mainline/linux-msm8996/-/commit/abf792e496a7cf99536ac3ecafd2dd6fccea9d45 one of which] is in the SoC common mainline fork, and [https://lore.kernel.org/linux-arm-msm/20210228130831.203765-9-konrad.dybcio@somainline.org/ another one] is in the mailing lists. Picking one of these patches and adding a panel node (and a driver if not supported yet) should be all that's needed to bring the display up.
A better starting point however would be to add a simple framebuffer that makes use of the framebuffer setup by the bootloader for continuous splash. This also allows getting some kernel output on the display earlier in the boot process. You can find the memory address of this framebuffer in a reserved memory node named <code>cont_splash_mem</code> or similar in downstream dts.


== USB ==
== USB ==
Line 112: Line 115:


== See also ==
== See also ==
* [https://gitlab.com/msm8996-mainline/linux-msm8996 msm8996-mainline] a common near-mainline kernel tree for MSM8996 devices. Currently supports [[OnePlus_3T_(oneplus-oneplus3t)|OnePlus 3/3T]], [[Xiaomi_Mi_Note_2_(xiaomi-scorpio)|Xiaomi Mi Note 2]], and (partially?) the ZTE Axon 7.
* [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]]
* [[Xiaomi_Mi_Note_2_(xiaomi-scorpio)#Mainline]]


== Who's working on it ==
== Who's working on it ==
* [[User:Tooniis]] (@tooniis on Matrix)
* [[User:Tooniis]] (@tooniis on Matrix)
* [[User:WolfLink115]] (@WolfLink115 on Telegram, @wolflink115 on Discord)


{{note|Please add yourself if you're working on MSM8996 mainlining!}}
{{note|Please add yourself if you're working on MSM8996 mainlining!}}

Latest revision as of 12:41, 22 October 2023

Qualcomm MSM8996
MSM8996 in ceramic capsule
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:

MSM8996 Mainlining

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

Who's working on it

Note Please add yourself if you're working on MSM8996 mainlining!