Exynos mainline porting

From postmarketOS

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 5433
  • Exynos 7 (some early version of Exynos 7420 [1])
  • Exynos 7885
  • Exynos 850 (also known as Exynos 3830)
  • Exynos Auto v9
  • Tesla FSD
  • Google_Tensor SoC (named Exynos 9845 by Samsung)

Exynos4, Exynos5 and Exynos7870 have dedicated wiki pages, with links to matrix chats and development repositories. There is also a page dedicated to Exynos 5433: Samsung Exynos 5433 Octa.

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 devicetree 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 Exynos850, and it's vendor kernel. When writing your mainline dts (and drivers), start small with just bare essentials and some way to get output from the device (pstore/ramoops, simple-framebuffer, serial debugging), and make sure that works before adding more parts.

Samsung's stock bootloader expects devicetree 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:

  • minimal_sboot_wrapper, wrapper to make it possible to boot mainline kernels with Samsung's Sboot bootloader (made for Exynos 7885)
  • uniloader, inspired by minimal_sboot_wrapper but with support for more Exynos variants and with more features

Exynos 3250

Samsung Exynos 3250
Exynos 3250 from the Samsung Gear 2 smartwatch
Exynos 3250 from the Samsung Gear 2 smartwatch
Manufacturer Samsung
Name Exynos 3250
Architecture armv7
CPU 2x ARM Cortex-A7 MPcore
GPU ARM Mali-400 GPU
Year 2014
Process 28nm
Mainline yes
Components
CPU
Works
UART
Works
Storage
Works
USB
Works
Display
Works
GPU
Works
Pinctrl
Works
I²C
Works
SPI
Audio
Video
Thermal
Works
WiFi
Bluetooth
Modem
GPS
Camera
NPU
Suspend
Works
Ethernet


Devices

Device Codename Mainline
Samsung Gear 2 samsung-rinato, samsung-sm-r380, samsung-sm-r381 Y

Specifications

  • 2x ARM Cortex-A7 MPcore
  • ARM Mali-400 GPU

More information

Exynos 8895

Samsung Exynos 8895
Manufacturer Samsung
Name Exynos 8895
Architecture aarch64
CPU 4x 2.3 GHz Mongoose M2 & 4x 1.7 GHz Cortex-A53
GPU Mali-G71 MP20
Year 2017
Process 10nm
Mainline no
Components
CPU
Works
UART
Storage
USB
Display
GPU
Pinctrl
Works
I²C
SPI
Audio
Video
Thermal
WiFi
Bluetooth
Modem
GPS
Camera
NPU
Suspend
Ethernet


Devices

Device Codename Mainline
Samsung Galaxy Note 8 (Exynos) samsung-greatlte
Samsung Galaxy S8 samsung-dreamlte, samsung-dream2lte P

Specifications

  • 4x 2.3 GHz Mongoose M2 & 4x 1.7 GHz Cortex-A53
  • Mali-G71 MP20

Downstream status

Galaxy S8 has a working port.

Mainline status

Boots, pinctrl and pstore works. WIP

More information

Other SoCs

  • 4212: Samsung Gear 1 (support dropped from mainline kernel)
  • 4415 (support dropped from mainline kernel)
  • 5260: SM-N750 Galaxy Note 3 Neo
  • 5410
  • 5800

Samsung SoCs Page

SoC Codenames Arch Year Mainline
Samsung Exynos 3250 armv7 2014 Yes
Samsung Exynos 4210 armv7 2011 Yes
Samsung Exynos 4212 armv7 2012 Yes
Samsung Exynos 4412 armv7 2012 Yes
Samsung Exynos 4415 armv7 2014 No
Samsung Exynos 5250 armv7 2012 Yes
Samsung Exynos 5420 armv7 2013 Yes
Samsung Exynos 5422 armv7 2014 Yes
Samsung Exynos 5433 aarch64 2014 Yes
Samsung Exynos 7870 aarch64 2016 Yes
Samsung Exynos 8895 aarch64 2017 No
Samsung Exynos 990 aarch64 2020 Yes

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