Jump to content

MediaTek MT8167

From postmarketOS Wiki

MT8167 is a low-end MediaTek SoC released in 2017, used in some cheap tablets, smart home devices, dev boards, and a game console.

MediaTek MT8167
MT8167
MT8167
Manufacturer MediaTek
Name MT8167
Architecture aarch64
CPU 4x ARM Cortex-A35 (1.3GHz or 1.5GHz)
GPU PowerVR GE8300
Year 2017
Process 28nm
Mainline yes
Components
CPU
Works
UART
Works
Storage
Works
USB
Works
Display
Works
GPU
Broken
Pinctrl
Works
I²C
Works
SPI
Works
Audio
Broken
Video
Broken
Thermal
Broken
WiFi
Broken
Bluetooth
Broken
GPS
Broken
Camera
Broken
NPU
Suspend
Broken
Ethernet
Sata


Variants

According to the archived MediaTek page linked above, the difference between the A and B variants is that "The MT8167B provides supports for 1080p video decoding at 30fps and support for a HD+ display (1280x800)".

There seemingly "exists" the MT8167D variant, both mentioned on the marketing page for the tb7304f tablet and inserted as device name into the DTB by its bootloader, but the label physically engraved onto that chip is MT8167A.

It's unclear what exactly is different in the MT8167S variant used in various dev boards and smart home devices, but it *seems* to correlate with being fused for 1.5GHz clock speed (vs. the base 1.3GHz)?

The MediaTek MT8516 is a closely related SoC made for headless devices, it's mostly identical but does not contain any "multimedia" peripherals (no display, no GPU, no video codecs).

Devices

Device Codename Mainline
Barns and Noble Nook Tablet 10.1 (2018) barnsnoble-bntv650
Lenovo Tab 7 Essential lenovo-tb7304f P
Xiaomi Mi Smart Clock xiaomi-x04g P

Development Notes

Community

The Matrix group currently actively working on MT8167 development is #x04g:mainlining.org.

Currently there are two development repos, Val's https://codeberg.org/valpackett/linux-chatarra/commits/branch/mt8167 and Adrian's https://github.com/mt8167-mainline/linux.

Downstream sources

Boot images

On devices that came with really old Android (~7), the stock LK bootloader seems to require old school MediaTek labels, so use this in deviceinfo:

deviceinfo_mtk_label_kernel="KERNEL"
deviceinfo_mtk_label_ramdisk="ROOTFS"

(and you can use mtk_mkimage.sh when building images manually), while the DTB is just concatenated to the gzip-compressed kernel image.

Mainlining history

TODO

  • cpuidle / CPU hot-unplug: there's a cursed issue, only on the Android firmware – PSCI works fine for initial core bringup, but no cores ever return from suspend nor from poweroff. For now we have to disable cpuidle. Quite some time was spent debugging, still unclear so far what's missing. Doesn't seem to be the the CPU stuff in the power domain controller.
  • Display: working in Val's tree, mailing is TODO
  • GPU: take powervr: MT8173 GPU support and adapt for our SoC
  • Audio: ASoC: mediatek: Add basic PCM driver for MT8516? Not on the PMIC?
  • Wireless: investigate Google Coral stuff, at least apply the same MT8516 specific changes they made to the MT7668 driver to mt7668-wifi-bt and update to 6.x? Is this stuff really so different from what's supported by mainline mt76 that it's hard to add support there?