mbox series

[v3,00/10] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F)

Message ID 20241026-exynos9810-v3-0-b89de9441ea8@gmail.com
Headers show
Series Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) | expand

Message

Markuss Broks Oct. 26, 2024, 8:32 p.m. UTC
Hello,

This series adds initial SoC support for the Samsung Exynos 9810
SoC and initial board support for Samsung Galaxy S9 phone (SM-G960F),
codenamed starlte.

The Exynos 9810 SoC is also used in S9 Plus (star2lte), Note 9 (crownlte),
and perhaps more devices. Currently only Galaxy S9 DTS file is added but it
should be fairly simple to add support for other devices based on this SoC,
considering they're quite similar.

The support added in this series includes:
- cpus
- pinctrl and gpio
- simple-framebuffer

This is enough to boot to a minimal initramfs shell.

The preferred way to boot this device is by using a small shim bl called
uniLoader [1], which packages the mainline kernel and DT and jumps to
the kernel. This is done in order to work around some issues caused by
the stock, and non-replacable Samsung S-Boot bootloader. For example,
S-Boot leaves the decon trigger control unset, which causes the framebuffer
to not refresh, so simple-framebuffer wouldn't work without a secondary loader.
Ideally, there'll be a kernel driver for the display subsystem some day to
resolve this issue.

[1] https://github.com/ivoszbg/uniLoader

Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Changes in v3:
- fix a blank line between tags (krzk)
- align with the opening " in eint-controller (krzk)
- sort the memory node (ivo)
- drop the \n (ivo)
- drop the perf patches into separate series (krzk)
- elaborate a bit more on dt-bindings (krzk)
- Link to v2: https://lore.kernel.org/r/20241025-exynos9810-v2-0-99ca3f316e21@gmail.com

Changes in v2:
- sort the pinctrl nodes alphabetically (ivo)
- move the interrupts from pinctrl file to SoC dtsi (krzk)
- move the wakeup-eint from pinctrl file to SoC dtsi (krzk)
- sort gpio-keys pinctrl-0 and pinctrl-names (ivo)
- rename the bixby key node to "wink" (ivo)
- sort gpio-keys subnodes (ivo)
- sort pinctrl_alive gpio-keys pin descriptions (ivo)
- fix the Co-developed-by tags and add a signoff (krzk)

- Link to v1: https://lore.kernel.org/r/20241024-exynos9810-v1-0-ed14d0d60d08@gmail.com

---
Markuss Broks (10):
      dt-bindings: arm: cpus: Add Samsung Mongoose M3
      dt-bindings: hwinfo: samsung,exynos-chipid: Add Samsung exynos9810 compatible
      dt-bindings: pinctrl: samsung: Add compatible for Exynos9810 SoC
      dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint
      dt-bindings: soc: samsung: exynos-pmu: Add exynos9810 compatible
      dt-bindings: arm: samsung: Document Exynos9810 and starlte board binding
      soc: samsung: exynos-chipid: Add support for Exynos9810 SoC
      pinctrl: samsung: Add Exynos9810 SoC specific data
      arm64: dts: exynos: Add Exynos9810 SoC support
      arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F)

 Documentation/devicetree/bindings/arm/cpus.yaml    |   1 +
 .../bindings/arm/samsung/samsung-boards.yaml       |   6 +
 .../bindings/hwinfo/samsung,exynos-chipid.yaml     |   1 +
 .../pinctrl/samsung,pinctrl-wakeup-interrupt.yaml  |   1 +
 .../bindings/pinctrl/samsung,pinctrl.yaml          |   1 +
 .../bindings/soc/samsung/exynos-pmu.yaml           |   1 +
 arch/arm64/boot/dts/exynos/Makefile                |   1 +
 arch/arm64/boot/dts/exynos/exynos9810-pinctrl.dtsi | 503 +++++++++++++++++++++
 arch/arm64/boot/dts/exynos/exynos9810-starlte.dts  | 119 +++++
 arch/arm64/boot/dts/exynos/exynos9810.dtsi         | 273 +++++++++++
 drivers/pinctrl/samsung/pinctrl-exynos-arm64.c     | 154 +++++++
 drivers/pinctrl/samsung/pinctrl-samsung.c          |   2 +
 drivers/pinctrl/samsung/pinctrl-samsung.h          |   1 +
 drivers/soc/samsung/exynos-chipid.c                |   1 +
 14 files changed, 1065 insertions(+)
---
base-commit: f2493655d2d3d5c6958ed996b043c821c23ae8d3
change-id: 20241024-exynos9810-b3eed995b0b9
prerequisite-change-id: 20241026-mongoose-pmu-52240ed310cd:v1
prerequisite-patch-id: 41ddde9c262005eda3624e381b4a0892836187de
prerequisite-patch-id: d1b80350c60949f7f2671895518ad4b1ceb51e4a

Best regards,

Comments

Krzysztof Kozlowski Oct. 27, 2024, 7:55 p.m. UTC | #1
On Sat, 26 Oct 2024 23:32:38 +0300, Markuss Broks wrote:
> Exynos 9810 has the product ID of "0xE9810000". Add this ID to
> the IDs together with the name of the SoC.
> 
> 

Applied, thanks!

[07/10] soc: samsung: exynos-chipid: Add support for Exynos9810 SoC
        https://git.kernel.org/krzk/linux/c/fd0b3581666860610ac770d4b582df42e0065c58

Best regards,
Krzysztof Kozlowski Oct. 27, 2024, 7:59 p.m. UTC | #2
On Sat, 26 Oct 2024 23:32:36 +0300, Markuss Broks wrote:
> Add compatible for Samsung Exynos9810 PMU to the schema.
> Like on other devices, it contains various registers related
> to power management and other vital to SoC functions.
> 
> 

Applied, thanks!

[05/10] dt-bindings: soc: samsung: exynos-pmu: Add exynos9810 compatible
        https://git.kernel.org/krzk/linux/c/4c745ade9f2ba0e2ce273b75293d0e9b995dbd74

Best regards,
Krzysztof Kozlowski Oct. 27, 2024, 8 p.m. UTC | #3
On Sat, 26 Oct 2024 23:32:40 +0300, Markuss Broks wrote:
> Exynos 9810 is an ARMv8 mobile SoC found in various Samsung devices,
> such as Samsung Galaxy S9 (starlte), S9 Plus (star2lte),
> Note 9 (crownlte) and perhaps others.
> 
> Add minimal support for this SoC, including basic stuff like:
> - PSCI for bringing up secondary cores
> - ARMv8 generic timer
> - GPIO and pinctrl.
> 
> [...]

Applied, thanks!

[09/10] arm64: dts: exynos: Add Exynos9810 SoC support
        https://git.kernel.org/krzk/linux/c/6c1fe47df5a79f1efc2d5c73e506c8d34692527a

Best regards,
Krzysztof Kozlowski Oct. 27, 2024, 8:02 p.m. UTC | #4
On Sat, 26 Oct 2024 23:32:34 +0300, Markuss Broks wrote:
> Add a compatible for Samsung Exynos9810 pinctrl block to the schema.
> Exynos9810 has 9 total pin banks and it's similar to other Samsung
> SoC pinctrl blocks.
> 
> 

Applied, thanks!

[03/10] dt-bindings: pinctrl: samsung: Add compatible for Exynos9810 SoC
        https://git.kernel.org/pinctrl/samsung/c/47c3309d58b5e6fd3fc425253491c1ce014538c0

Best regards,
Krzysztof Kozlowski Oct. 28, 2024, 6:46 a.m. UTC | #5
On 27/10/2024 21:00, Krzysztof Kozlowski wrote:
> 
> On Sat, 26 Oct 2024 23:32:40 +0300, Markuss Broks wrote:
>> Exynos 9810 is an ARMv8 mobile SoC found in various Samsung devices,
>> such as Samsung Galaxy S9 (starlte), S9 Plus (star2lte),
>> Note 9 (crownlte) and perhaps others.
>>
>> Add minimal support for this SoC, including basic stuff like:
>> - PSCI for bringing up secondary cores
>> - ARMv8 generic timer
>> - GPIO and pinctrl.
>>
>> [...]
> 
> Applied, thanks!
> 
> [09/10] arm64: dts: exynos: Add Exynos9810 SoC support
>         https://git.kernel.org/krzk/linux/c/6c1fe47df5a79f1efc2d5c73e506c8d34692527a
> 

And dropped (also DTS): does not even build!

exynos9810-starlte.dts:72.9-10 syntax error

I should not have trusted this and blindly take the patches for next. Or
at least wait till my CI finishes building before calling it a day.

Best regards,
Krzysztof