Documentation / devicetree / bindings / rtc / st,stm32-rtc.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/rtc/st,stm32-rtc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: STMicroelectronics STM32 Real Time Clock

maintainers:
  - Gabriel Fernandez <gabriel.fernandez@foss.st.com>

properties:
  compatible:
    enum:
      - st,stm32-rtc
      - st,stm32h7-rtc
      - st,stm32mp1-rtc

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 2

  clock-names:
    items:
      - const: pclk
      - const: rtc_ck

  interrupts:
    maxItems: 1

  st,syscfg:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      minItems: 3
      maxItems: 3
    description: |
      Phandle/offset/mask triplet. The phandle to pwrcfg used to
      access control register at offset, and change the dbp (Disable Backup
      Protection) bit represented by the mask, mandatory to disable/enable backup
      domain (RTC registers) write protection.

  assigned-clocks:
    description: |
      override default rtc_ck parent clock reference to the rtc_ck clock entry
    maxItems: 1

  assigned-clock-parents:
    description: |
      override default rtc_ck parent clock phandle of the new parent clock of rtc_ck
    maxItems: 1

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: st,stm32-rtc

    then:
      properties:
        clocks:
          minItems: 1
          maxItems: 1

        clock-names: false

      required:
        - st,syscfg

  - if:
      properties:
        compatible:
          contains:
            const: st,stm32h7-rtc

    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 2

      required:
        - clock-names
        - st,syscfg

  - if:
      properties:
        compatible:
          contains:
            const: st,stm32mp1-rtc

    then:
      properties:
        clocks:
          minItems: 2
          maxItems: 2

        assigned-clocks: false
        assigned-clock-parents: false

      required:
        - clock-names

required:
  - compatible
  - reg
  - clocks
  - interrupts

additionalProperties: false

examples:
  - |
    #include <dt-bindings/mfd/stm32f4-rcc.h>
    #include <dt-bindings/clock/stm32fx-clock.h>
    rtc@40002800 {
      compatible = "st,stm32-rtc";
      reg = <0x40002800 0x400>;
      clocks = <&rcc 1 CLK_RTC>;
      assigned-clocks = <&rcc 1 CLK_RTC>;
      assigned-clock-parents = <&rcc 1 CLK_LSE>;
      interrupt-parent = <&exti>;
      interrupts = <17 1>;
      st,syscfg = <&pwrcfg 0x00 0x100>;
    };

  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/clock/stm32mp1-clks.h>
    rtc@5c004000 {
      compatible = "st,stm32mp1-rtc";
      reg = <0x5c004000 0x400>;
      clocks = <&rcc RTCAPB>, <&rcc RTC>;
      clock-names = "pclk", "rtc_ck";
      interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
    };

...