Jump to content

Qualcomm Snapdragon 835 (MSM8998)

From postmarketOS Wiki
Revision as of 06:59, 20 July 2020 by Deathmist (talk | contribs) (Add information about testing the PM8XXX compatible RTC module)
Qualcomm MSM8998
Manufacturer Qualcomm
Name MSM8998
Architecture aarch64
CPU 4x 2.45 GHz Kryo 280 Gold, 4x 1.9 GHz Kryo 280 Silver
GPU Adreno 540
Year 2017
Process 10nm
Mainline yes
Components
CPU
Works
UART
No data
Storage
Works
USB
Partial
Display
Partial
GPU
No data
Pinctrl
Works
I²C
Works
SPI
No data
Audio
No data
Video
No data
Thermal
No data
WiFi
Partial
Bluetooth
Works
Modem
No data
GPS
No data
Camera
No data
NPU
No data
Suspend
No data
Ethernet
No data
SATA
No data


MSM8998 (or Snapdragon 835) is a high-end Qualcomm SoC released in 2017 with mainline support originally added for the MTP (proven reference design) board towards the end of 2018.

Devices

No results

UFS internal storage

Warning WARNING: IF YOUR DEVICE IS A SONY XPERIA DO NOT NEVER EVER EVER TRY TO ENABLE UFS ON NON-VENDOR/NON-SODP KERNELS! IT WILL ERASE THE CHIP CLEAN (INCLUDING THE BOOTLOADER!) CONSIDER YOURSELF WARNED

To enable the device's internal UFS 2.1 host controller (and 14nm UFS QMP PHY), compile the kernel with the following modules enabled:

CONFIG_SCSI_UFS_QCOM=y
CONFIG_PHY_QCOM_QMP=y

You can optionally set CONFIG_SCSI_SCAN_ASYNC=y for some additional speedup while booting. Consider also enabling CONFIG_QFMT_V2 if you intend on writing data to a userdata partition formatted by Android where disk quotas are normally enabled by default for ext4 volumes.

Bluetooth

Getting Bluetooth to work should be trivial assuming you compile the kernel with the following modules enabled:

CONFIG_RFKILL=m
CONFIG_BT_RFCOMM=y
CONFIG_BT_BNEP=y
CONFIG_BT_HIDP=y
CONFIG_BT_HS=y
CONFIG_BT_LE=y

After those are set and you've copied the needed kernel modules over to the rootfs in /lib/modules/ you just need the following firmware files in /lib/firmware/qca/:

crbtfw21.tlv
crnv21.bin

Those can be supplied directly from linux-firmware and they should work fine, but if not you'll need to grab the files from your device's firmware partitions.

Real-time clock (RTC)

The RTC module found on the PM8998 PMIC block works with CONFIG_RTC_DRV_PM8XXX enabled. It can be easily tested from userspace like so:

# cd /sys/class/rtc/rtc0/
# echo $((`cat since_epoch`+120)) > wakealarm

After running that and fully powering down the device it should power on by itself soon afterwards (2 minutes later to be exact).

See also

linux-mainline-oneplus5 A mainline kernel fork with some patches for MSM8998 and OnePlus 5/5T support (check the 5.7 branch commits for a "step-by-step guide")

OnePlus_5_(oneplus-cheeseburger)#Mainline_kernel

Who's working on it

(feel free to add yourself here if you're working on MSM8998 mainlining!)