Apple Silicon Macs (M1, etc.) have an RTC that is part of the PMU IC,
but most of the PMU functionality is abstracted out by the SMC.
An additional RTC offset stored inside NVMEM is required to compute
the current date/time.
Signed-off-by: Sven Peter <sven@kernel.org>
---
.../devicetree/bindings/mfd/apple,smc.yaml | 9 ++++++
.../devicetree/bindings/rtc/apple,smc-rtc.yaml | 35 ++++++++++++++++++++++
MAINTAINERS | 1 +
3 files changed, 45 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/apple,smc.yaml b/Documentation/devicetree/bindings/mfd/apple,smc.yaml
index 8a10e270d421ecd703848f64af597de351fcfd74..38f077867bdeedba8a486a63e366e9c943a75681 100644
--- a/Documentation/devicetree/bindings/mfd/apple,smc.yaml
+++ b/Documentation/devicetree/bindings/mfd/apple,smc.yaml
@@ -41,6 +41,9 @@ properties:
reboot:
$ref: /schemas/power/reset/apple,smc-reboot.yaml
+ rtc:
+ $ref: /schemas/rtc/apple,smc-rtc.yaml
+
additionalProperties: false
required:
@@ -75,5 +78,11 @@ examples:
nvmem-cell-names = "shutdown_flag", "boot_stage",
"boot_error_count", "panic_count";
};
+
+ rtc {
+ compatible = "apple,smc-rtc";
+ nvmem-cells = <&rtc_offset>;
+ nvmem-cell-names = "rtc_offset";
+ };
};
};
diff --git a/Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml b/Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..607b610665a28b3ea2e86bd90cb5f3f28ebac726
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/apple,smc-rtc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Apple SMC RTC
+
+description:
+ Apple Silicon Macs (M1, etc.) have an RTC that is part of the PMU IC,
+ but most of the PMU functionality is abstracted out by the SMC.
+ An additional RTC offset stored inside NVMEM is required to compute
+ the current date/time.
+
+maintainers:
+ - Sven Peter <sven@kernel.org>
+
+properties:
+ compatible:
+ const: apple,smc-rtc
+
+ nvmem-cells:
+ items:
+ - description: 48bit RTC offset, specified in 32768 (2^15) Hz clock ticks
+
+ nvmem-cell-names:
+ items:
+ - const: rtc_offset
+
+required:
+ - compatible
+ - nvmem-cells
+ - nvmem-cell-names
+
+additionalProperties: false
diff --git a/MAINTAINERS b/MAINTAINERS
index fe168477caa45799dfe07de2f54de6d6a1ce0615..aaef8634985b35f54de1123ebb4176602066d177 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2397,6 +2397,7 @@ F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml
F: Documentation/devicetree/bindings/power/apple*
F: Documentation/devicetree/bindings/power/reset/apple,smc-reboot.yaml
F: Documentation/devicetree/bindings/pwm/apple,s5l-fpwm.yaml
+F: Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml
F: Documentation/devicetree/bindings/spi/apple,spi.yaml
F: Documentation/devicetree/bindings/spmi/apple,spmi.yaml
F: Documentation/devicetree/bindings/watchdog/apple,wdt.yaml
--
2.34.1
On 12/08/2025 20:25, Sven Peter wrote: > +maintainers: > + - Sven Peter <sven@kernel.org> > + > +properties: > + compatible: > + const: apple,smc-rtc > + No resources except nvmem? This should be folded into the parent. Don't create device node to instantiate drivers. > + nvmem-cells: > + items: > + - description: 48bit RTC offset, specified in 32768 (2^15) Hz clock ticks > + > + nvmem-cell-names: > + items: > + - const: rtc_offset > + > +required: > + - compatible > + - nvmem-cells > + - nvmem-cell-names > + > +additionalProperties: false Missing example. If this is part of other device (like MFD), then the one there should be extended here. > Best regards, Krzysztof
On Wed, Aug 13, 2025 at 08:14:51AM +0200, Krzysztof Kozlowski wrote: > On 12/08/2025 20:25, Sven Peter wrote: > > +maintainers: > > + - Sven Peter <sven@kernel.org> > > + > > +properties: > > + compatible: > > + const: apple,smc-rtc > > + > > No resources except nvmem? This should be folded into the parent. Don't > create device node to instantiate drivers. Well, the reboot node has nvmem entries too, so probably better to keep this as child node. Is there more functionality planned/needed here (for the mfd)? If so, please send it all at once. One child node at a time makes DT maintainers grumpy. Rob
On 14.08.25 23:19, Rob Herring wrote: > On Wed, Aug 13, 2025 at 08:14:51AM +0200, Krzysztof Kozlowski wrote: >> On 12/08/2025 20:25, Sven Peter wrote: >>> +maintainers: >>> + - Sven Peter <sven@kernel.org> >>> + >>> +properties: >>> + compatible: >>> + const: apple,smc-rtc >>> + >> >> No resources except nvmem? This should be folded into the parent. Don't >> create device node to instantiate drivers. > > Well, the reboot node has nvmem entries too, so probably better to keep > this as child node. > > Is there more functionality planned/needed here (for the mfd)? If so, > please send it all at once. One child node at a time makes DT > maintainers grumpy. I'd very much like to avoid that! There's one more driver (hwmon) that needs another child node and two more sub-devices that don't need any or expose any resources (hid for the power button and power/supply for batteries). I've talked to James (who wrote hwmon) and he's going to submit the hwmon series together with at least rtc (and hid) so that you can see all additional bindings at once. Thanks, Sven
> From: Sven Peter <sven@kernel.org> > Date: Tue, 12 Aug 2025 18:25:15 +0000 > > Apple Silicon Macs (M1, etc.) have an RTC that is part of the PMU IC, > but most of the PMU functionality is abstracted out by the SMC. > An additional RTC offset stored inside NVMEM is required to compute > the current date/time. > > Signed-off-by: Sven Peter <sven@kernel.org> Reviewd-by: Mark Kettenis <kettenis@openbsd.org> > --- > .../devicetree/bindings/mfd/apple,smc.yaml | 9 ++++++ > .../devicetree/bindings/rtc/apple,smc-rtc.yaml | 35 ++++++++++++++++++++++ > MAINTAINERS | 1 + > 3 files changed, 45 insertions(+) > > diff --git a/Documentation/devicetree/bindings/mfd/apple,smc.yaml b/Documentation/devicetree/bindings/mfd/apple,smc.yaml > index 8a10e270d421ecd703848f64af597de351fcfd74..38f077867bdeedba8a486a63e366e9c943a75681 100644 > --- a/Documentation/devicetree/bindings/mfd/apple,smc.yaml > +++ b/Documentation/devicetree/bindings/mfd/apple,smc.yaml > @@ -41,6 +41,9 @@ properties: > reboot: > $ref: /schemas/power/reset/apple,smc-reboot.yaml > > + rtc: > + $ref: /schemas/rtc/apple,smc-rtc.yaml > + > additionalProperties: false > > required: > @@ -75,5 +78,11 @@ examples: > nvmem-cell-names = "shutdown_flag", "boot_stage", > "boot_error_count", "panic_count"; > }; > + > + rtc { > + compatible = "apple,smc-rtc"; > + nvmem-cells = <&rtc_offset>; > + nvmem-cell-names = "rtc_offset"; > + }; > }; > }; > diff --git a/Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml b/Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml > new file mode 100644 > index 0000000000000000000000000000000000000000..607b610665a28b3ea2e86bd90cb5f3f28ebac726 > --- /dev/null > +++ b/Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml > @@ -0,0 +1,35 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/rtc/apple,smc-rtc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Apple SMC RTC > + > +description: > + Apple Silicon Macs (M1, etc.) have an RTC that is part of the PMU IC, > + but most of the PMU functionality is abstracted out by the SMC. > + An additional RTC offset stored inside NVMEM is required to compute > + the current date/time. > + > +maintainers: > + - Sven Peter <sven@kernel.org> > + > +properties: > + compatible: > + const: apple,smc-rtc > + > + nvmem-cells: > + items: > + - description: 48bit RTC offset, specified in 32768 (2^15) Hz clock ticks > + > + nvmem-cell-names: > + items: > + - const: rtc_offset > + > +required: > + - compatible > + - nvmem-cells > + - nvmem-cell-names > + > +additionalProperties: false > diff --git a/MAINTAINERS b/MAINTAINERS > index fe168477caa45799dfe07de2f54de6d6a1ce0615..aaef8634985b35f54de1123ebb4176602066d177 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -2397,6 +2397,7 @@ F: Documentation/devicetree/bindings/pinctrl/apple,pinctrl.yaml > F: Documentation/devicetree/bindings/power/apple* > F: Documentation/devicetree/bindings/power/reset/apple,smc-reboot.yaml > F: Documentation/devicetree/bindings/pwm/apple,s5l-fpwm.yaml > +F: Documentation/devicetree/bindings/rtc/apple,smc-rtc.yaml > F: Documentation/devicetree/bindings/spi/apple,spi.yaml > F: Documentation/devicetree/bindings/spmi/apple,spmi.yaml > F: Documentation/devicetree/bindings/watchdog/apple,wdt.yaml > > -- > 2.34.1 > > > >
© 2016 - 2025 Red Hat, Inc.