Category:Samsung Exynos
This page only contains some info, data 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 mainline linux. For arm64 Samsung rarely tried getting the code into mainline linux, and so very few SoCs are supported. The ARM64 Exynos SoCs that are at least somewhat supported include:
- Exynos 7 (Early revision of Exynos 7420 [1])
- Exynos 850 (S5E3830)
- Exynos 990 (S5E9830)
- Exynos 2200 (S5E9925)
- Exynos 5433
- Exynos 7870
- Exynos 7885
- Exynos 8895
- Exynos 9810
- 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:
- Exynos 4415 (support dropped from mainline kernel)
- Exynos 5260: Galaxy Note 3 Neo (SM-N750)
- Exynos 5410
- Exynos 5800
Unfortunately Samsung does not release user manuals for their SoCs anymore. If you have an Exynos arm64 SoC 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 devicetree 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 it's 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.
Flashing tools
- Odin4 (1.2.1-dc05e3ea) - official leaked CLI Linux version
- Heimdall (by Grimler) - maintained fork of alternative to Odin
- Thor - alternative to Heimdall
- Brokkr Flash - a modern, cross-platform Samsung device flashing utility written in C++23
- Galaxy Flasher - a GUI for Samsung flashing tools (Supported Odin, Heimdall and Thor)
Other tools
- Hubble - USB recovery tool for unbricking Exynos devices
- sboot-split-detector - tool to help find splits on sboot.bin images on Exynos devices to aid usbdl recovery
- exynos-usbdl - unsigned code loader for Exynos BootROM (iROM)
- Exynos BL1 Info Reader
- Exynos LDFW Extractor - extracts individual LDFWs (LoaDable FirmWare) from an LDFW image
- Samsung Upload Client - tool to dump RAM using S-Boot Upload Mode
Bootloaders
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 (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 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 DT
Also, the bootloaders expects device trees in a certain format, and modifies the device tree before booting kernel. This is pretty inconvenient when testing mainline kernels, and so it is a good idea to use a secondary bootloader and boot mainline from it. U-boot does not support modern Exynos SoCs, but there are some other small bootloaders/kernel wrappers that can be used:
- OpenExyBootchain - open-source replacement to Samsung's bootchain on Exynos devices
- uniLoader - inspired by minimal_sboot_wrapper but with support for more Exynos variants and with more features
- minimal_sboot_wrapper (unmaintained) - wrapper to make it possible to boot mainline kernels with Samsung's S-Boot bootloader (made for Exynos 7885)
History
The first Exynos 4 CPUs were initially called S5PCxxx, like it's 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 seem 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.
Samsung SoCs Page
| SoC | Arch | Year | Mainline | GPU |
|---|---|---|---|---|
| Exynos 1280 | aarch64 | 2022 | No | ARM Mali-G68 MP4 (897 MHz) |
| Exynos 1330 | aarch64 | 2023 | No | ARM Mali-G68 MP2 (949 MHz) |
| Exynos 2100 | aarch64 | 2021 | No | ARM Mali-G78 MP14 |
| Exynos 2200 | aarch64 | 2022 | Yes | Samsung Xclipse 920 |
| Exynos 3250 | armv7 | 2014 | Yes | ARM Mali-400 |
| Exynos 3475 | armv7 | 2015 | Yes | ARM Mali-T720 |
| Exynos 4210 | armv7 | 2011 | Yes | ARM Mali-400 MP4 |
| Exynos 4212 | armv7 | 2012 | Yes | ARM Mali-400 MP4 |
| Exynos 4412 | armv7 | 2012 | Yes | ARM Mali-400 MP4 |
| Exynos 4415 | armv7 | 2014 | No | ARM Mali-400 MP4 |
| Exynos 5250 | armv7 | 2012 | Yes | ARM Mali-T604MP4 |
| Exynos 5410 | armv7 | 2013 | Yes | PowerVR SGX544 MP3 |
| Exynos 5420 | armv7 | 2013 | Yes | Mali-T628 MP6 |
| Exynos 5422 | armv7 | 2014 | Yes | Mali-T628 MP6 |
| Exynos 5433 | aarch64 | 2014 | Yes | Mali-T760 |
| Exynos 7420 | aarch64 | 2015 | No | Mali-T760 MP8 |
| Exynos 7570 | aarch64 | 2017 | No | Mali-T720 MP1 |
| Exynos 7580 | aarch64 | 2015 | Mali-T720 MP2 | |
| Exynos 7870 | aarch64 | 2016 | Yes | ARM Mali-T830 MP1 |
| Exynos 7880 | aarch64 | 2017 | No | Mali-T830 MP3 |
| Exynos 7885 | aarch64 | 2018 | Yes | ARM Mali-G71 MP2 |
| Exynos 850 | aarch64 | 2020 | Yes | ARM Mali-G52 MP1 (1001 MHz) |
| Exynos 8890 | aarch64 | 2016 | Yes | Mali-T880 MP12 |
| Exynos 8895 | aarch64 | 2017 | Yes | Mali-G71 MP20 |
| Exynos 9110 | aarch64 | 2017 | No | Mali-T720 |
| Exynos 9610 | aarch64 | 2018 | Yes | Mali-G72 MP3 (1053 MHz) |
| Exynos 980 | aarch64 | 2019 | Mali-G76 MP5 | |
| Exynos 9810 | aarch64 | 2017 | Yes | Mali-G72 MP18 |
| Exynos 9820 | aarch64 | 2018 | ARM Mali-G76 MP12 | |
| Exynos 9825 | aarch64 | 2019 | Mali-G76 MP12 | |
| Exynos 990 | aarch64 | 2020 | Yes | Mali-G77 |
See also
- https://exynos.wiki.kernel.org
- There are some article that may help to port mainline scattered around the device which has gotten mainline support.
- User:knuxify provides an article[2] about how to bring up the display of lt01wifi, which may help to those who want to port dsi panels.
- 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
- krzk's repository contains branches with several vendor (Samsung) kernel sources for many Exynos SoCs
References
Pages in category "Samsung Exynos"
The following 7 pages are in this category, out of 7 total.