MediaTek MT8167

MT8167 is a low-end MediaTek SoC released in 2017, used in some cheap tablets, smart home devices, dev boards, and a game console.
== 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 ==
== 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 ===
* Some Android from Lenovo, unclear which but seems related to the Lenovo Tab 7 Essential (lenovo-tb7304f): android_kernel_lenovo_mt8167 / -s (4.14)
* Google Coral linux-mtk .. with mt7668-wifi-mod? (4.19)
* MediaTek AIoT BSP (5.15)
=== 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 ===
* 2020: Before postmarketOS community involvement, basic MT8516/MT8167 support was mainlined by Fabien Parent (working at BayLibre at the time), ex., testing on a Gossamer Engineering "Pumpkin" board with variants for both SoC. Some work (most importantly MT6392 PMIC) was left unmerged.
* 2024-12: MT8516/MT8167 dtsi fixes lands in v6.13-next/dts64
* 2025-01: mt6779-keypad: fix compatibles and add to mt8516 lands in v6.13-next/dts64
* TODO: mt6397: Add support for the MT6392 PMIC (reviewed but not merged yet)
=== 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?