* [PATCH v2 0/5] arm64: dts: exynos: add initial support for Samsung Galaxy Watch FE
@ 2026-10-19 10:23 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
Hi there,
This patchset adds initial support for the Exynos5515 SoC, along with
support for the Samsung Galaxy Watch FE (codenamed lucky7), which uses
this SoC.
Support for the following is added:
- Bootloader framebuffer
- Both CPU cores
- Memory
- Generic timer
- Watchdog timer
- CMU_TOP, CMU_FSYS, CMU_PERI clock management units
- ChipID
Currently, these device trees support booting the device to an initramfs.
There are quite a few regions of reserved memory, where usage of them
can crash the system and/or cause unexpected behaviour. Currently, most
of them are named "misc-rmem@addr". They will be given names as their
accompanying device drivers are added and their purpose becomes apparent.
If you would like them named feel differently, feel free to let me know.
The VGIC maintenance interrupt seems to be unavailable on this SoC.
I cannot find any reference to it, nor usage of it, anywhere.
It *could* very well still exist, but it is a mystery for now (and also
not a *huge* deal on a low-power SoC designed for smartwatches).
I am getting checkpatch warnings on this patchset advising to check
MAINTAINERS as new files were added, but I am ignoring them as the
entirety of arch/arm64/boot/dts/exynos is covered already.
This patchset depends on [1] for drivers and device tree bindings.
Note: This dependency was merged into the linux-watchdog tree.
[1] https://lore.kernel.org/all/20260821-for-next-lucky7-watchdog-v4-0-d070cee5009f@member.fsf.org/
Kind regards,
- Aiden Isik
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
Changes in v2:
- Fix patchset title
- Fix DCO email
- Fix style issues reported by dt-check-style in strict mode
- Added patches which were accidentally dropped in v1
- Fix reserved memory and make all memory accessible in the memory node
- Remove redundant PSCI 1.0 cpu_* function IDs
- Extend GIC registers to correct size
- Correct GIC unit address
- Correct CPU unit address
- Document unavailable VGIC maintenance interrupt
- Remove references to dependencies which have since been merged to this tree
- Link to v1: https://patch.msgid.link/20260817-for-next-lucky7-v1-0-42ffb2b71ba2@member.fsf.org
To: Rob Herring <robh@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Peter Griffin <peter.griffin@linaro.org>
To: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: devicetree@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-samsung-soc@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
Aiden Isik (5):
dt-bindings: soc: samsung: exynos-sysreg: Add compatibles for Exynos5515
dt-bindings: soc: samsung: exynos-pmu: Add Exynos5515 compatible
dt-bindings: arm: samsung: Add lucky7 board binding
arm64: dts: exynos: Add initial support for Exynos5515 SoC
arm64: dts: exynos: Add initial support for Samsung Galaxy Watch FE
.../bindings/arm/samsung/samsung-boards.yaml | 6 +
.../bindings/soc/samsung/exynos-pmu.yaml | 1 +
.../soc/samsung/samsung,exynos-sysreg.yaml | 3 +
arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts | 219 +++++++++++++++++++++
arch/arm64/boot/dts/exynos/exynos5515.dtsi | 189 ++++++++++++++++++
5 files changed, 418 insertions(+)
---
base-commit: 993e1bec85faedf90c5d27480793084e54357c09
change-id: 20260815-for-next-lucky7-e5bf3950bdbe
Best regards,
--
Aiden Isik <aidenisik@member.fsf.org>
^ permalink raw reply [flat|nested] 18+ messages in thread* [PATCH v2 1/5] dt-bindings: soc: samsung: exynos-sysreg: Add compatibles for Exynos5515
2026-10-19 10:23 ` Aiden Isik
@ 2026-10-19 10:23 ` Aiden Isik
-1 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik via B4 Relay @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
From: Aiden Isik <aidenisik@member.fsf.org>
Add Exynos5515 compatibles for the following sysreg controllers:
- top
- peri
- fsys
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
.../devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
index fcdb9ffd2644..c6731a3ea1c4 100644
--- a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
@@ -29,6 +29,9 @@ properties:
- samsung,exynos3-sysreg
- samsung,exynos4-sysreg
- samsung,exynos5-sysreg
+ - samsung,exynos5515-fsys-sysreg
+ - samsung,exynos5515-peri-sysreg
+ - samsung,exynos5515-top-sysreg
- samsung,exynos7870-cam0-sysreg
- samsung,exynos7870-disp-sysreg
- samsung,exynos8895-fsys0-sysreg
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 1/5] dt-bindings: soc: samsung: exynos-sysreg: Add compatibles for Exynos5515
@ 2026-10-19 10:23 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
Add Exynos5515 compatibles for the following sysreg controllers:
- top
- peri
- fsys
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
.../devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
index fcdb9ffd2644..c6731a3ea1c4 100644
--- a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
@@ -29,6 +29,9 @@ properties:
- samsung,exynos3-sysreg
- samsung,exynos4-sysreg
- samsung,exynos5-sysreg
+ - samsung,exynos5515-fsys-sysreg
+ - samsung,exynos5515-peri-sysreg
+ - samsung,exynos5515-top-sysreg
- samsung,exynos7870-cam0-sysreg
- samsung,exynos7870-disp-sysreg
- samsung,exynos8895-fsys0-sysreg
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v2 1/5] dt-bindings: soc: samsung: exynos-sysreg: Add compatibles for Exynos5515
2026-10-19 10:23 ` Aiden Isik
(?)
@ 2026-10-19 10:34 ` sashiko-bot
2026-10-19 11:09 ` Aiden Isik
-1 siblings, 1 reply; 18+ messages in thread
From: sashiko-bot @ 2026-10-19 10:34 UTC (permalink / raw)
To: Aiden Isik; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] dt-bindings: soc: samsung: missing clocks condition for exynos5515 sysreg
--
commit 780d375e416e5c58dedc0e1cdf45e84c270a29e6
Author: Aiden Isik <aidenisik@member.fsf.org>
dt-bindings: soc: samsung: exynos-sysreg: Add compatibles for Exynos5515
This commit adds Exynos5515 sysreg compatible strings for the top, peri,
and fsys blocks to the Samsung Exynos sysreg Device Tree binding schema.
> diff --git a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
> index fcdb9ffd26448..c6731a3ea1c47 100644
> --- a/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
> +++ b/Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
> @@ -29,6 +29,9 @@ properties:
> - samsung,exynos3-sysreg
> - samsung,exynos4-sysreg
> - samsung,exynos5-sysreg
> + - samsung,exynos5515-fsys-sysreg
> + - samsung,exynos5515-peri-sysreg
> + - samsung,exynos5515-top-sysreg
> - samsung,exynos7870-cam0-sysreg
> - samsung,exynos7870-disp-sysreg
> - samsung,exynos8895-fsys0-sysreg
[Severity: Medium]
Should samsung,exynos5515-fsys-sysreg and samsung,exynos5515-peri-sysreg also
be added to the allOf conditional block that requires clocks?
In include/dt-bindings/clock/samsung,exynos5515-cmu.h and
drivers/clk/samsung/clk-exynos5515.c, CMU_PERI and CMU_FSYS register
dedicated PCLK gate clocks for their respective SYSREG blocks in
peri_gate_clks and fsys_gate_clks:
drivers/clk/samsung/clk-exynos5515.c:
/* SYSREG */
GATE(CLK_GOUT_PERI_SYSREG_PCLK, "gout_peri_sysreg_pclk",
"mout_pll_peri_bus_user",
CLK_CON_GAT_CLK_BLK_PERI_UID_SYSREG_PERI_IPCLKPORT_PCLK,
21, 0, 0),
...
/* SYSREG */
GATE(CLK_GOUT_FSYS_SYSREG_PCLK, "gout_fsys_sysreg_pclk",
"mout_pll_fsys_bus_user",
CLK_CON_GAT_GOUT_BLK_FSYS_UID_SYSREG_FSYS_IPCLKPORT_PCLK,
21, 0, 0),
However, in Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml,
the allOf block sets clocks: false in the else branch when a compatible
string is not listed in the if enum:
- if:
properties:
compatible:
contains:
enum:
- google,gs101-dpu-sysreg
...
- samsung,exynos990-peric1-sysreg
then:
required:
- clocks
else:
properties:
clocks: false
Without listing samsung,exynos5515-fsys-sysreg and
samsung,exynos5515-peri-sysreg in that enum, won't schema validation reject
Device Tree nodes that specify CLK_GOUT_FSYS_SYSREG_PCLK or
CLK_GOUT_PERI_SYSREG_PCLK, while allowing unclocked nodes where
of_syscon_register() cannot attach the PCLK via regmap_mmio_attach_clk()?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261019-for-next-lucky7-v2-0-c4ecab4b1c4c@member.fsf.org?part=1
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 1/5] dt-bindings: soc: samsung: exynos-sysreg: Add compatibles for Exynos5515
2026-10-19 10:34 ` sashiko-bot
@ 2026-10-19 11:09 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 11:09 UTC (permalink / raw)
To: sashiko-reviews; +Cc: Aiden Isik, devicetree, robh, conor+dt
> Without listing samsung,exynos5515-fsys-sysreg and
> samsung,exynos5515-peri-sysreg in that enum, won't schema validation reject
> Device Tree nodes that specify CLK_GOUT_FSYS_SYSREG_PCLK or
> CLK_GOUT_PERI_SYSREG_PCLK, while allowing unclocked nodes where
> of_syscon_register() cannot attach the PCLK via regmap_mmio_attach_clk()?
It *does* work as-is, although that may be because the bootloader enables those
clocks before starting the kernel. I will investigate this.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 2/5] dt-bindings: soc: samsung: exynos-pmu: Add Exynos5515 compatible
2026-10-19 10:23 ` Aiden Isik
@ 2026-10-19 10:23 ` Aiden Isik
-1 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik via B4 Relay @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
From: Aiden Isik <aidenisik@member.fsf.org>
Add exynos5515-pmu compatible to the device tree bindings documentation.
Use the samsung,exynos7-pmu compatible, as it works the same for Exynos7
and Exynos5515.
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
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 5bd39876e3b3..1a0d9de79696 100644
--- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
@@ -33,6 +33,7 @@ properties:
- enum:
- axis,artpec9-pmu
- samsung,exynos2200-pmu
+ - samsung,exynos5515-pmu
- samsung,exynos7870-pmu
- samsung,exynos7885-pmu
- samsung,exynos8890-pmu
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 2/5] dt-bindings: soc: samsung: exynos-pmu: Add Exynos5515 compatible
@ 2026-10-19 10:23 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
Add exynos5515-pmu compatible to the device tree bindings documentation.
Use the samsung,exynos7-pmu compatible, as it works the same for Exynos7
and Exynos5515.
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
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 5bd39876e3b3..1a0d9de79696 100644
--- a/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
+++ b/Documentation/devicetree/bindings/soc/samsung/exynos-pmu.yaml
@@ -33,6 +33,7 @@ properties:
- enum:
- axis,artpec9-pmu
- samsung,exynos2200-pmu
+ - samsung,exynos5515-pmu
- samsung,exynos7870-pmu
- samsung,exynos7885-pmu
- samsung,exynos8890-pmu
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 3/5] dt-bindings: arm: samsung: Add lucky7 board binding
2026-10-19 10:23 ` Aiden Isik
@ 2026-10-19 10:23 ` Aiden Isik
-1 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik via B4 Relay @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
From: Aiden Isik <aidenisik@member.fsf.org>
Add device tree binding for the Samsung Galaxy Watch FE (SM-R861/SM-R866)
board, based on the Exynos5515 SoC.
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
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 db19a686f490..c80fac4fad7a 100644
--- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
+++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
@@ -157,6 +157,12 @@ properties:
- const: samsung,exynos5420
- const: samsung,exynos5
+ - description: Exynos5515 based boards
+ items:
+ - enum:
+ - samsung,lucky7 # Samsung Galaxy Watch FE (SM-R861/SM-R866)
+ - const: samsung,exynos5515
+
- description: Google Peach Pit Boards (Rev 6+)
items:
- const: google,pit-rev16
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 3/5] dt-bindings: arm: samsung: Add lucky7 board binding
@ 2026-10-19 10:23 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
Add device tree binding for the Samsung Galaxy Watch FE (SM-R861/SM-R866)
board, based on the Exynos5515 SoC.
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
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 db19a686f490..c80fac4fad7a 100644
--- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
+++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.yaml
@@ -157,6 +157,12 @@ properties:
- const: samsung,exynos5420
- const: samsung,exynos5
+ - description: Exynos5515 based boards
+ items:
+ - enum:
+ - samsung,lucky7 # Samsung Galaxy Watch FE (SM-R861/SM-R866)
+ - const: samsung,exynos5515
+
- description: Google Peach Pit Boards (Rev 6+)
items:
- const: google,pit-rev16
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v2 4/5] arm64: dts: exynos: Add initial support for Exynos5515 SoC
2026-10-19 10:23 ` Aiden Isik
@ 2026-10-19 10:23 ` Aiden Isik
-1 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik via B4 Relay @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
From: Aiden Isik <aidenisik@member.fsf.org>
The Exynos5515 is an ARMv8 wearable SoC, used in the following devices:
- Samsung Galaxy Watch 4 (SM-R860/SM-R865/SM-R870/SM-R875)
- Samsung Galaxy Watch 4 Classic (SM-R880/SM-R885/SM-R890/SM-R895)
- Samsung Galaxy Watch FE (SM-R861/SM-R866)
- Samsung Galaxy Watch 5 (SM-R900/SM-R905/SM-R910/SM-R915)
- Samsung Galaxy Watch 5 Pro (SM-R920/SM-R925)
- Samsung Galaxy Watch 6 (SM-R930/SM-R935/SM-R940/SM-R945)
- Samsung Galaxy Watch 6 Classic (SM-R950/SM-R955/SM-R960/SM-R965)
Add the following support for this SoC:
- Both Cortex-A55 cores
- ChipID
- Generic timer
- Watchdog timer
- CMU_TOP, CMU_PERI, and CMU_FSYS clock management units
The devices using this SoC suffer from the same issue as many other
Samsung devices, where the stock bootloader does not configure CNTFRQ_EL0.
To mitigate this, the correct frequency is hardcoded in the timer node.
The VGIC maintenance interrupt on this SoC is also unavailable.
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
arch/arm64/boot/dts/exynos/exynos5515.dtsi | 189 +++++++++++++++++++++++++++++
1 file changed, 189 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/exynos5515.dtsi b/arch/arm64/boot/dts/exynos/exynos5515.dtsi
new file mode 100644
index 000000000000..ce6fcbfffdb2
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos5515.dtsi
@@ -0,0 +1,189 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Samsung Exynos 5515 SoC device tree source
+ *
+ * Copyright (c) 2026 Aiden Isik <aidenisik+git@member.fsf.org>
+ */
+
+#include <dt-bindings/clock/samsung,exynos5515-cmu.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ compatible = "samsung,exynos5515";
+ #address-cells = <2>;
+ interrupt-parent = <&gic>;
+ #size-cells = <1>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu0>;
+ };
+
+ core1 {
+ cpu = <&cpu1>;
+ };
+ };
+ };
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x0>;
+ enable-method = "psci";
+ };
+
+ cpu1: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x100>;
+ enable-method = "psci";
+ };
+ };
+
+ oscclk: osc-clock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-output-names = "oscclk";
+ };
+
+ pmu {
+ compatible = "arm,armv8-pmuv3";
+ interrupt-affinity = <&cpu0>,
+ <&cpu1>;
+ interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ soc: soc@0 {
+ compatible = "simple-bus";
+ ranges = <0x0 0x0 0x0 0x20000000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ chipid@10000000 {
+ compatible = "samsung,exynos5515-chipid",
+ "samsung,exynos850-chipid";
+ reg = <0x10000000 0x100>;
+ };
+
+ sysreg_peri: syscon@10020000 {
+ compatible = "samsung,exynos5515-peri-sysreg", "syscon";
+ reg = <0x10020000 0x10000>;
+ };
+
+ cmu_peri: clock-controller@10030000 {
+ compatible = "samsung,exynos5515-cmu-peri";
+ reg = <0x10030000 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&oscclk>,
+ <&cmu_top CLK_DOUT_CMU_PERI_BUS>,
+ <&cmu_top CLK_DOUT_CMU_PERI_IP>,
+ <&cmu_top CLK_DOUT_CMU_PERI_UART>;
+ clock-names = "oscclk",
+ "bus",
+ "ip",
+ "uart";
+ samsung,sysreg = <&sysreg_peri>;
+ };
+
+ watchdog: watchdog@10050000 {
+ compatible = "samsung,exynos5515-wdt";
+ reg = <0x10050000 0x100>;
+ clocks = <&cmu_peri CLK_GOUT_PERI_WDT0_PCLK>,
+ <&oscclk>;
+ clock-names = "watchdog",
+ "watchdog_src";
+ interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
+ samsung,syscon-phandle = <&pmu_system_controller>;
+
+ status = "disabled";
+ };
+
+ cmu_fsys: clock-controller@10400000 {
+ compatible = "samsung,exynos5515-cmu-fsys";
+ reg = <0x10400000 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&oscclk>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_BUS>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_MMC_CARD>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_MMC_EMBD>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_USB20DRD>;
+ clock-names = "oscclk",
+ "bus",
+ "mmc_card",
+ "mmc_embd",
+ "usb20drd";
+ samsung,sysreg = <&sysreg_fsys>;
+ };
+
+ sysreg_fsys: syscon@10420000 {
+ compatible = "samsung,exynos5515-fsys-sysreg", "syscon";
+ reg = <0x10420000 0x10000>;
+ };
+
+ pmu_system_controller: system-controller@12860000 {
+ compatible = "samsung,exynos5515-pmu",
+ "samsung,exynos7-pmu",
+ "syscon";
+ reg = <0x12860000 0x10000>;
+ };
+
+ cmu_top: clock-controller@15410000 {
+ compatible = "samsung,exynos5515-cmu-top";
+ reg = <0x15410000 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&oscclk>;
+ clock-names = "oscclk";
+ samsung,sysreg = <&sysreg_top>;
+ };
+
+ sysreg_top: syscon@15430000 {
+ compatible = "samsung,exynos5515-top-sysreg", "syscon";
+ reg = <0x15430000 0x10000>;
+ };
+
+ gic: interrupt-controller@15601000 {
+ compatible = "arm,gic-400";
+ reg = <0x15601000 0x1000>,
+ <0x15602000 0x2000>,
+ <0x15604000 0x2000>,
+ <0x15606000 0x2000>;
+ #address-cells = <0>;
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ /* VGIC maintenance interrupt is not available */
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ /*
+ * Non-updatable, broken stock Samsung bootloader does not
+ * configure CNTFRQ_EL0
+ */
+ clock-frequency = <26000000>;
+ 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)>,
+ <GIC_PPI 12
+ (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+ };
+};
+
+#include "arm/samsung/exynos-syscon-restart.dtsi"
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 4/5] arm64: dts: exynos: Add initial support for Exynos5515 SoC
@ 2026-10-19 10:23 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
The Exynos5515 is an ARMv8 wearable SoC, used in the following devices:
- Samsung Galaxy Watch 4 (SM-R860/SM-R865/SM-R870/SM-R875)
- Samsung Galaxy Watch 4 Classic (SM-R880/SM-R885/SM-R890/SM-R895)
- Samsung Galaxy Watch FE (SM-R861/SM-R866)
- Samsung Galaxy Watch 5 (SM-R900/SM-R905/SM-R910/SM-R915)
- Samsung Galaxy Watch 5 Pro (SM-R920/SM-R925)
- Samsung Galaxy Watch 6 (SM-R930/SM-R935/SM-R940/SM-R945)
- Samsung Galaxy Watch 6 Classic (SM-R950/SM-R955/SM-R960/SM-R965)
Add the following support for this SoC:
- Both Cortex-A55 cores
- ChipID
- Generic timer
- Watchdog timer
- CMU_TOP, CMU_PERI, and CMU_FSYS clock management units
The devices using this SoC suffer from the same issue as many other
Samsung devices, where the stock bootloader does not configure CNTFRQ_EL0.
To mitigate this, the correct frequency is hardcoded in the timer node.
The VGIC maintenance interrupt on this SoC is also unavailable.
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
arch/arm64/boot/dts/exynos/exynos5515.dtsi | 189 +++++++++++++++++++++++++++++
1 file changed, 189 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/exynos5515.dtsi b/arch/arm64/boot/dts/exynos/exynos5515.dtsi
new file mode 100644
index 000000000000..ce6fcbfffdb2
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos5515.dtsi
@@ -0,0 +1,189 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Samsung Exynos 5515 SoC device tree source
+ *
+ * Copyright (c) 2026 Aiden Isik <aidenisik+git@member.fsf.org>
+ */
+
+#include <dt-bindings/clock/samsung,exynos5515-cmu.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ compatible = "samsung,exynos5515";
+ #address-cells = <2>;
+ interrupt-parent = <&gic>;
+ #size-cells = <1>;
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu-map {
+ cluster0 {
+ core0 {
+ cpu = <&cpu0>;
+ };
+
+ core1 {
+ cpu = <&cpu1>;
+ };
+ };
+ };
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x0>;
+ enable-method = "psci";
+ };
+
+ cpu1: cpu@100 {
+ device_type = "cpu";
+ compatible = "arm,cortex-a55";
+ reg = <0x100>;
+ enable-method = "psci";
+ };
+ };
+
+ oscclk: osc-clock {
+ compatible = "fixed-clock";
+ #clock-cells = <0>;
+ clock-output-names = "oscclk";
+ };
+
+ pmu {
+ compatible = "arm,armv8-pmuv3";
+ interrupt-affinity = <&cpu0>,
+ <&cpu1>;
+ interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
+ <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+ };
+
+ psci {
+ compatible = "arm,psci-1.0";
+ method = "smc";
+ };
+
+ soc: soc@0 {
+ compatible = "simple-bus";
+ ranges = <0x0 0x0 0x0 0x20000000>;
+
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ chipid@10000000 {
+ compatible = "samsung,exynos5515-chipid",
+ "samsung,exynos850-chipid";
+ reg = <0x10000000 0x100>;
+ };
+
+ sysreg_peri: syscon@10020000 {
+ compatible = "samsung,exynos5515-peri-sysreg", "syscon";
+ reg = <0x10020000 0x10000>;
+ };
+
+ cmu_peri: clock-controller@10030000 {
+ compatible = "samsung,exynos5515-cmu-peri";
+ reg = <0x10030000 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&oscclk>,
+ <&cmu_top CLK_DOUT_CMU_PERI_BUS>,
+ <&cmu_top CLK_DOUT_CMU_PERI_IP>,
+ <&cmu_top CLK_DOUT_CMU_PERI_UART>;
+ clock-names = "oscclk",
+ "bus",
+ "ip",
+ "uart";
+ samsung,sysreg = <&sysreg_peri>;
+ };
+
+ watchdog: watchdog@10050000 {
+ compatible = "samsung,exynos5515-wdt";
+ reg = <0x10050000 0x100>;
+ clocks = <&cmu_peri CLK_GOUT_PERI_WDT0_PCLK>,
+ <&oscclk>;
+ clock-names = "watchdog",
+ "watchdog_src";
+ interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
+ samsung,syscon-phandle = <&pmu_system_controller>;
+
+ status = "disabled";
+ };
+
+ cmu_fsys: clock-controller@10400000 {
+ compatible = "samsung,exynos5515-cmu-fsys";
+ reg = <0x10400000 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&oscclk>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_BUS>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_MMC_CARD>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_MMC_EMBD>,
+ <&cmu_top CLK_DOUT_CMU_FSYS_USB20DRD>;
+ clock-names = "oscclk",
+ "bus",
+ "mmc_card",
+ "mmc_embd",
+ "usb20drd";
+ samsung,sysreg = <&sysreg_fsys>;
+ };
+
+ sysreg_fsys: syscon@10420000 {
+ compatible = "samsung,exynos5515-fsys-sysreg", "syscon";
+ reg = <0x10420000 0x10000>;
+ };
+
+ pmu_system_controller: system-controller@12860000 {
+ compatible = "samsung,exynos5515-pmu",
+ "samsung,exynos7-pmu",
+ "syscon";
+ reg = <0x12860000 0x10000>;
+ };
+
+ cmu_top: clock-controller@15410000 {
+ compatible = "samsung,exynos5515-cmu-top";
+ reg = <0x15410000 0x10000>;
+ #clock-cells = <1>;
+ clocks = <&oscclk>;
+ clock-names = "oscclk";
+ samsung,sysreg = <&sysreg_top>;
+ };
+
+ sysreg_top: syscon@15430000 {
+ compatible = "samsung,exynos5515-top-sysreg", "syscon";
+ reg = <0x15430000 0x10000>;
+ };
+
+ gic: interrupt-controller@15601000 {
+ compatible = "arm,gic-400";
+ reg = <0x15601000 0x1000>,
+ <0x15602000 0x2000>,
+ <0x15604000 0x2000>,
+ <0x15606000 0x2000>;
+ #address-cells = <0>;
+ #interrupt-cells = <3>;
+ interrupt-controller;
+ /* VGIC maintenance interrupt is not available */
+ };
+ };
+
+ timer {
+ compatible = "arm,armv8-timer";
+ /*
+ * Non-updatable, broken stock Samsung bootloader does not
+ * configure CNTFRQ_EL0
+ */
+ clock-frequency = <26000000>;
+ 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)>,
+ <GIC_PPI 12
+ (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;
+ };
+};
+
+#include "arm/samsung/exynos-syscon-restart.dtsi"
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v2 4/5] arm64: dts: exynos: Add initial support for Exynos5515 SoC
2026-10-19 10:23 ` Aiden Isik
(?)
@ 2026-10-19 10:40 ` sashiko-bot
2026-10-19 11:16 ` Aiden Isik
-1 siblings, 1 reply; 18+ messages in thread
From: sashiko-bot @ 2026-10-19 10:40 UTC (permalink / raw)
To: Aiden Isik; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [Medium] arm64: dts: exynos5515: undocumented and unsupported watchdog compatible
- [Medium] arm64: dts: exynos5515: pmu node uses software-model compatible
- [Medium] arm64: dts: exynos5515: missing clocks on sysreg_peri and sysreg_fsys
--
commit 004e20a5dc89e977ddee65c29861e06d78443621
Author: Aiden Isik <aidenisik@member.fsf.org>
arm64: dts: exynos: Add initial support for Exynos5515 SoC
This commit adds the initial device tree source for the Samsung Exynos 5515
wearable SoC, including nodes for the Cortex-A55 CPUs, PMU, ChipID, generic
timer, watchdog timer, and CMU_TOP, CMU_PERI, and CMU_FSYS clock units.
> diff --git a/arch/arm64/boot/dts/exynos/exynos5515.dtsi b/arch/arm64/boot/dts/exynos/exynos5515.dtsi
> new file mode 100644
> index 0000000000000..ce6fcbfffdb2e
> --- /dev/null
> +++ b/arch/arm64/boot/dts/exynos/exynos5515.dtsi
> @@ -0,0 +1,189 @@
[ ... ]
> + cpu0: cpu@0 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a55";
> + reg = <0x0>;
> + enable-method = "psci";
> + };
> +
> + cpu1: cpu@100 {
> + device_type = "cpu";
> + compatible = "arm,cortex-a55";
> + reg = <0x100>;
> + enable-method = "psci";
> + };
> + };
> +
> + oscclk: osc-clock {
> + compatible = "fixed-clock";
> + #clock-cells = <0>;
> + clock-output-names = "oscclk";
> + };
> +
> + pmu {
> + compatible = "arm,armv8-pmuv3";
> + interrupt-affinity = <&cpu0>,
> + <&cpu1>;
> + interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
> + <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> + };
[Severity: Medium]
Should the pmu node use compatible = "arm,cortex-a55-pmu" instead of
"arm,armv8-pmuv3"?
In Documentation/devicetree/bindings/arm/pmu.yaml, "arm,armv8-pmuv3" is
marked as only for software models:
- arm,armv8-pmuv3 # Only for s/w models
...
- arm,cortex-a55-pmu
When drivers/perf/arm_pmuv3.c matches "arm,armv8-pmuv3", it registers the
PMU with the generic name "armv8_pmuv3" instead of "armv8_cortex_a55",
preventing userspace perf tooling from identifying the Cortex-A55
microarchitectural events.
[ ... ]
> + sysreg_peri: syscon@10020000 {
> + compatible = "samsung,exynos5515-peri-sysreg", "syscon";
> + reg = <0x10020000 0x10000>;
> + };
[Severity: Medium]
Do sysreg_peri and sysreg_fsys need their clocks properties wired up to
CLK_GOUT_PERI_SYSREG_PCLK and CLK_GOUT_FSYS_SYSREG_PCLK?
In drivers/clk/samsung/clk-exynos5515.c, peri_gate_clks and fsys_gate_clks
register dedicated gate clocks for these sysreg blocks:
/* SYSREG */
GATE(CLK_GOUT_PERI_SYSREG_PCLK, "gout_peri_sysreg_pclk",
"mout_pll_peri_bus_user",
CLK_CON_GAT_CLK_BLK_PERI_UID_SYSREG_PERI_IPCLKPORT_PCLK,
21, 0, 0);
When cmu_peri and cmu_fsys look up samsung,sysreg via
samsung_cmu_register_one() -> samsung_en_dyn_root_clk_gating() ->
syscon_regmap_lookup_by_phandle() -> of_syscon_register(), the absence of
a clocks property means regmap_mmio_attach_clk() is not called, leaving
the SYSREG PCLK unprepared and unenabled during sysreg MMIO accesses.
In addition, Documentation/devicetree/bindings/soc/samsung/samsung,exynos-sysreg.yaml
currently omits samsung,exynos5515-peri-sysreg and
samsung,exynos5515-fsys-sysreg from the allOf conditional block that
requires clocks, causing the else branch (clocks: false) to apply.
> +
> + cmu_peri: clock-controller@10030000 {
> + compatible = "samsung,exynos5515-cmu-peri";
> + reg = <0x10030000 0x10000>;
> + #clock-cells = <1>;
> + clocks = <&oscclk>,
> + <&cmu_top CLK_DOUT_CMU_PERI_BUS>,
> + <&cmu_top CLK_DOUT_CMU_PERI_IP>,
> + <&cmu_top CLK_DOUT_CMU_PERI_UART>;
> + clock-names = "oscclk",
> + "bus",
> + "ip",
> + "uart";
> + samsung,sysreg = <&sysreg_peri>;
> + };
> +
> + watchdog: watchdog@10050000 {
> + compatible = "samsung,exynos5515-wdt";
> + reg = <0x10050000 0x100>;
> + clocks = <&cmu_peri CLK_GOUT_PERI_WDT0_PCLK>,
> + <&oscclk>;
> + clock-names = "watchdog",
> + "watchdog_src";
> + interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
> + samsung,syscon-phandle = <&pmu_system_controller>;
> +
> + status = "disabled";
> + };
[Severity: Medium]
Can this watchdog node pass dtbs_check or bind to a driver when enabled?
The compatible string "samsung,exynos5515-wdt" has no fallback compatible
and is not present in Documentation/devicetree/bindings/watchdog/samsung-wdt.yaml
or in s3c2410_wdt_match[] in drivers/watchdog/s3c2410_wdt.c:
static const struct of_device_id s3c2410_wdt_match[] = {
{ .compatible = "google,gs101-wdt",
.data = &drv_data_gs101_cl0 },
...
{ .compatible = "samsung,exynos850-wdt",
.data = &drv_data_exynos850_cl0 },
...
};
Also, for dual-clock Exynos watchdog variants with "watchdog" and
"watchdog_src" clocks, both samsung-wdt.yaml and s3c2410_get_wdt_drv_data()
in drivers/watchdog/s3c2410_wdt.c require the samsung,cluster-index property
and fail probe with -EINVAL when it is missing.
> +
> + cmu_fsys: clock-controller@10400000 {
[ ... ]
> + samsung,sysreg = <&sysreg_fsys>;
> + };
> +
> + sysreg_fsys: syscon@10420000 {
> + compatible = "samsung,exynos5515-fsys-sysreg", "syscon";
> + reg = <0x10420000 0x10000>;
> + };
[ ... ]
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261019-for-next-lucky7-v2-0-c4ecab4b1c4c@member.fsf.org?part=4
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 4/5] arm64: dts: exynos: Add initial support for Exynos5515 SoC
2026-10-19 10:40 ` sashiko-bot
@ 2026-10-19 11:16 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 11:16 UTC (permalink / raw)
To: sashiko-reviews; +Cc: Aiden Isik, devicetree, robh, conor+dt
> When drivers/perf/arm_pmuv3.c matches "arm,armv8-pmuv3", it registers the
> PMU with the generic name "armv8_pmuv3" instead of "armv8_cortex_a55",
> preventing userspace perf tooling from identifying the Cortex-A55
> microarchitectural events.
Will look into this.
> Do sysreg_peri and sysreg_fsys need their clocks properties wired up to
> CLK_GOUT_PERI_SYSREG_PCLK and CLK_GOUT_FSYS_SYSREG_PCLK?
Will also look into this, as I mentioned in another one of these patches.
> The compatible string "samsung,exynos5515-wdt" has no fallback compatible
> and is not present in Documentation/devicetree/bindings/watchdog/samsung-wdt.yaml
> or in s3c2410_wdt_match[] in drivers/watchdog/s3c2410_wdt.c:
This is what the dependency listed in the cover letter is for.
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2 5/5] arm64: dts: exynos: Add initial support for Samsung Galaxy Watch FE
2026-10-19 10:23 ` Aiden Isik
@ 2026-10-19 10:23 ` Aiden Isik
-1 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik via B4 Relay @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
From: Aiden Isik <aidenisik@member.fsf.org>
The Samsung Galaxy Watch FE (SM-R861/SM-R866), codenamed lucky7, is a
smartwatch developed by Samsung and released in 2024. It has 1.5GiB RAM,
16GiB of eMMC storage, an Exynos5515 (W920) SoC, and a 396x396 display.
Support for the following is added by this device tree:
- Bootloader framebuffer
- Memory
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts | 219 +++++++++++++++++++++++
1 file changed, 219 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts b/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts
new file mode 100644
index 000000000000..e80a0f0948cb
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts
@@ -0,0 +1,219 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Samsung Galaxy Watch FE (lucky7/SM-R861/SM-R866) device tree source
+ *
+ * Copyright (c) 2026 Aiden Isik <aidenisik+git@member.fsf.org>
+ */
+
+/dts-v1/;
+#include "exynos5515.dtsi"
+
+/ {
+ compatible = "samsung,lucky7", "samsung,exynos5515";
+ chassis-type = "watch";
+ model = "Samsung Galaxy Watch FE (SM-R861/SM-R866)";
+
+ chosen {
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ framebuffer@9e0cf000 {
+ compatible = "simple-framebuffer";
+ reg = <0x0 0x9e0cf000 (396 * 396 * 4)>;
+ format = "a8r8g8b8";
+ height = <396>;
+ stride = <(396 * 4)>;
+ width = <396>;
+ };
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x0 0x80000000 0x3ea00000>,
+ <0x0 0xc0000000 0x20000000>;
+ };
+
+ reserved-memory {
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ /*
+ * Some of these misc-rmem regions belong to memory-mapped
+ * devices, and will be assigned to drivers as support
+ * is added.
+ *
+ * Other regions belong to the TrustZone firmware and should
+ * never be touched.
+ */
+ misc-rmem@87000000 {
+ reg = <0x0 0x87000000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@87fff000 {
+ reg = <0x0 0x87fff000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@8a000000 {
+ reg = <0x0 0x8a000000 0x31000>;
+ no-map;
+ };
+
+ misc-rmem@8d800000 {
+ reg = <0x0 0x8d800000 0x180000>;
+ no-map;
+ };
+
+ misc-rmem@8ffff000 {
+ reg = <0x0 0x8ffff000 0x33000>;
+ no-map;
+ };
+
+ misc-rmem@90100000 {
+ reg = <0x0 0x90100000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@98a00000 {
+ reg = <0x0 0x98a00000 0x600000>;
+ no-map;
+ };
+
+ misc-rmem@9a000000 {
+ reg = <0x0 0x9a000000 0xc00000>;
+ no-map;
+ };
+
+ misc-rmem@9b000000 {
+ reg = <0x0 0x9b000000 0x400000>;
+ no-map;
+ };
+
+ misc-rmem@9bd00000 {
+ reg = <0x0 0x9bd00000 0x208000>;
+ no-map;
+ };
+
+ misc-rmem@9c000000 {
+ reg = <0x0 0x9c000000 0x20000>;
+ no-map;
+ };
+
+ framebuffer@9e0cf000 {
+ /*
+ * Reserve up to the end of the final page of the
+ * framebuffer region, to prevent memory aliasing.
+ *
+ * size: align((396 * 396 * 4), 0x1000)
+ */
+ reg = <0x0 0x9e0cf000 0x9a000>;
+ no-map;
+ };
+
+ misc-rmem@a0000000 {
+ reg = <0x0 0xa0000000 0x10000>;
+ no-map;
+ };
+
+ misc-rmem@a0010000 {
+ reg = <0x0 0xa0010000 0x400000>;
+ no-map;
+ };
+
+ misc-rmem@a0510000 {
+ reg = <0x0 0xa0510000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@a0900000 {
+ reg = <0x0 0xa0900000 0x2000>;
+ no-map;
+ };
+
+ misc-rmem@a0902000 {
+ reg = <0x0 0xa0902000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@a0910000 {
+ reg = <0x0 0xa0910000 0x3c000>;
+ no-map;
+ };
+
+ misc-rmem@b0000000 {
+ reg = <0x0 0xb0000000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@b1000000 {
+ reg = <0x0 0xb1000000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@bbfff000 {
+ reg = <0x0 0xbbfff000 0x1000000>;
+ no-map;
+ };
+
+ misc-rmem@bcfff000 {
+ reg = <0x0 0xbcfff000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@bd430000 {
+ reg = <0x0 0xbd430000 0x1250000>;
+ no-map;
+ };
+
+ misc-rmem@d0000000 {
+ reg = <0x0 0xd0000000 0x5d00000>;
+ no-map;
+ };
+
+ misc-rmem@dc444000 {
+ reg = <0x0 0xdc444000 0x2bbc000>;
+ no-map;
+ };
+
+ misc-rmem@df005000 {
+ reg = <0x0 0xdf005000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@df008000 {
+ reg = <0x0 0xdf008000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@df009000 {
+ reg = <0x0 0xdf009000 0x12000>;
+ no-map;
+ };
+
+ misc-rmem@df01b000 {
+ reg = <0x0 0xdf01b000 0x21000>;
+ no-map;
+ };
+
+ misc-rmem@df03c000 {
+ reg = <0x0 0xdf03c000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@df03d000 {
+ reg = <0x0 0xdf03d000 0xfc3000>;
+ no-map;
+ };
+ };
+};
+
+&oscclk {
+ clock-frequency = <26000000>;
+};
+
+&watchdog {
+ status = "okay";
+};
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v2 5/5] arm64: dts: exynos: Add initial support for Samsung Galaxy Watch FE
@ 2026-10-19 10:23 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 10:23 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Peter Griffin,
Alim Akhtar
Cc: Krzysztof Kozlowski, devicetree, linux-arm-kernel,
linux-samsung-soc, linux-kernel, Aiden Isik
The Samsung Galaxy Watch FE (SM-R861/SM-R866), codenamed lucky7, is a
smartwatch developed by Samsung and released in 2024. It has 1.5GiB RAM,
16GiB of eMMC storage, an Exynos5515 (W920) SoC, and a 396x396 display.
Support for the following is added by this device tree:
- Bootloader framebuffer
- Memory
Signed-off-by: Aiden Isik <aidenisik@member.fsf.org>
---
arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts | 219 +++++++++++++++++++++++
1 file changed, 219 insertions(+)
diff --git a/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts b/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts
new file mode 100644
index 000000000000..e80a0f0948cb
--- /dev/null
+++ b/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts
@@ -0,0 +1,219 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Samsung Galaxy Watch FE (lucky7/SM-R861/SM-R866) device tree source
+ *
+ * Copyright (c) 2026 Aiden Isik <aidenisik+git@member.fsf.org>
+ */
+
+/dts-v1/;
+#include "exynos5515.dtsi"
+
+/ {
+ compatible = "samsung,lucky7", "samsung,exynos5515";
+ chassis-type = "watch";
+ model = "Samsung Galaxy Watch FE (SM-R861/SM-R866)";
+
+ chosen {
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ framebuffer@9e0cf000 {
+ compatible = "simple-framebuffer";
+ reg = <0x0 0x9e0cf000 (396 * 396 * 4)>;
+ format = "a8r8g8b8";
+ height = <396>;
+ stride = <(396 * 4)>;
+ width = <396>;
+ };
+ };
+
+ memory@80000000 {
+ device_type = "memory";
+ reg = <0x0 0x80000000 0x3ea00000>,
+ <0x0 0xc0000000 0x20000000>;
+ };
+
+ reserved-memory {
+ ranges;
+ #address-cells = <2>;
+ #size-cells = <1>;
+
+ /*
+ * Some of these misc-rmem regions belong to memory-mapped
+ * devices, and will be assigned to drivers as support
+ * is added.
+ *
+ * Other regions belong to the TrustZone firmware and should
+ * never be touched.
+ */
+ misc-rmem@87000000 {
+ reg = <0x0 0x87000000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@87fff000 {
+ reg = <0x0 0x87fff000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@8a000000 {
+ reg = <0x0 0x8a000000 0x31000>;
+ no-map;
+ };
+
+ misc-rmem@8d800000 {
+ reg = <0x0 0x8d800000 0x180000>;
+ no-map;
+ };
+
+ misc-rmem@8ffff000 {
+ reg = <0x0 0x8ffff000 0x33000>;
+ no-map;
+ };
+
+ misc-rmem@90100000 {
+ reg = <0x0 0x90100000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@98a00000 {
+ reg = <0x0 0x98a00000 0x600000>;
+ no-map;
+ };
+
+ misc-rmem@9a000000 {
+ reg = <0x0 0x9a000000 0xc00000>;
+ no-map;
+ };
+
+ misc-rmem@9b000000 {
+ reg = <0x0 0x9b000000 0x400000>;
+ no-map;
+ };
+
+ misc-rmem@9bd00000 {
+ reg = <0x0 0x9bd00000 0x208000>;
+ no-map;
+ };
+
+ misc-rmem@9c000000 {
+ reg = <0x0 0x9c000000 0x20000>;
+ no-map;
+ };
+
+ framebuffer@9e0cf000 {
+ /*
+ * Reserve up to the end of the final page of the
+ * framebuffer region, to prevent memory aliasing.
+ *
+ * size: align((396 * 396 * 4), 0x1000)
+ */
+ reg = <0x0 0x9e0cf000 0x9a000>;
+ no-map;
+ };
+
+ misc-rmem@a0000000 {
+ reg = <0x0 0xa0000000 0x10000>;
+ no-map;
+ };
+
+ misc-rmem@a0010000 {
+ reg = <0x0 0xa0010000 0x400000>;
+ no-map;
+ };
+
+ misc-rmem@a0510000 {
+ reg = <0x0 0xa0510000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@a0900000 {
+ reg = <0x0 0xa0900000 0x2000>;
+ no-map;
+ };
+
+ misc-rmem@a0902000 {
+ reg = <0x0 0xa0902000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@a0910000 {
+ reg = <0x0 0xa0910000 0x3c000>;
+ no-map;
+ };
+
+ misc-rmem@b0000000 {
+ reg = <0x0 0xb0000000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@b1000000 {
+ reg = <0x0 0xb1000000 0x200000>;
+ no-map;
+ };
+
+ misc-rmem@bbfff000 {
+ reg = <0x0 0xbbfff000 0x1000000>;
+ no-map;
+ };
+
+ misc-rmem@bcfff000 {
+ reg = <0x0 0xbcfff000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@bd430000 {
+ reg = <0x0 0xbd430000 0x1250000>;
+ no-map;
+ };
+
+ misc-rmem@d0000000 {
+ reg = <0x0 0xd0000000 0x5d00000>;
+ no-map;
+ };
+
+ misc-rmem@dc444000 {
+ reg = <0x0 0xdc444000 0x2bbc000>;
+ no-map;
+ };
+
+ misc-rmem@df005000 {
+ reg = <0x0 0xdf005000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@df008000 {
+ reg = <0x0 0xdf008000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@df009000 {
+ reg = <0x0 0xdf009000 0x12000>;
+ no-map;
+ };
+
+ misc-rmem@df01b000 {
+ reg = <0x0 0xdf01b000 0x21000>;
+ no-map;
+ };
+
+ misc-rmem@df03c000 {
+ reg = <0x0 0xdf03c000 0x1000>;
+ no-map;
+ };
+
+ misc-rmem@df03d000 {
+ reg = <0x0 0xdf03d000 0xfc3000>;
+ no-map;
+ };
+ };
+};
+
+&oscclk {
+ clock-frequency = <26000000>;
+};
+
+&watchdog {
+ status = "okay";
+};
--
2.54.0
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v2 5/5] arm64: dts: exynos: Add initial support for Samsung Galaxy Watch FE
2026-10-19 10:23 ` Aiden Isik
(?)
@ 2026-10-19 10:32 ` sashiko-bot
2026-10-19 11:03 ` Aiden Isik
-1 siblings, 1 reply; 18+ messages in thread
From: sashiko-bot @ 2026-10-19 10:32 UTC (permalink / raw)
To: Aiden Isik; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] arm64: dts: exynos: missing Makefile entry for exynos5515-lucky7.dtb
- [Medium] arm64: dts: exynos: undocumented and unsupported samsung,exynos5515-wdt enabled
--
commit 0d8def366a8d338fb8397be7ac629d0ddc3e5c1d
Author: Aiden Isik <aidenisik@member.fsf.org>
arm64: dts: exynos: Add initial support for Samsung Galaxy Watch FE
This commit adds the initial device tree source for the Samsung Galaxy
Watch FE (SM-R861/SM-R866, codenamed lucky7) based on the Exynos5515 SoC,
with support for memory, reserved memory regions, and the bootloader
framebuffer.
> diff --git a/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts b/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts
> new file mode 100644
> index 0000000000000..e80a0f0948cb7
> --- /dev/null
> +++ b/arch/arm64/boot/dts/exynos/exynos5515-lucky7.dts
> @@ -0,0 +1,219 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Samsung Galaxy Watch FE (lucky7/SM-R861/SM-R866) device tree source
> + *
> + * Copyright (c) 2026 Aiden Isik <aidenisik+git@member.fsf.org>
> + */
> +
> +/dts-v1/;
> +#include "exynos5515.dtsi"
> +
> +/ {
> + compatible = "samsung,lucky7", "samsung,exynos5515";
> + chassis-type = "watch";
> + model = "Samsung Galaxy Watch FE (SM-R861/SM-R866)";
[Severity: Medium]
Should arch/arm64/boot/dts/exynos/Makefile also be updated to include
exynos5515-lucky7.dtb under dtb-$(CONFIG_ARCH_EXYNOS):
arch/arm64/boot/dts/exynos/Makefile:
dtb-$(CONFIG_ARCH_EXYNOS) += \
exynos2200-g0s.dtb \
exynos5433-tm2.dtb \
exynos5433-tm2e.dtb \
exynos7-espresso.dtb \
Without an entry in arch/arm64/boot/dts/exynos/Makefile,
exynos5515-lucky7.dts will not be compiled into exynos5515-lucky7.dtb during
make dtbs, and both exynos5515-lucky7.dts and exynos5515.dtsi will be
skipped during make dtbs_check schema validation.
[ ... ]
> +&oscclk {
> + clock-frequency = <26000000>;
> +};
> +
> +&watchdog {
> + status = "okay";
> +};
[Severity: Medium]
Will enabling the watchdog node here pass dtbs_check or bind to a driver at
runtime?
In arch/arm64/boot/dts/exynos/exynos5515.dtsi, the watchdog node is defined
with no fallback compatible string:
watchdog: watchdog@10050000 {
compatible = "samsung,exynos5515-wdt";
reg = <0x10050000 0x100>;
clocks = <&cmu_peri CLK_GOUT_PERI_WDT0_PCLK>,
<&oscclk>;
clock-names = "watchdog",
"watchdog_src";
interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH>;
samsung,syscon-phandle = <&pmu_system_controller>;
status = "disabled";
};
However, "samsung,exynos5515-wdt" is not documented in
Documentation/devicetree/bindings/watchdog/samsung-wdt.yaml, nor is it
present in s3c2410_wdt_match[] in drivers/watchdog/s3c2410_wdt.c:
static const struct of_device_id s3c2410_wdt_match[] = {
{ .compatible = "google,gs101-wdt",
.data = &drv_data_gs101_cl0 },
{ .compatible = "samsung,s3c6410-wdt",
.data = &drv_data_s3c6410 },
{ .compatible = "samsung,exynos5250-wdt",
.data = &drv_data_exynos5250 },
{ .compatible = "samsung,exynos5420-wdt",
.data = &drv_data_exynos5420 },
{ .compatible = "samsung,exynos7-wdt",
.data = &drv_data_exynos7 },
{ .compatible = "samsung,exynos850-wdt",
.data = &drv_data_exynos850_cl0 },
Additionally, if the hardware is compatible with an existing two-clock
variant such as "samsung,exynos850-wdt", both
Documentation/devicetree/bindings/watchdog/samsung-wdt.yaml and
s3c2410_get_wdt_drv_data() in drivers/watchdog/s3c2410_wdt.c require the
samsung,cluster-index property, which is not present in watchdog@10050000.
Should the binding and driver support (or an appropriate fallback compatible
and samsung,cluster-index property) be in place before enabling &watchdog?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261019-for-next-lucky7-v2-0-c4ecab4b1c4c@member.fsf.org?part=5
^ permalink raw reply [flat|nested] 18+ messages in thread* Re: [PATCH v2 5/5] arm64: dts: exynos: Add initial support for Samsung Galaxy Watch FE
2026-10-19 10:32 ` sashiko-bot
@ 2026-10-19 11:03 ` Aiden Isik
0 siblings, 0 replies; 18+ messages in thread
From: Aiden Isik @ 2026-10-19 11:03 UTC (permalink / raw)
To: sashiko-reviews; +Cc: Aiden Isik, devicetree, robh, conor+dt
> Without an entry in arch/arm64/boot/dts/exynos/Makefile,
> exynos5515-lucky7.dts will not be compiled into exynos5515-lucky7.dtb during
> make dtbs, and both exynos5515-lucky7.dts and exynos5515.dtsi will be
> skipped during make dtbs_check schema validation.
Will fix this probably tomorrow, after I've tidied and sent
all of my other patches for this merge window.
Can't believe I missed this. I checked so thoroughly :(
> Should the binding and driver support (or an appropriate fallback compatible
> and samsung,cluster-index property) be in place before enabling &watchdog?
The dependency listed in the cover letter is for this.
^ permalink raw reply [flat|nested] 18+ messages in thread