diff mbox series

dt-bindings: rtc: pcf2127: update bindings

Message ID 20201219013418.3474461-1-alexandre.belloni@bootlin.com
State Superseded
Headers show
Series dt-bindings: rtc: pcf2127: update bindings | expand

Commit Message

Alexandre Belloni Dec. 19, 2020, 1:34 a.m. UTC
pcf2127, pcf2129 and pca2129 support start-year and reset-source.

Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
---
 .../devicetree/bindings/rtc/nxp,pcf2127.yaml  | 54 +++++++++++++++++++
 .../devicetree/bindings/rtc/trivial-rtc.yaml  |  6 ---
 2 files changed, 54 insertions(+), 6 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/rtc/nxp,pcf2127.yaml

Comments

Rasmus Villemoes Dec. 21, 2020, 9:17 p.m. UTC | #1
On 19/12/2020 02.34, Alexandre Belloni wrote:
> pcf2127, pcf2129 and pca2129 support start-year and reset-source.
> 

No, the 2129 variant doesn't even have a reset output pin. Not sure if
there's any way to reflect that, and it probably doesn't matter, since
nobody's going to add the reset-source property to a 2129 node. But the
commit message is a bit misleading.

Rasmus
Alexandre Belloni Dec. 21, 2020, 9:39 p.m. UTC | #2
On 21/12/2020 22:17:54+0100, Rasmus Villemoes wrote:
> On 19/12/2020 02.34, Alexandre Belloni wrote:
> > pcf2127, pcf2129 and pca2129 support start-year and reset-source.
> > 
> 
> No, the 2129 variant doesn't even have a reset output pin. Not sure if
> there's any way to reflect that, and it probably doesn't matter, since
> nobody's going to add the reset-source property to a 2129 node. But the
> commit message is a bit misleading.
> 

Ah sure, I forgot about that., the simplest way is then to not mov
pcf/pca2129 out of trivial
Alexandre Belloni Jan. 26, 2021, 10:48 p.m. UTC | #3
On 21/12/2020 22:17:54+0100, Rasmus Villemoes wrote:
> On 19/12/2020 02.34, Alexandre Belloni wrote:
> > pcf2127, pcf2129 and pca2129 support start-year and reset-source.
> > 
> 
> No, the 2129 variant doesn't even have a reset output pin. Not sure if
> there's any way to reflect that, and it probably doesn't matter, since
> nobody's going to add the reset-source property to a 2129 node. But the
> commit message is a bit misleading.
> 

Actually no, the INT pin can be used as a reset, the pcf/pca2129
can be used as a watchdog and so it may need the reset-source property.
Rasmus Villemoes Jan. 27, 2021, 1:07 p.m. UTC | #4
On 26/01/2021 23.48, Alexandre Belloni wrote:
> On 21/12/2020 22:17:54+0100, Rasmus Villemoes wrote:
>> On 19/12/2020 02.34, Alexandre Belloni wrote:
>>> pcf2127, pcf2129 and pca2129 support start-year and reset-source.
>>>
>>
>> No, the 2129 variant doesn't even have a reset output pin. Not sure if
>> there's any way to reflect that, and it probably doesn't matter, since
>> nobody's going to add the reset-source property to a 2129 node. But the
>> commit message is a bit misleading.
>>
> 
> Actually no, the INT pin can be used as a reset, the pcf/pca2129
> can be used as a watchdog and so it may need the reset-source property.

Unless I'm missing something, that would require some rather creative
extra circuitry: The interrupt pin is kept low until the appropriate bit
in the rtc is cleared, so if that is routed directly to a reset pin on
the SOC, the SOC would be kept in reset indefinitely.

Rasmus
Alexandre Belloni Jan. 27, 2021, 1:18 p.m. UTC | #5
On 27/01/2021 14:07:59+0100, Rasmus Villemoes wrote:
> On 26/01/2021 23.48, Alexandre Belloni wrote:
> > On 21/12/2020 22:17:54+0100, Rasmus Villemoes wrote:
> >> On 19/12/2020 02.34, Alexandre Belloni wrote:
> >>> pcf2127, pcf2129 and pca2129 support start-year and reset-source.
> >>>
> >>
> >> No, the 2129 variant doesn't even have a reset output pin. Not sure if
> >> there's any way to reflect that, and it probably doesn't matter, since
> >> nobody's going to add the reset-source property to a 2129 node. But the
> >> commit message is a bit misleading.
> >>
> > 
> > Actually no, the INT pin can be used as a reset, the pcf/pca2129
> > can be used as a watchdog and so it may need the reset-source property.
> 
> Unless I'm missing something, that would require some rather creative
> extra circuitry: The interrupt pin is kept low until the appropriate bit
> in the rtc is cleared, so if that is routed directly to a reset pin on
> the SOC, the SOC would be kept in reset indefinitely.
> 

You mean inverting the level of INT? I don't think this is creative or
complicated...
And anyway, INT# is active low, like RST# so if the SoC has an RST#
input, this should just work.
Rasmus Villemoes Jan. 27, 2021, 1:49 p.m. UTC | #6
On 27/01/2021 14.18, Alexandre Belloni wrote:
> On 27/01/2021 14:07:59+0100, Rasmus Villemoes wrote:
>> On 26/01/2021 23.48, Alexandre Belloni wrote:
>>> On 21/12/2020 22:17:54+0100, Rasmus Villemoes wrote:
>>>> On 19/12/2020 02.34, Alexandre Belloni wrote:
>>>>> pcf2127, pcf2129 and pca2129 support start-year and reset-source.
>>>>>
>>>>
>>>> No, the 2129 variant doesn't even have a reset output pin. Not sure if
>>>> there's any way to reflect that, and it probably doesn't matter, since
>>>> nobody's going to add the reset-source property to a 2129 node. But the
>>>> commit message is a bit misleading.
>>>>
>>>
>>> Actually no, the INT pin can be used as a reset, the pcf/pca2129
>>> can be used as a watchdog and so it may need the reset-source property.
>>
>> Unless I'm missing something, that would require some rather creative
>> extra circuitry: The interrupt pin is kept low until the appropriate bit
>> in the rtc is cleared, so if that is routed directly to a reset pin on
>> the SOC, the SOC would be kept in reset indefinitely.
>>
> 
> You mean inverting the level of INT? I don't think this is creative or
> complicated...

No, that is not what I meant nor what I wrote.

> And anyway, INT# is active low, like RST# so if the SoC has an RST#
> input, this should just work.

AFAIK (and that may certainly be wrong), most SOCs require a _pulse_ on
their reset input; asserting and keeping the reset pin low would just
keep the cpu in reset, never allowing it to leave that state and then
talk to the RTC to clear the bit that would clear the interrupt.

That's also how the 2127 RST# behaves: it generates a pulse (of width
244us or 15ms). The INT# and RST# pins cannot be used interchangeably.

Rasmus
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/rtc/nxp,pcf2127.yaml b/Documentation/devicetree/bindings/rtc/nxp,pcf2127.yaml
new file mode 100644
index 000000000000..daa479b395a6
--- /dev/null
+++ b/Documentation/devicetree/bindings/rtc/nxp,pcf2127.yaml
@@ -0,0 +1,54 @@ 
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rtc/nxp,pcf2127.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: NXP PCF2127, PXF2129 and PCA2129 Real Time Clocks
+
+allOf:
+  - $ref: "rtc.yaml#"
+
+maintainers:
+  - Alexandre Belloni <alexandre.belloni@bootlin.com>
+
+properties:
+  compatible:
+    enum:
+      - nxp,pcf2127
+      - nxp,pcf2129
+      - nxp,pca2129
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  start-year: true
+
+  reset-source: true
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        rtc@51 {
+            compatible = "nxp,pcf2127";
+            reg = <0x51>;
+            pinctrl-0 = <&rtc_nint_pins>;
+            interrupts-extended = <&gpio1 16 IRQ_TYPE_LEVEL_HIGH>;
+            reset-source;
+        };
+    };
+
+...
diff --git a/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml b/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml
index c7d14de214c4..17816b734a51 100644
--- a/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml
+++ b/Documentation/devicetree/bindings/rtc/trivial-rtc.yaml
@@ -48,12 +48,6 @@  properties:
       - microcrystal,rv3029
       # Real Time Clock
       - microcrystal,rv8523
-      # Real-time clock
-      - nxp,pcf2127
-      # Real-time clock
-      - nxp,pcf2129
-      # Real-time clock
-      - nxp,pca2129
       # Real-time Clock Module
       - pericom,pt7c4338
       # I2C bus SERIAL INTERFACE REAL-TIME CLOCK IC