Category:Samsung Exynos
This page only contains some info and links regarding mainline on Exynos SoCs. If you want to mainline a device, please follow the Mainlining guide.
Most Exynos ARM SoCs released up until 2014 are well supported in upstream Linux. For ARM64 Samsung rarely tried getting the code into upstream Linux, and so very few SoCs are supported. The ARM64 Exynos SoCs that are at least somewhat supported include:
| SoC | Year | UART | USB | Storage | Display | CPU | GPU | Pinctrl | I²C | Audio | Video | Thermal | WiFi | BT | Modem | GPS | Camera | Suspend |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Samsung Exynos 5433 | 2014 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | Y | |||||
| Samsung Exynos 7870 | 2016 | Y | Y | Y | Y | Y | Y | Y | Y | N | N | N | - | - | P | N | N | N |
| Samsung Exynos 8895 | 2017 | Y | Y | P | P | P | Y | Y | - | - | ||||||||
| Samsung Exynos 9810 | 2017 | Y | Y | - | - | |||||||||||||
| Samsung Exynos 7885 | 2018 | Y | P | P | P | P | Y | P | ||||||||||
| Samsung Exynos 850 | 2020 | - | - | |||||||||||||||
| Samsung Exynos 990 | 2020 | Y | P | P | P | P | P | Y | Y | N | N | N | N | N | N | - | N | N |
| Samsung Exynos 2200 | 2022 | N | P | N | P | P | N | Y | Y | N | N | N | N | N | N | - | N | N |
- Exynos 7 (Early revision of Exynos 7420[1])
- Exynos Auto v9
- Exynos Auto v920
- Tesla FSD
- Google Tensor G1 (GS101) (also known as S5E9845)
There's been multiple ARMv7 SoCs that have had good support in the past, but currently don't:
| SoC | Year | UART | USB | Storage | Display | CPU | GPU | Pinctrl | I²C | Audio | Video | Thermal | WiFi | BT | Modem | GPS | Camera | Suspend |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Samsung Exynos 4210 | 2011 | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | - | |||
| Samsung Exynos 4212 | 2012 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | Y | ||
| Samsung Exynos 4412 | 2012 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | P | Y | |
| Samsung Exynos 5250 | 2012 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | Y | |
| Samsung Exynos 5410 | 2013 | Y | P | - | - | - | - | |||||||||||
| Samsung Exynos 5420 | 2013 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | Y | |
| Samsung Exynos 5422 | 2014 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | - | - | - | Y | |
| Samsung Exynos 3250 | 2014 | Y | Y | Y | Y | Y | Y | Y | Y | Y | - | Y | ||||||
| Samsung Exynos 3475 | 2015 | Y | N | Y | P | P | Y | Y | Y | N | N | N | - | - | N | N | N |
- Exynos 4415 (support dropped from upstream)
- Exynos 5260: Galaxy Note 3 Neo (SM-N750)
- Exynos 5800
- S3C2440
- S3C6400
- S3C6410
Unfortunately Samsung does not release user manuals for their SoCs anymore. If you have an Exynos ARM64 SoC-based device that you want to mainline then, a good start is to study the device tree and drivers for another already supported SoC and compare with the vendor kernel for that SoC, and then look at device tree and drivers in vendor kernel for your SoC and try to "translate" it into mainline-acceptable format with the other SoC as reference. A good reference might be Exynos 850, and its vendor kernel.
When writing your mainline device trees (and drivers), start small with just bare essentials and some way to get output from the device (pstore/ramoops, simple-framebuffer, serial debugging) to make sure that works before adding more parts.
Tools
Flashing
- Odin4 (1.2.1-dc05e3ea) — official leaked CLI Linux version
- Thor — alternative to Heimdall
- Brokkr Flash — a modern, cross-platform (Windows, Linux, MacOS and Android) Samsung device flashing utility written in C++23
- Galaxy Flasher — a GUI for Samsung flashing tools (supported Odin4, Heimdall and Thor)
Mainlining
Exploits
- Exynos USBDL — unsigned code loader for Exynos BootROM (iROM)
- Tensor USBDL — a tool to send bootloaders over serial USB to a connected Google Pixel device in Exynos USB Boot mode
- houston — exploit for Exynos devices to gain ACE in BootROM context
Other
- Hubble — a tool to recover Exynos based devices from a hard brick where the device falls back to USBDL
- sboot-split-detector — a tool to help find splits on sboot.bin images on Exynos devices to aid USBDL recovery
- Exynos BL1 Reader — reads information from the BL1 header and footer and prints them out
- Exynos LDFW Extractor — extracts individual LDFWs (LoaDable FirmWare) from an LDFW image
- Samsung Upload Client — a tool to dump RAM using S-Boot Upload Mode
Bootloaders
| This information needs to be clarified and links to leaks need to be added |
Devices released before 2020 use S-Boot, which is based on U-Boot, and past 2020 use S-LK. There's some leaks of S-LK for 990 and 2300. S-Boot/S-LK have some weird quirks though:
- On devices with the new-style DECON[2] (past 2016), the HW_SW_TRIG_CONTROL bit needs to be set in order to allow the framebuffer to refresh
- On some revisions, CNTFRQ_EL0[3] is left unset. This means that you either have to set it either via the Exynos USBDL exploit, or hardcode the frequency in the timer node inside the SoC device tree
Samsung bootloaders expect the device tree in a certain format, and modifies it before booting the kernel. This is pretty inconvenient when booting mainline. It is recommended to use a secondary bootloader for that reason. There are multiple secondary bootloaders/kernel wrappers that can be used:
- uniLoader — inspired by Minimal S-Boot Wrapper (unmaintained) but with support for more Samsung SoCs (and not only Samsung SoCs) and more features. Recommended for beginners, easy to port, but may lack features for advanced users
- lk3rd — made exclusively for Exynos 990 devices and recommended for use on them
- OpenExyBootchain — open-source replacement to Samsung's bootchain on Exynos devices. For advanced users and experiments only
History
The first Exynos 4 CPUs were initially called S5PCxxx, like their predecessors, but then renamed. For locating information it can therefore be good to know the old names.
- The oldest Exynos processor is Exynos 3110, also known as hummingbird, which was renamed from S5PC110. It has a Cortex-A8 core.
- S5PV210, found in some development boards, is supposedly similar to Exynos 3110
- Exynos 4210, the first Exynos 4 CPU, was initially called S5PC210, and has two Cortex-A9 cores
- S5PV310, found in some development boards, is supposedly similar to Exynos 4210
- Exynos 4412 was initially called S5PC220, based on strings in very old u-boot blobs from Samsung. It has four Cortex-A9 cores.
The Exynos 4x12 is likely codenamed Pega/Pegasus (the Exynos 4212 is referred to as the Pega-D, the Exynos 4412 is referred to as the Pega-Q and the Exynos 3250 is referred to as the Pega-W(?)). "PegasusQ" is also the name of the CPU governor used on some Exynos 4412 devices.
The common denominator for Exynos 4 seems to be that the SoC has only Cortex-A9 cores. Later devices have Cortex-A15 cores (and possibly Cortex-A9 cores as well) and were then called Exynos 5.
See also
Documentation
Public
- Exynos 4210 user's manual
- Exynos 5250 user's manual
- https://exynos.wiki.kernel.org (archived)
- There are some article that may help to port mainline scattered around the device which has gotten mainline support.
Leaks
- Exynos 980 (S5E9630) documentation package
postmarketOS Wiki pages
Blog posts about mainlining
- Knuxify provides an article about how to bring up the display of lt01wifi, which may help to those who want to port DSI panels.
- PapaTutuWawa: (outdated)
- Simon Shields — Midas on Mainline series (outdated)
Code
LKML
Repositories
Maintained
- exynos7870-mainline repository contains branches related to Exynos 7870
- gs101-mainline repository contains branches related to Google Tensor G1 (GS101)
- krzk's repository contains branches with several vendor (Samsung) kernel sources for many Exynos SoCs
Unmaintained
- exynos990-mainline repository contains branches related to Exynos 990
- Ivosbg's repository contains branches related to Exynos 3375
- PabloPL's repository contains branches related to Exynos 7420, 7580, 8890
- dsankouski's repository contains branches related to Exynos 7880
- VDavid003's repository contains branches related to Exynos 7885
- ivoszbg's repository contains branches related to Exynos 8895
References
Pages in category "Samsung Exynos"
The following 4 pages are in this category, out of 4 total.