Documentation / devicetree / bindings / net / ti,k3-am654-cpts.yaml


Based on kernel version 6.11. Page generated on 2024-09-24 08:21 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 142 143 144 145 146 147 148 149 150 151 152 153
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/ti,k3-am654-cpts.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: The TI AM654x/J721E Common Platform Time Sync (CPTS) module

maintainers:
  - Siddharth Vadapalli <s-vadapalli@ti.com>
  - Roger Quadros <rogerq@kernel.org>

description: |+
  The TI AM654x/J721E CPTS module is used to facilitate host control of time
  sync operations.
  Main features of CPTS module are
  - selection of multiple external clock sources
  - Software control of time sync events via interrupt or polling
  - 64-bit timestamp mode in ns with PPM and nudge adjustment.
  - hardware timestamp push inputs (HWx_TS_PUSH)
  - timestamp counter compare output (TS_COMP)
  - timestamp counter bit output (TS_SYNC)
  - periodic Generator function outputs (TS_GENFx)
  - Ethernet Enhanced Scheduled Traffic Operations (CPTS_ESTFn) (TSN)
  - external hardware timestamp push inputs (HWx_TS_PUSH) timestamping
 
   Depending on integration it enables compliance with the IEEE 1588-2008
   standard for a precision clock synchronization protocol, Ethernet Enhanced
   Scheduled Traffic Operations (CPTS_ESTFn) and PCIe Subsystem Precision Time
   Measurement (PTM).
 
  TI AM654x/J721E SoCs has several similar CPTS modules integrated into the
  different parts of the system which could be synchronized with each other
  - Main CPTS
  - MCU CPSW CPTS with IEEE 1588-2008 support
  - PCIe subsystem CPTS for PTM support
 
  Depending on CPTS module integration and when CPTS is integral part of
  another module (MCU CPSW for example) "compatible" and "reg" can
  be omitted - parent module is fully responsible for CPTS enabling and
  configuration.

properties:
  $nodename:
    pattern: "^cpts@[0-9a-f]+$"

  compatible:
    enum:
      - ti,am65-cpts
      - ti,j721e-cpts

  reg:
    maxItems: 1
    description:
      The physical base address and size of CPTS IO range

  reg-names:
    items:
      - const: cpts

  clocks:
    maxItems: 1
    description: CPTS reference clock

  clock-names:
    items:
      - const: cpts

  interrupts:
    items:
      - description: CPTS events interrupt

  interrupt-names:
    items:
      - const: cpts

  assigned-clock-parents: true

  assigned-clocks: true

  power-domains:
    maxItems: 1

  ti,cpts-ext-ts-inputs:
    $ref: /schemas/types.yaml#/definitions/uint32
    maximum: 8
    description:
      Number of hardware timestamp push inputs (HWx_TS_PUSH)

  ti,cpts-periodic-outputs:
    $ref: /schemas/types.yaml#/definitions/uint32
    maximum: 8
    description:
      Number of timestamp Generator function outputs (TS_GENFx)

  ti,pps:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2
    description: |
      The pair of HWx_TS_PUSH input and TS_GENFy output indexes used for
      PPS events generation. Platform/board specific.

  refclk-mux:
    type: object
    additionalProperties: false
    description: CPTS reference clock multiplexer clock
    properties:
      '#clock-cells':
        const: 0

      clocks:
        maxItems: 8

    required:
      - clocks

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - interrupts
  - interrupt-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 
    cpts@310d0000 {
         compatible = "ti,am65-cpts";
         reg = <0x310d0000 0x400>;
         reg-names = "cpts";
         clocks = <&main_cpts_mux>;
         clock-names = "cpts";
         interrupts-extended = <&k3_irq 163 0 IRQ_TYPE_LEVEL_HIGH>;
         interrupt-names = "cpts";
         ti,cpts-periodic-outputs = <6>;
         ti,cpts-ext-ts-inputs = <8>;
 
         main_cpts_mux: refclk-mux {
               #clock-cells = <0>;
               clocks = <&k3_clks 118 5>, <&k3_clks 118 11>,
                        <&k3_clks 157 91>, <&k3_clks 157 77>,
                        <&k3_clks 157 102>, <&k3_clks 157 80>,
                        <&k3_clks 120 3>, <&k3_clks 121 3>;
               assigned-clocks = <&main_cpts_mux>;
               assigned-clock-parents = <&k3_clks 118 11>;
         };
    };