* [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F)
@ 2024-10-25 11:24 Markuss Broks
2024-10-25 11:24 ` [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3 Markuss Broks
` (11 more replies)
0 siblings, 12 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
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 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 (12):
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
dt-bindings: arm: pmu: Add Samsung Mongoose core compatible
perf: arm_pmuv3: Add support for Samsung Mongoose PMU
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 +
Documentation/devicetree/bindings/arm/pmu.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 | 120 +++++
arch/arm64/boot/dts/exynos/exynos9810.dtsi | 273 +++++++++++
drivers/perf/arm_pmuv3.c | 3 +
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 +
16 files changed, 1070 insertions(+)
---
base-commit: f2493655d2d3d5c6958ed996b043c821c23ae8d3
change-id: 20241024-exynos9810-b3eed995b0b9
Best regards,
--
Markuss Broks <markuss.broks@gmail.com>
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 12:36 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 02/12] dt-bindings: hwinfo: samsung,exynos-chipid: Add Samsung exynos9810 compatible Markuss Broks
` (10 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add the compatible for Samsung Mongoose M3 CPU core to the schema.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Documentation/devicetree/bindings/arm/cpus.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/cpus.yaml b/Documentation/devicetree/bindings/arm/cpus.yaml
index c54d20dd9d7efcbbfe73e5a63fd2f61d1e010d29..2fa7d3513da839ddfb2844628b1249567226a025 100644
--- a/Documentation/devicetree/bindings/arm/cpus.yaml
+++ b/Documentation/devicetree/bindings/arm/cpus.yaml
@@ -207,6 +207,7 @@ properties:
- qcom,oryon
- qcom,scorpion
- samsung,mongoose-m2
+ - samsung,mongoose-m3
- samsung,mongoose-m5
enable-method:
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 02/12] dt-bindings: hwinfo: samsung,exynos-chipid: Add Samsung exynos9810 compatible
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
2024-10-25 11:24 ` [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3 Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 11:24 ` [PATCH v2 03/12] dt-bindings: pinctrl: samsung: Add compatible for Exynos9810 SoC Markuss Broks
` (9 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add the compatible for Samsung Exynos9810 chipid to schema.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml b/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml
index 47a8d98346ebb83a7ea4d11e2fc7fc87df6bc5ad..385aac7161a0db9334a92d78a57a125f23ca1920 100644
--- a/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml
+++ b/Documentation/devicetree/bindings/hwinfo/samsung,exynos-chipid.yaml
@@ -24,6 +24,7 @@ properties:
- enum:
- samsung,exynos7885-chipid
- samsung,exynos8895-chipid
+ - samsung,exynos9810-chipid
- samsung,exynos990-chipid
- samsung,exynosautov9-chipid
- samsung,exynosautov920-chipid
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 03/12] dt-bindings: pinctrl: samsung: Add compatible for Exynos9810 SoC
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
2024-10-25 11:24 ` [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3 Markuss Broks
2024-10-25 11:24 ` [PATCH v2 02/12] dt-bindings: hwinfo: samsung,exynos-chipid: Add Samsung exynos9810 compatible Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 11:24 ` [PATCH v2 04/12] dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint Markuss Broks
` (8 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add a compatible for Samsung Exynos9810 pinctrl block to the schema.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Documentation/devicetree/bindings/pinctrl/samsung,pinctrl.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl.yaml b/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl.yaml
index 7e6ef8249de6c2eeedfaab0ad6316af135c2ec31..5296a9e4faaec691994cd567bc3805f870aaebf8 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl.yaml
@@ -54,6 +54,7 @@ properties:
- samsung,exynos7885-pinctrl
- samsung,exynos850-pinctrl
- samsung,exynos8895-pinctrl
+ - samsung,exynos9810-pinctrl
- samsung,exynos990-pinctrl
- samsung,exynosautov9-pinctrl
- samsung,exynosautov920-pinctrl
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 04/12] dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (2 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 03/12] dt-bindings: pinctrl: samsung: Add compatible for Exynos9810 SoC Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 12:37 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 05/12] dt-bindings: soc: samsung: exynos-pmu: Add exynos9810 compatible Markuss Broks
` (7 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add the compatible for Samsung Exynos9810 pinctrl eint block to the schema.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
.../devicetree/bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml b/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml
index 565cacadb6be77b1be1a7423f88564dd950c44db..68ed714eb0a178c46228bac142d69bbd6baa6277 100644
--- a/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml
+++ b/Documentation/devicetree/bindings/pinctrl/samsung,pinctrl-wakeup-interrupt.yaml
@@ -47,6 +47,7 @@ properties:
- items:
- enum:
- google,gs101-wakeup-eint
+ - samsung,exynos9810-wakeup-eint
- samsung,exynos990-wakeup-eint
- samsung,exynosautov9-wakeup-eint
- const: samsung,exynos850-wakeup-eint
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 05/12] dt-bindings: soc: samsung: exynos-pmu: Add exynos9810 compatible
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (3 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 04/12] dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 11:24 ` [PATCH v2 06/12] dt-bindings: arm: samsung: Document Exynos9810 and starlte board binding Markuss Broks
` (6 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add compatible for Samsung Exynos9810 PMU to the schema.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
index 5c4ba6c65e6926467ff0e90142ad62fbd0b9e1e8..6cdfe7e059a3556dfb872818f1b2649ab6b0e8af 100644
--- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
@@ -54,6 +54,7 @@ properties:
- enum:
- samsung,exynos7885-pmu
- samsung,exynos8895-pmu
+ - samsung,exynos9810-pmu
- samsung,exynosautov9-pmu
- samsung,exynosautov920-pmu
- tesla,fsd-pmu
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 06/12] dt-bindings: arm: samsung: Document Exynos9810 and starlte board binding
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (4 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 05/12] dt-bindings: soc: samsung: exynos-pmu: Add exynos9810 compatible Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 11:24 ` [PATCH v2 07/12] dt-bindings: arm: pmu: Add Samsung Mongoose core compatible Markuss Broks
` (5 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add the compatibles for Exynos9810 SoC and samsung,starlte board to the
list of boards.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
index d25a17e697256f8d868e24bea47d21accd1184ed..b5ba5ffc36d687a6fdbc625e6d95c37a8a2e2b93 100644
--- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
+++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
@@ -230,6 +230,12 @@ properties:
- samsung,dreamlte # Samsung Galaxy S8 (SM-G950F)
- const: samsung,exynos8895
+ - description: Exynos9810 based boards
+ items:
+ - enum:
+ - samsung,starlte # Samsung Galaxy S9 (SM-G960F)
+ - const: samsung,exynos9810
+
- description: Exynos990 based boards
items:
- enum:
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 07/12] dt-bindings: arm: pmu: Add Samsung Mongoose core compatible
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (5 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 06/12] dt-bindings: arm: samsung: Document Exynos9810 and starlte board binding Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 11:24 ` [PATCH v2 08/12] perf: arm_pmuv3: Add support for Samsung Mongoose PMU Markuss Broks
` (4 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add the compatible for the Samsung Mongoose CPU PMU to the schema.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
Documentation/devicetree/bindings/arm/pmu.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/pmu.yaml b/Documentation/devicetree/bindings/arm/pmu.yaml
index 528544d0a1614c9f9bddaafa8dac4782d09ac7e9..a148ff54f2b8a92fa3fcfa78c1bcc525dba1c6dd 100644
--- a/Documentation/devicetree/bindings/arm/pmu.yaml
+++ b/Documentation/devicetree/bindings/arm/pmu.yaml
@@ -74,6 +74,7 @@ properties:
- qcom,krait-pmu
- qcom,scorpion-pmu
- qcom,scorpion-mp-pmu
+ - samsung,mongoose-pmu
interrupts:
# Don't know how many CPUs, so no constraints to specify
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 08/12] perf: arm_pmuv3: Add support for Samsung Mongoose PMU
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (6 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 07/12] dt-bindings: arm: pmu: Add Samsung Mongoose core compatible Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 12:40 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 09/12] soc: samsung: exynos-chipid: Add support for Exynos9810 SoC Markuss Broks
` (3 subsequent siblings)
11 siblings, 1 reply; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add support for the Samsung Mongoose CPU core PMU.
This just adds the names and links to DT compatible strings.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
drivers/perf/arm_pmuv3.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c
index 0afe02f879b45a8600b9cea1bfd88e6a68096a67..9eb5603e1dda18c4bdd2745304737932a27fde8a 100644
--- a/drivers/perf/arm_pmuv3.c
+++ b/drivers/perf/arm_pmuv3.c
@@ -1364,6 +1364,8 @@ PMUV3_INIT_SIMPLE(armv8_neoverse_v3ae)
PMUV3_INIT_SIMPLE(armv8_nvidia_carmel)
PMUV3_INIT_SIMPLE(armv8_nvidia_denver)
+PMUV3_INIT_SIMPLE(armv8_samsung_mongoose)
+
PMUV3_INIT_MAP_EVENT(armv8_cortex_a35, armv8_a53_map_event)
PMUV3_INIT_MAP_EVENT(armv8_cortex_a53, armv8_a53_map_event)
PMUV3_INIT_MAP_EVENT(armv8_cortex_a57, armv8_a57_map_event)
@@ -1409,6 +1411,7 @@ static const struct of_device_id armv8_pmu_of_device_ids[] = {
{.compatible = "brcm,vulcan-pmu", .data = armv8_brcm_vulcan_pmu_init},
{.compatible = "nvidia,carmel-pmu", .data = armv8_nvidia_carmel_pmu_init},
{.compatible = "nvidia,denver-pmu", .data = armv8_nvidia_denver_pmu_init},
+ {.compatible = "samsung,mongoose-pmu", .data = armv8_samsung_mongoose_pmu_init},
{},
};
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 09/12] soc: samsung: exynos-chipid: Add support for Exynos9810 SoC
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (7 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 08/12] perf: arm_pmuv3: Add support for Samsung Mongoose PMU Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 11:24 ` [PATCH v2 10/12] pinctrl: samsung: Add Exynos9810 SoC specific data Markuss Broks
` (2 subsequent siblings)
11 siblings, 0 replies; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Exynos 9810 has the product ID of "0xE9810000". Add this ID to
the IDs together with the name of the SoC.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
drivers/soc/samsung/exynos-chipid.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/soc/samsung/exynos-chipid.c b/drivers/soc/samsung/exynos-chipid.c
index 94c7cc0d11e4c6f151336dc6e25495a31cbec02d..23cc20896b85a2da02f36703225a4f62e7538a62 100644
--- a/drivers/soc/samsung/exynos-chipid.c
+++ b/drivers/soc/samsung/exynos-chipid.c
@@ -59,6 +59,7 @@ static const struct exynos_soc_id {
{ "EXYNOS7885", 0xE7885000 },
{ "EXYNOS850", 0xE3830000 },
{ "EXYNOS8895", 0xE8895000 },
+ { "EXYNOS9810", 0xE9810000 },
{ "EXYNOS990", 0xE9830000 },
{ "EXYNOSAUTOV9", 0xAAA80000 },
{ "EXYNOSAUTOV920", 0x0A920000 },
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 10/12] pinctrl: samsung: Add Exynos9810 SoC specific data
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (8 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 09/12] soc: samsung: exynos-chipid: Add support for Exynos9810 SoC Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 12:45 ` Ivaylo Ivanov
2024-10-25 11:24 ` [PATCH v2 11/12] arm64: dts: exynos: Add Exynos9810 SoC support Markuss Broks
2024-10-25 11:24 ` [PATCH v2 12/12] arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F) Markuss Broks
11 siblings, 1 reply; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Add Samsung Exynos9810 SoC specific data to enable pinctrl
support for platforms based on Exynos9810.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
drivers/pinctrl/samsung/pinctrl-exynos-arm64.c | 154 +++++++++++++++++++++++++
drivers/pinctrl/samsung/pinctrl-samsung.c | 2 +
drivers/pinctrl/samsung/pinctrl-samsung.h | 1 +
3 files changed, 157 insertions(+)
diff --git a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
index f07c26d374425505019447161150929f7677f91d..3ea7106ce5eae3c21f11790b5a40037042c1d407 100644
--- a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
+++ b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
@@ -767,6 +767,160 @@ const struct samsung_pinctrl_of_match_data exynos990_of_data __initconst = {
.num_ctrl = ARRAY_SIZE(exynos990_pin_ctrl),
};
+/* pin banks of exynos9810 pin-controller 0 (ALIVE) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks0[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTN(6, 0x000, "etc1"),
+ EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa0", 0x00),
+ EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa1", 0x04),
+ EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa2", 0x08),
+ EXYNOS850_PIN_BANK_EINTW(8, 0x080, "gpa3", 0x0c),
+ EXYNOS850_PIN_BANK_EINTN(6, 0x0A0, "gpq0"),
+ EXYNOS850_PIN_BANK_EINTW(2, 0x0C0, "gpa4", 0x10),
+};
+
+/* pin banks of exynos9810 pin-controller 1 (AUD) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks1[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpb1", 0x04),
+ EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpb2", 0x08),
+};
+
+/* pin banks of exynos9810 pin-controller 2 (CHUB) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks2[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gph0", 0x00),
+ EXYNOS850_PIN_BANK_EINTG(5, 0x020, "gph1", 0x04),
+};
+
+/* pin banks of exynos9810 pin-controller 3 (CMGP) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks3[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTW(1, 0x000, "gpm0", 0x00),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x020, "gpm1", 0x04),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x040, "gpm2", 0x08),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x060, "gpm3", 0x0C),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x10),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x0A0, "gpm5", 0x14),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x0C0, "gpm6", 0x18),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x0E0, "gpm7", 0x1C),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x100, "gpm10", 0x20),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x120, "gpm11", 0x24),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x140, "gpm12", 0x28),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x160, "gpm13", 0x2C),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x180, "gpm14", 0x30),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x1A0, "gpm15", 0x34),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x1C0, "gpm16", 0x38),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x1E0, "gpm17", 0x3C),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x200, "gpm40", 0x40),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x220, "gpm41", 0x44),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x240, "gpm42", 0x48),
+ EXYNOS850_PIN_BANK_EINTW(1, 0x260, "gpm43", 0x4C),
+};
+
+/* pin banks of exynos9810 pin-controller 4 (FSYS0) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks4[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpf0", 0x00),
+};
+
+/* pin banks of exynos9810 pin-controller 5 (FSYS1) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks5[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(7, 0x000, "gpf1", 0x00),
+ EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf2", 0x04),
+};
+
+/* pin banks of exynos9810 pin-controller 6 (PERIC0) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks6[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
+ EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp3", 0x0C),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg0", 0x10),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x0A0, "gpg1", 0x14),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x0C0, "gpg2", 0x18),
+};
+
+/* pin banks of exynos9810 pin-controller 7 (PERIC1) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks7[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp4", 0x00),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp5", 0x04),
+ EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp6", 0x08),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpc0", 0x0C),
+ EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpc1", 0x10),
+ EXYNOS850_PIN_BANK_EINTG(4, 0x0A0, "gpd0", 0x14),
+ EXYNOS850_PIN_BANK_EINTG(7, 0x0C0, "gpg3", 0x18),
+};
+
+/* pin banks of exynos9810 pin-controller 8 (VTS) */
+static const struct samsung_pin_bank_data exynos9810_pin_banks8[] __initconst = {
+ EXYNOS850_PIN_BANK_EINTG(3, 0x000, "gpt0", 0x00),
+};
+
+static const struct samsung_pin_ctrl exynos9810_pin_ctrl[] __initconst = {
+ {
+ /* pin-controller instance 0 ALIVE data */
+ .pin_banks = exynos9810_pin_banks0,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks0),
+ .eint_wkup_init = exynos_eint_wkup_init,
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 1 AUD data */
+ .pin_banks = exynos9810_pin_banks1,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks1),
+ }, {
+ /* pin-controller instance 2 CHUB data */
+ .pin_banks = exynos9810_pin_banks2,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks2),
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 3 CMGP data */
+ .pin_banks = exynos9810_pin_banks3,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks3),
+ .eint_wkup_init = exynos_eint_wkup_init,
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 4 FSYS0 data */
+ .pin_banks = exynos9810_pin_banks4,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks4),
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 5 FSYS1 data */
+ .pin_banks = exynos9810_pin_banks5,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks5),
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 6 PERIC0 data */
+ .pin_banks = exynos9810_pin_banks6,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks6),
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 7 PERIC1 data */
+ .pin_banks = exynos9810_pin_banks7,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks7),
+ .eint_gpio_init = exynos_eint_gpio_init,
+ .suspend = exynos_pinctrl_suspend,
+ .resume = exynos_pinctrl_resume,
+ }, {
+ /* pin-controller instance 8 VTS data */
+ .pin_banks = exynos9810_pin_banks8,
+ .nr_banks = ARRAY_SIZE(exynos9810_pin_banks8),
+ },
+};
+
+const struct samsung_pinctrl_of_match_data exynos9810_of_data __initconst = {
+ .ctrl = exynos9810_pin_ctrl,
+ .num_ctrl = ARRAY_SIZE(exynos9810_pin_ctrl),
+};
+
/* pin banks of exynosautov9 pin-controller 0 (ALIVE) */
static const struct samsung_pin_bank_data exynosautov9_pin_banks0[] __initconst = {
EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
index 42e40860841bcc94e3c11bf313df792da10ab00b..bbedd980ec67234aad847b757f40af5002b11ebb 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.c
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
@@ -1479,6 +1479,8 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
.data = &exynos850_of_data },
{ .compatible = "samsung,exynos8895-pinctrl",
.data = &exynos8895_of_data },
+ { .compatible = "samsung,exynos9810-pinctrl",
+ .data = &exynos9810_of_data },
{ .compatible = "samsung,exynos990-pinctrl",
.data = &exynos990_of_data },
{ .compatible = "samsung,exynosautov9-pinctrl",
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.h b/drivers/pinctrl/samsung/pinctrl-samsung.h
index 615048f945243d4173d40142f1e62c8aeefe5b7e..bb0689d52ea0b4392714fa9bcdcbae8d253c73a1 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.h
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.h
@@ -385,6 +385,7 @@ extern const struct samsung_pinctrl_of_match_data exynos7_of_data;
extern const struct samsung_pinctrl_of_match_data exynos7885_of_data;
extern const struct samsung_pinctrl_of_match_data exynos850_of_data;
extern const struct samsung_pinctrl_of_match_data exynos8895_of_data;
+extern const struct samsung_pinctrl_of_match_data exynos9810_of_data;
extern const struct samsung_pinctrl_of_match_data exynos990_of_data;
extern const struct samsung_pinctrl_of_match_data exynosautov9_of_data;
extern const struct samsung_pinctrl_of_match_data exynosautov920_of_data;
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 11/12] arm64: dts: exynos: Add Exynos9810 SoC support
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (9 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 10/12] pinctrl: samsung: Add Exynos9810 SoC specific data Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 12:43 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 12/12] arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F) Markuss Broks
11 siblings, 1 reply; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
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.
The firmware coming with the devices based on this SoC is buggy
and doesn't configure CNTFRQ_EL0, as required by spec, so it's
needed to hardcode the frequency in the timer node.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
arch/arm64/boot/dts/exynos/exynos9810-pinctrl.dtsi | 503 +++++++++++++++++++++
arch/arm64/boot/dts/exynos/exynos9810.dtsi | 273 +++++++++++
2 files changed, 776 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/exynos9810-pinctrl.dtsi b/arch/arm64/boot/dts/exynos/exynos9810-pinctrl.dtsi
new file mode 100644
index 0000000000000000000000000000000000000000..88091bf09e4e91b05801cafe956283984d564449
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos9810-pinctrl.dtsi
@@ -0,0 +1,503 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung's Exynos 9810 SoC pin-mux and pin-config device tree source
+ *
+ * Copyright (c) 2024 Markuss Broks <markuss.broks@gmail.com>
+ * Copyright (c) 2024 Maksym Holovach <nergzd@nergzd723.xyz>
+ */
+
+#include "exynos-pinctrl.h"
+
+&pinctrl_alive {
+ etc1: etc1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpa0: gpa0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+ #interrupt-cells = <2>;
+ };
+
+ gpa1: gpa1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
+ #interrupt-cells = <2>;
+ };
+
+ gpa2: gpa2-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+ #interrupt-cells = <2>;
+ };
+
+ gpa3: gpa3-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ interrupt-parent = <&gic>;
+ interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
+ #interrupt-cells = <2>;
+ };
+
+ gpa4: gpa4-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpq0: gpq0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_aud {
+ gpb0: gpb0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpb1: gpb1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpb2: gpb2-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_chub {
+ gph0: gph0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gph1: gph1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_cmgp {
+ gpm0: gpm0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm1: gpm1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm2: gpm2-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm3: gpm3-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm4: gpm4-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm5: gpm5-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm6: gpm6-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm7: gpm7-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm10: gpm10-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm11: gpm11-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm12: gpm12-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm13: gpm13-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm14: gpm14-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm15: gpm15-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm16: gpm16-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm17: gpm17-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm40: gpm40-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm41: gpm41-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm42: gpm42-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ gpm43: gpm43-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+ };
+};
+
+&pinctrl_fsys0 {
+ gpf0: gpf0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_fsys1 {
+ gpf1: gpf1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpf2: gpf2-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_peric0 {
+ gpg0: gpg0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpg1: gpg1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpg2: gpg2-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp0: gpp0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp1: gpp1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp2: gpp2-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp3: gpp3-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_peric1 {
+ gpc0: gpc0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpc1: gpc1-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpd0: gpd0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpg3: gpg3-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp4: gpp4-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp5: gpp5-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+
+ gpp6: gpp6-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
+
+&pinctrl_vts {
+ gpt0: gpt0-gpio-bank {
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
+};
diff --git a/arch/arm64/boot/dts/exynos/exynos9810.dtsi b/arch/arm64/boot/dts/exynos/exynos9810.dtsi
new file mode 100644
index 0000000000000000000000000000000000000000..a65c3dea4e3384faee9434799354d9485a60cea6
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos9810.dtsi
@@ -0,0 +1,273 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung Exynos 9810 SoC device tree source
+ *
+ * Copyright (c) 2024 Markuss Broks <markuss.broks@gmail.com>
+ * Copyright (c) 2024 Maksym Holovach <nergzd@nergzd723.xyz>
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ compatible = "samsung,exynos9810";
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ interrupt-parent = <&gic>;
+
+ aliases {
+ pinctrl0 = &pinctrl_alive;
+ pinctrl1 = &pinctrl_aud;
+ pinctrl2 = &pinctrl_chub;
+ pinctrl3 = &pinctrl_cmgp;
+ pinctrl4 = &pinctrl_fsys0;
+ pinctrl5 = &pinctrl_fsys1;
+ pinctrl6 = &pinctrl_peric0;
+ pinctrl7 = &pinctrl_peric1;
+ pinctrl8 = &pinctrl_vts;
+ };
+
+ arm-a55-pmu {
+ compatible = "arm,cortex-a55-pmu";
+ interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-affinity = <&cpu0>,
+ <&cpu1>,
+ <&cpu2>,
+ <&cpu3>;
+ };
+
+ mongoose-m3-pmu {
+ compatible = "samsung,mongoose-pmu";
+ interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 170 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-affinity = <&cpu4>,
+ <&cpu5>,
+ <&cpu6>,
+ <&cpu7>;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu0>;
+ };
+ core1 {
+ cpu = <&cpu1>;
+ };
+ core2 {
+ cpu = <&cpu2>;
+ };
+ core3 {
+ cpu = <&cpu3>;
+ };
+ };
+
+ cluster1 {
+ core0 {
+ cpu = <&cpu4>;
+ };
+ core1 {
+ cpu = <&cpu5>;
+ };
+ core2 {
+ cpu = <&cpu6>;
+ };
+ core3 {
+ cpu = <&cpu7>;
+ };
+ };
+ };
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x0>;
+ enable-method = "psci";
+ };
+
+ cpu1: cpu@1 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x1>;
+ enable-method = "psci";
+ };
+
+ cpu2: cpu@2 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x2>;
+ enable-method = "psci";
+ };
+
+ cpu3: cpu@3 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x3>;
+ enable-method = "psci";
+ };
+
+ cpu4: cpu@100 {
+ device_type = "cpu";
+ compatible = "samsung,mongoose-m3";
+ reg = <0x100>;
+ enable-method = "psci";
+ };
+
+ cpu5: cpu@101 {
+ device_type = "cpu";
+ compatible = "samsung,mongoose-m3";
+ reg = <0x101>;
+ enable-method = "psci";
+ };
+
+ cpu6: cpu@102 {
+ device_type = "cpu";
+ compatible = "samsung,mongoose-m3";
+ reg = <0x102>;
+ enable-method = "psci";
+ };
+
+ cpu7: cpu@103 {
+ device_type = "cpu";
+ compatible = "samsung,mongoose-m3";
+ reg = <0x103>;
+ enable-method = "psci";
+ };
+ };
+
+ oscclk: osc-clock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-output-names = "oscclk";
+ };
+
+ psci {
+ compatible = "arm,psci";
+ method = "smc";
+ cpu_off = <0x84000002>;
+ cpu_on = <0xc4000003>;
+ cpu_suspend = <0xc4000001>;
+ };
+
+ soc: soc@0 {
+ compatible = "simple-bus";
+ ranges = <0x0 0x0 0x0 0x20000000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ chipid@10000000 {
+ compatible = "samsung,exynos9810-chipid",
+ "samsung,exynos850-chipid";
+ reg = <0x10000000 0x100>;
+ };
+
+ gic: interrupt-controller@10101000 {
+ compatible = "arm,gic-400";
+ reg = <0x10101000 0x1000>,
+ <0x10102000 0x1000>,
+ <0x10104000 0x2000>,
+ <0x10106000 0x2000>;
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) |
+ IRQ_TYPE_LEVEL_HIGH)>;
+ #address-cells = <0>;
+ #size-cells = <1>;
+ };
+
+ pinctrl_peric0: pinctrl@10430000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x10430000 0x1000>;
+ interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ pinctrl_peric1: pinctrl@10830000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x10830000 0x1000>;
+ interrupts = <GIC_SPI 421 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ pinctrl_fsys0: pinctrl@11050000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x11050000 0x1000>;
+ interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ pinctrl_fsys1: pinctrl@11430000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x11430000 0x1000>;
+ interrupts = <GIC_SPI 250 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ pinctrl_vts: pinctrl@13880000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x13880000 0x1000>;
+ };
+
+ pinctrl_chub: pinctrl@13a80000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x13a80000 0x1000>;
+ interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ pinctrl_alive: pinctrl@14050000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x14050000 0x1000>;
+
+ wakeup-interrupt-controller {
+ compatible = "samsung,exynos9810-wakeup-eint",
+ "samsung,exynos850-wakeup-eint",
+ "samsung,exynos7-wakeup-eint";
+ };
+ };
+
+ pmu_system_controller: system-controller@14060000 {
+ compatible = "samsung,exynos9810-pmu",
+ "samsung,exynos7-pmu", "syscon";
+ reg = <0x14060000 0x10000>;
+ };
+
+ pinctrl_cmgp: pinctrl@14220000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x14220000 0x1000>;
+
+ wakeup-interrupt-controller {
+ compatible = "samsung,exynos9810-wakeup-eint",
+ "samsung,exynos850-wakeup-eint",
+ "samsung,exynos7-wakeup-eint";
+ };
+ };
+
+ pinctrl_aud: pinctrl@17c60000 {
+ compatible = "samsung,exynos9810-pinctrl";
+ reg = <0x17c60000 0x1000>;
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ /* Hypervisor Virtual Timer interrupt is not wired to GIC */
+ interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
+ <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+ /*
+ * Non-updatable, broken stock Samsung bootloader does not
+ * configure CNTFRQ_EL0
+ */
+ clock-frequency = <26000000>;
+ };
+};
+
+#include "exynos9810-pinctrl.dtsi"
+#include "arm/samsung/exynos-syscon-restart.dtsi"
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH v2 12/12] arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F)
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
` (10 preceding siblings ...)
2024-10-25 11:24 ` [PATCH v2 11/12] arm64: dts: exynos: Add Exynos9810 SoC support Markuss Broks
@ 2024-10-25 11:24 ` Markuss Broks
2024-10-25 12:05 ` Ivaylo Ivanov
11 siblings, 1 reply; 19+ messages in thread
From: Markuss Broks @ 2024-10-25 11:24 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Lorenzo Pieralisi,
Alim Akhtar, Sylwester Nawrocki, Linus Walleij, Tomasz Figa,
Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Ivaylo Ivanov, Markuss Broks,
Maksym Holovach
Samsung Galaxy S9 (SM-G960F), codenamed starlte, is a mobile phone
released in 2017. It has 4GB of RAM, 64GB of UFS storage, Exynos9810
SoC and 1440x2960 Super AMOLED display.
This initial device tree enables the framebuffer pre-initialised
by bootloader and physical buttons of the device, with more support
to come in the future.
Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
---
arch/arm64/boot/dts/exynos/Makefile | 1 +
arch/arm64/boot/dts/exynos/exynos9810-starlte.dts | 120 ++++++++++++++++++++++
2 files changed, 121 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/Makefile b/arch/arm64/boot/dts/exynos/Makefile
index 7a934499b235892eef38cd926905e02f0ce08278..6760b3d59e819fb52bc8cf4dc6877a0b9db9ce47 100644
--- a/arch/arm64/boot/dts/exynos/Makefile
+++ b/arch/arm64/boot/dts/exynos/Makefile
@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_EXYNOS) += \
exynos7885-jackpotlte.dtb \
exynos850-e850-96.dtb \
exynos8895-dreamlte.dtb \
+ exynos9810-starlte.dtb \
exynos990-c1s.dtb \
exynosautov9-sadk.dtb \
exynosautov920-sadk.dtb
diff --git a/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts
new file mode 100644
index 0000000000000000000000000000000000000000..7e01118e591284267f155883c236ed811d5c629a
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts
@@ -0,0 +1,120 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/*
+ * Samsung Galaxy S9 (starlte/SM-G960F) device tree source
+ *
+ * Copyright (c) 2024 Markuss Broks <markuss.broks@gmail.com>
+ * Copyright (c) 2024 Maksym Holovach <nergzd@nergzd723.xyz>
+ */
+
+/dts-v1/;
+#include "exynos9810.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Samsung Galaxy S9 (SM-G960F)";
+ compatible = "samsung,starlte", "samsung,exynos9810";
+ chassis-type = "handset";
+
+ chosen {
+ #address-cells = <2>;
+ #size-cells = <1>;
+ ranges;
+
+ framebuffer@cc000000 {
+ compatible = "simple-framebuffer";
+ reg = <0x0 0xcc000000 (1440 * 2960 * 4)>;
+ width = <1440>;
+ height = <2960>;
+ stride = <(1440 * 4)>;
+ format = "a8r8g8b8";
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+
+ pinctrl-0 = <&key_power &key_voldown &key_volup &key_wink>;
+ pinctrl-names = "default";
+
+ power-key {
+ label = "Power";
+ linux,code = <KEY_POWER>;
+ gpios = <&gpa2 4 GPIO_ACTIVE_LOW>;
+ wakeup-source;
+ };
+
+ voldown-key {
+ label = "Volume Down";
+ linux,code = <KEY_VOLUMEDOWN>;
+ gpios = <&gpa0 4 GPIO_ACTIVE_LOW>;
+ };
+
+ volup-key {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&gpa0 3 GPIO_ACTIVE_LOW>;
+ };
+
+ /* In stock firmware used for assistant. Map it as a camera button for now */
+ wink-key {
+ label = "Camera";
+ linux,code = <KEY_CAMERA>;
+ gpios = <&gpa0 6 GPIO_ACTIVE_LOW>;
+ };
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x0 0x80000000 0x3c800000>,
+ <0x8 0x80000000 0x80000000>,
+ <0x0 0xc0000000 0x20000000>,
+ <0x0 0xe1900000 0x1e700000>;
+ };
+
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <1>;
+ ranges;
+
+ framebuffer@cc000000 {
+ reg = <0x0 0xcc000000 (1440 * 2960 * 4)>;
+ no-map;
+ };
+ };
+};
+
+&oscclk {
+ clock-frequency = <26000000>;
+};
+
+&pinctrl_alive {
+ key_power: key-power-pins {
+ samsung,pins = "gpa2-4";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+ samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+ };
+
+ key_voldown: key-voldown-pins {
+ samsung,pins = "gpa0-4";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+ samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+ };
+
+ key_volup: key-volup-pins {
+ samsung,pins = "gpa0-3";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+ samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+ };
+
+
+ key_wink: key-wink-pins {
+ samsung,pins = "gpa0-6";
+ samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
+ samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
+ samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
+ };
+};
--
2.46.2
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH v2 12/12] arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F)
2024-10-25 11:24 ` [PATCH v2 12/12] arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F) Markuss Broks
@ 2024-10-25 12:05 ` Ivaylo Ivanov
0 siblings, 0 replies; 19+ messages in thread
From: Ivaylo Ivanov @ 2024-10-25 12:05 UTC (permalink / raw)
To: Markuss Broks, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Lorenzo Pieralisi, Alim Akhtar, Sylwester Nawrocki, Linus Walleij,
Tomasz Figa, Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Maksym Holovach
On 10/25/24 14:24, Markuss Broks wrote:
> Samsung Galaxy S9 (SM-G960F), codenamed starlte, is a mobile phone
> released in 2017. It has 4GB of RAM, 64GB of UFS storage, Exynos9810
> SoC and 1440x2960 Super AMOLED display.
>
> This initial device tree enables the framebuffer pre-initialised
> by bootloader and physical buttons of the device, with more support
> to come in the future.
>
> Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
> Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
>
> Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
> ---
> arch/arm64/boot/dts/exynos/Makefile | 1 +
> arch/arm64/boot/dts/exynos/exynos9810-starlte.dts | 120 ++++++++++++++++++++++
> 2 files changed, 121 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/exynos/Makefile b/arch/arm64/boot/dts/exynos/Makefile
> index 7a934499b235892eef38cd926905e02f0ce08278..6760b3d59e819fb52bc8cf4dc6877a0b9db9ce47 100644
> --- a/arch/arm64/boot/dts/exynos/Makefile
> +++ b/arch/arm64/boot/dts/exynos/Makefile
> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_EXYNOS) += \
> exynos7885-jackpotlte.dtb \
> exynos850-e850-96.dtb \
> exynos8895-dreamlte.dtb \
> + exynos9810-starlte.dtb \
> exynos990-c1s.dtb \
> exynosautov9-sadk.dtb \
> exynosautov920-sadk.dtb
> diff --git a/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts
> new file mode 100644
> index 0000000000000000000000000000000000000000..7e01118e591284267f155883c236ed811d5c629a
> --- /dev/null
> +++ b/arch/arm64/boot/dts/exynos/exynos9810-starlte.dts
> @@ -0,0 +1,120 @@
> +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
> +/*
> + * Samsung Galaxy S9 (starlte/SM-G960F) device tree source
> + *
> + * Copyright (c) 2024 Markuss Broks <markuss.broks@gmail.com>
> + * Copyright (c) 2024 Maksym Holovach <nergzd@nergzd723.xyz>
> + */
> +
> +/dts-v1/;
> +#include "exynos9810.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> + model = "Samsung Galaxy S9 (SM-G960F)";
> + compatible = "samsung,starlte", "samsung,exynos9810";
> + chassis-type = "handset";
> +
> + chosen {
> + #address-cells = <2>;
> + #size-cells = <1>;
> + ranges;
> +
> + framebuffer@cc000000 {
> + compatible = "simple-framebuffer";
> + reg = <0x0 0xcc000000 (1440 * 2960 * 4)>;
> + width = <1440>;
> + height = <2960>;
> + stride = <(1440 * 4)>;
> + format = "a8r8g8b8";
> + };
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> +
> + pinctrl-0 = <&key_power &key_voldown &key_volup &key_wink>;
> + pinctrl-names = "default";
> +
> + power-key {
> + label = "Power";
> + linux,code = <KEY_POWER>;
> + gpios = <&gpa2 4 GPIO_ACTIVE_LOW>;
> + wakeup-source;
> + };
> +
> + voldown-key {
> + label = "Volume Down";
> + linux,code = <KEY_VOLUMEDOWN>;
> + gpios = <&gpa0 4 GPIO_ACTIVE_LOW>;
> + };
> +
> + volup-key {
> + label = "Volume Up";
> + linux,code = <KEY_VOLUMEUP>;
> + gpios = <&gpa0 3 GPIO_ACTIVE_LOW>;
> + };
> +
> + /* In stock firmware used for assistant. Map it as a camera button for now */
> + wink-key {
> + label = "Camera";
> + linux,code = <KEY_CAMERA>;
> + gpios = <&gpa0 6 GPIO_ACTIVE_LOW>;
> + };
> + };
> +
> + memory@80000000 {
> + device_type = "memory";
> + reg = <0x0 0x80000000 0x3c800000>,
> + <0x8 0x80000000 0x80000000>,
Sort these.
> + <0x0 0xc0000000 0x20000000>,
> + <0x0 0xe1900000 0x1e700000>;
> + };
> +
> + reserved-memory {
> + #address-cells = <2>;
> + #size-cells = <1>;
> + ranges;
> +
> + framebuffer@cc000000 {
> + reg = <0x0 0xcc000000 (1440 * 2960 * 4)>;
> + no-map;
> + };
> + };
> +};
> +
> +&oscclk {
> + clock-frequency = <26000000>;
> +};
> +
> +&pinctrl_alive {
> + key_power: key-power-pins {
> + samsung,pins = "gpa2-4";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +
> + key_voldown: key-voldown-pins {
> + samsung,pins = "gpa0-4";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +
> + key_volup: key-volup-pins {
> + samsung,pins = "gpa0-3";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +
Drop empty \n.
Otherwise looks OK to me.
Best regards, Ivo
> +
> + key_wink: key-wink-pins {
> + samsung,pins = "gpa0-6";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_EINT>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +};
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3
2024-10-25 11:24 ` [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3 Markuss Broks
@ 2024-10-25 12:36 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-25 12:36 UTC (permalink / raw)
To: Markuss Broks, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Lorenzo Pieralisi, Alim Akhtar, Sylwester Nawrocki, Linus Walleij,
Tomasz Figa, Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-samsung-soc,
linux-gpio, Ivaylo Ivanov, Maksym Holovach
On 25/10/2024 13:24, Markuss Broks wrote:
> Add the compatible for Samsung Mongoose M3 CPU core to the schema.
>
> Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
> Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
>
> Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
There is never a blank line between tags. Use git log to see how people
were doing it, if you ever have questions.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 04/12] dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint
2024-10-25 11:24 ` [PATCH v2 04/12] dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint Markuss Broks
@ 2024-10-25 12:37 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-25 12:37 UTC (permalink / raw)
To: Markuss Broks, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Lorenzo Pieralisi, Alim Akhtar, Sylwester Nawrocki, Linus Walleij,
Tomasz Figa, Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-samsung-soc,
linux-gpio, Ivaylo Ivanov, Maksym Holovach
On 25/10/2024 13:24, Markuss Broks wrote:
> Add the compatible for Samsung Exynos9810 pinctrl eint block to the schema.
All your commit msgs state obvious: duplicate subject and contents of
the patch. We see this, it's not helpful. Instead rather explain the
hardware and differences, e.g. no interrupts here?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 08/12] perf: arm_pmuv3: Add support for Samsung Mongoose PMU
2024-10-25 11:24 ` [PATCH v2 08/12] perf: arm_pmuv3: Add support for Samsung Mongoose PMU Markuss Broks
@ 2024-10-25 12:40 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-25 12:40 UTC (permalink / raw)
To: Markuss Broks, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Lorenzo Pieralisi, Alim Akhtar, Sylwester Nawrocki, Linus Walleij,
Tomasz Figa, Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-samsung-soc,
linux-gpio, Ivaylo Ivanov, Maksym Holovach
On 25/10/2024 13:24, Markuss Broks wrote:
> Add support for the Samsung Mongoose CPU core PMU.
>
> This just adds the names and links to DT compatible strings.
>
> Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
> Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
>
> Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
> ---
> drivers/perf/arm_pmuv3.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/perf/arm_pmuv3.c b/drivers/perf/arm_pmuv3.c
> index 0afe02f879b45a8600b9cea1bfd88e6a68096a67..9eb5603e1dda18c4bdd2745304737932a27fde8a 100644
> --- a/drivers/perf/arm_pmuv3.c
> +++ b/drivers/perf/arm_pmuv3.c
I believe perf patches are going through perf tree, so please split
them. Only patches for Samsung SoC and clocks should be included here.
Samsung pinctrl can stay, although it's also separate tree.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 11/12] arm64: dts: exynos: Add Exynos9810 SoC support
2024-10-25 11:24 ` [PATCH v2 11/12] arm64: dts: exynos: Add Exynos9810 SoC support Markuss Broks
@ 2024-10-25 12:43 ` Krzysztof Kozlowski
0 siblings, 0 replies; 19+ messages in thread
From: Krzysztof Kozlowski @ 2024-10-25 12:43 UTC (permalink / raw)
To: Markuss Broks, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Lorenzo Pieralisi, Alim Akhtar, Sylwester Nawrocki, Linus Walleij,
Tomasz Figa, Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, linux-arm-kernel, linux-samsung-soc,
linux-gpio, Ivaylo Ivanov, Maksym Holovach
On 25/10/2024 13:24, 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.
...
> +
> + pinctrl_alive: pinctrl@14050000 {
> + compatible = "samsung,exynos9810-pinctrl";
> + reg = <0x14050000 0x1000>;
> +
> + wakeup-interrupt-controller {
> + compatible = "samsung,exynos9810-wakeup-eint",
> + "samsung,exynos850-wakeup-eint",
> + "samsung,exynos7-wakeup-eint";
Since I expect new version to fix the tags/SoB, please also align above
with opening ".
> + };
> + };
> +
> + pmu_system_controller: system-controller@14060000 {
> + compatible = "samsung,exynos9810-pmu",
> + "samsung,exynos7-pmu", "syscon";
> + reg = <0x14060000 0x10000>;
> + };
> +
> + pinctrl_cmgp: pinctrl@14220000 {
> + compatible = "samsung,exynos9810-pinctrl";
> + reg = <0x14220000 0x1000>;
> +
> + wakeup-interrupt-controller {
> + compatible = "samsung,exynos9810-wakeup-eint",
> + "samsung,exynos850-wakeup-eint",
> + "samsung,exynos7-wakeup-eint";
Ditto here
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 10/12] pinctrl: samsung: Add Exynos9810 SoC specific data
2024-10-25 11:24 ` [PATCH v2 10/12] pinctrl: samsung: Add Exynos9810 SoC specific data Markuss Broks
@ 2024-10-25 12:45 ` Ivaylo Ivanov
0 siblings, 0 replies; 19+ messages in thread
From: Ivaylo Ivanov @ 2024-10-25 12:45 UTC (permalink / raw)
To: Markuss Broks, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Lorenzo Pieralisi, Alim Akhtar, Sylwester Nawrocki, Linus Walleij,
Tomasz Figa, Will Deacon, Mark Rutland
Cc: devicetree, linux-kernel, Krzysztof Kozlowski, linux-arm-kernel,
linux-samsung-soc, linux-gpio, Maksym Holovach
On 10/25/24 14:24, Markuss Broks wrote:
> Add Samsung Exynos9810 SoC specific data to enable pinctrl
> support for platforms based on Exynos9810.
>
> Co-developed-by: Maksym Holovach <nergzd@nergzd723.xyz>
> Signed-off-by: Maksym Holovach <nergzd@nergzd723.xyz>
>
> Signed-off-by: Markuss Broks <markuss.broks@gmail.com>
> ---
> drivers/pinctrl/samsung/pinctrl-exynos-arm64.c | 154 +++++++++++++++++++++++++
> drivers/pinctrl/samsung/pinctrl-samsung.c | 2 +
> drivers/pinctrl/samsung/pinctrl-samsung.h | 1 +
> 3 files changed, 157 insertions(+)
>
> diff --git a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
> index f07c26d374425505019447161150929f7677f91d..3ea7106ce5eae3c21f11790b5a40037042c1d407 100644
> --- a/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
> +++ b/drivers/pinctrl/samsung/pinctrl-exynos-arm64.c
> @@ -767,6 +767,160 @@ const struct samsung_pinctrl_of_match_data exynos990_of_data __initconst = {
> .num_ctrl = ARRAY_SIZE(exynos990_pin_ctrl),
> };
>
> +/* pin banks of exynos9810 pin-controller 0 (ALIVE) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks0[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTN(6, 0x000, "etc1"),
> + EXYNOS850_PIN_BANK_EINTW(8, 0x020, "gpa0", 0x00),
> + EXYNOS850_PIN_BANK_EINTW(8, 0x040, "gpa1", 0x04),
> + EXYNOS850_PIN_BANK_EINTW(8, 0x060, "gpa2", 0x08),
> + EXYNOS850_PIN_BANK_EINTW(8, 0x080, "gpa3", 0x0c),
> + EXYNOS850_PIN_BANK_EINTN(6, 0x0A0, "gpq0"),
> + EXYNOS850_PIN_BANK_EINTW(2, 0x0C0, "gpa4", 0x10),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 1 (AUD) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks1[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(5, 0x000, "gpb0", 0x00),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpb1", 0x04),
> + EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpb2", 0x08),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 2 (CHUB) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks2[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gph0", 0x00),
> + EXYNOS850_PIN_BANK_EINTG(5, 0x020, "gph1", 0x04),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 3 (CMGP) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks3[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTW(1, 0x000, "gpm0", 0x00),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x020, "gpm1", 0x04),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x040, "gpm2", 0x08),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x060, "gpm3", 0x0C),
Small nit - for the next version, stay consistent with the lowercase
letters in hex numbers - for ex.: 0x0c
Best regards, Ivo
> + EXYNOS850_PIN_BANK_EINTW(1, 0x080, "gpm4", 0x10),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x0A0, "gpm5", 0x14),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x0C0, "gpm6", 0x18),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x0E0, "gpm7", 0x1C),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x100, "gpm10", 0x20),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x120, "gpm11", 0x24),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x140, "gpm12", 0x28),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x160, "gpm13", 0x2C),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x180, "gpm14", 0x30),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x1A0, "gpm15", 0x34),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x1C0, "gpm16", 0x38),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x1E0, "gpm17", 0x3C),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x200, "gpm40", 0x40),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x220, "gpm41", 0x44),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x240, "gpm42", 0x48),
> + EXYNOS850_PIN_BANK_EINTW(1, 0x260, "gpm43", 0x4C),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 4 (FSYS0) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks4[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(2, 0x000, "gpf0", 0x00),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 5 (FSYS1) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks5[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(7, 0x000, "gpf1", 0x00),
> + EXYNOS850_PIN_BANK_EINTG(6, 0x020, "gpf2", 0x04),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 6 (PERIC0) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks6[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp0", 0x00),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp1", 0x04),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x040, "gpp2", 0x08),
> + EXYNOS850_PIN_BANK_EINTG(4, 0x060, "gpp3", 0x0C),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpg0", 0x10),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x0A0, "gpg1", 0x14),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x0C0, "gpg2", 0x18),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 7 (PERIC1) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks7[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(8, 0x000, "gpp4", 0x00),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x020, "gpp5", 0x04),
> + EXYNOS850_PIN_BANK_EINTG(4, 0x040, "gpp6", 0x08),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x060, "gpc0", 0x0C),
> + EXYNOS850_PIN_BANK_EINTG(8, 0x080, "gpc1", 0x10),
> + EXYNOS850_PIN_BANK_EINTG(4, 0x0A0, "gpd0", 0x14),
> + EXYNOS850_PIN_BANK_EINTG(7, 0x0C0, "gpg3", 0x18),
> +};
> +
> +/* pin banks of exynos9810 pin-controller 8 (VTS) */
> +static const struct samsung_pin_bank_data exynos9810_pin_banks8[] __initconst = {
> + EXYNOS850_PIN_BANK_EINTG(3, 0x000, "gpt0", 0x00),
> +};
> +
> +static const struct samsung_pin_ctrl exynos9810_pin_ctrl[] __initconst = {
> + {
> + /* pin-controller instance 0 ALIVE data */
> + .pin_banks = exynos9810_pin_banks0,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks0),
> + .eint_wkup_init = exynos_eint_wkup_init,
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 1 AUD data */
> + .pin_banks = exynos9810_pin_banks1,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks1),
> + }, {
> + /* pin-controller instance 2 CHUB data */
> + .pin_banks = exynos9810_pin_banks2,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks2),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 3 CMGP data */
> + .pin_banks = exynos9810_pin_banks3,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks3),
> + .eint_wkup_init = exynos_eint_wkup_init,
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 4 FSYS0 data */
> + .pin_banks = exynos9810_pin_banks4,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks4),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 5 FSYS1 data */
> + .pin_banks = exynos9810_pin_banks5,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks5),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 6 PERIC0 data */
> + .pin_banks = exynos9810_pin_banks6,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks6),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 7 PERIC1 data */
> + .pin_banks = exynos9810_pin_banks7,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks7),
> + .eint_gpio_init = exynos_eint_gpio_init,
> + .suspend = exynos_pinctrl_suspend,
> + .resume = exynos_pinctrl_resume,
> + }, {
> + /* pin-controller instance 8 VTS data */
> + .pin_banks = exynos9810_pin_banks8,
> + .nr_banks = ARRAY_SIZE(exynos9810_pin_banks8),
> + },
> +};
> +
> +const struct samsung_pinctrl_of_match_data exynos9810_of_data __initconst = {
> + .ctrl = exynos9810_pin_ctrl,
> + .num_ctrl = ARRAY_SIZE(exynos9810_pin_ctrl),
> +};
> +
> /* pin banks of exynosautov9 pin-controller 0 (ALIVE) */
> static const struct samsung_pin_bank_data exynosautov9_pin_banks0[] __initconst = {
> EXYNOS850_PIN_BANK_EINTW(8, 0x000, "gpa0", 0x00),
> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
> index 42e40860841bcc94e3c11bf313df792da10ab00b..bbedd980ec67234aad847b757f40af5002b11ebb 100644
> --- a/drivers/pinctrl/samsung/pinctrl-samsung.c
> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
> @@ -1479,6 +1479,8 @@ static const struct of_device_id samsung_pinctrl_dt_match[] = {
> .data = &exynos850_of_data },
> { .compatible = "samsung,exynos8895-pinctrl",
> .data = &exynos8895_of_data },
> + { .compatible = "samsung,exynos9810-pinctrl",
> + .data = &exynos9810_of_data },
> { .compatible = "samsung,exynos990-pinctrl",
> .data = &exynos990_of_data },
> { .compatible = "samsung,exynosautov9-pinctrl",
> diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.h b/drivers/pinctrl/samsung/pinctrl-samsung.h
> index 615048f945243d4173d40142f1e62c8aeefe5b7e..bb0689d52ea0b4392714fa9bcdcbae8d253c73a1 100644
> --- a/drivers/pinctrl/samsung/pinctrl-samsung.h
> +++ b/drivers/pinctrl/samsung/pinctrl-samsung.h
> @@ -385,6 +385,7 @@ extern const struct samsung_pinctrl_of_match_data exynos7_of_data;
> extern const struct samsung_pinctrl_of_match_data exynos7885_of_data;
> extern const struct samsung_pinctrl_of_match_data exynos850_of_data;
> extern const struct samsung_pinctrl_of_match_data exynos8895_of_data;
> +extern const struct samsung_pinctrl_of_match_data exynos9810_of_data;
> extern const struct samsung_pinctrl_of_match_data exynos990_of_data;
> extern const struct samsung_pinctrl_of_match_data exynosautov9_of_data;
> extern const struct samsung_pinctrl_of_match_data exynosautov920_of_data;
>
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2024-10-25 12:45 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-25 11:24 [PATCH v2 00/12] Add support for Exynos9810 SoC and Samsung Galaxy S9 (SM-G960F) Markuss Broks
2024-10-25 11:24 ` [PATCH v2 01/12] dt-bindings: arm: cpus: Add Samsung Mongoose M3 Markuss Broks
2024-10-25 12:36 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 02/12] dt-bindings: hwinfo: samsung,exynos-chipid: Add Samsung exynos9810 compatible Markuss Broks
2024-10-25 11:24 ` [PATCH v2 03/12] dt-bindings: pinctrl: samsung: Add compatible for Exynos9810 SoC Markuss Broks
2024-10-25 11:24 ` [PATCH v2 04/12] dt-bindings: pinctrl: samsung: Add compatible for exynos9810-wakeup-eint Markuss Broks
2024-10-25 12:37 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 05/12] dt-bindings: soc: samsung: exynos-pmu: Add exynos9810 compatible Markuss Broks
2024-10-25 11:24 ` [PATCH v2 06/12] dt-bindings: arm: samsung: Document Exynos9810 and starlte board binding Markuss Broks
2024-10-25 11:24 ` [PATCH v2 07/12] dt-bindings: arm: pmu: Add Samsung Mongoose core compatible Markuss Broks
2024-10-25 11:24 ` [PATCH v2 08/12] perf: arm_pmuv3: Add support for Samsung Mongoose PMU Markuss Broks
2024-10-25 12:40 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 09/12] soc: samsung: exynos-chipid: Add support for Exynos9810 SoC Markuss Broks
2024-10-25 11:24 ` [PATCH v2 10/12] pinctrl: samsung: Add Exynos9810 SoC specific data Markuss Broks
2024-10-25 12:45 ` Ivaylo Ivanov
2024-10-25 11:24 ` [PATCH v2 11/12] arm64: dts: exynos: Add Exynos9810 SoC support Markuss Broks
2024-10-25 12:43 ` Krzysztof Kozlowski
2024-10-25 11:24 ` [PATCH v2 12/12] arm64: dts: exynos: Add initial support for Samsung Galaxy S9 (SM-G960F) Markuss Broks
2024-10-25 12:05 ` Ivaylo Ivanov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).