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

146 lines
3.9 KiB
YAML
Raw Permalink Normal View History

# 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:
- Grygorii Strashko <grygorii.strashko@ti.com>
- Sekhar Nori <nsekhar@ti.com>
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:
dt-bindings: Add missing array size constraints DT properties which can have multiple entries need to specify what the entries are and define how many entries there can be. In the case of only a single entry, just 'maxItems: 1' is sufficient. Add the missing entry constraints. These were found with a modified meta-schema. Unfortunately, there are a few cases where the size constraints are not defined such as common bindings, so the meta-schema can't be part of the normal checks. Cc: Jens Axboe <axboe@kernel.dk> Cc: Stephen Boyd <sboyd@kernel.org> Cc: Thierry Reding <thierry.reding@gmail.com> Cc: MyungJoo Ham <myungjoo.ham@samsung.com> Cc: Chanwoo Choi <cw00.choi@samsung.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com> Cc: Jonathan Cameron <jic23@kernel.org> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Marc Zyngier <maz@kernel.org> Cc: Mauro Carvalho Chehab <mchehab@kernel.org> Cc: Chen-Yu Tsai <wens@csie.org> Cc: Ulf Hansson <ulf.hansson@linaro.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Jakub Kicinski <kuba@kernel.org> Cc: Sebastian Reichel <sre@kernel.org> Cc: Ohad Ben-Cohen <ohad@wizery.com> Cc: Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by: Sebastian Reichel <sre@kernel.org> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> #for-iio Acked-by: Chanwoo Choi <cw00.choi@samsung.com> Reviewed-by: Suman Anna <s-anna@ti.com> Acked-by: Paul Cercueil <paul@crapouillou.net> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Acked-by: Bartosz Golaszewski <bgolaszewski@baylibre.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Link: https://lore.kernel.org/r/20210104230253.2805217-1-robh@kernel.org Signed-off-by: Rob Herring <robh@kernel.org>
2021-01-05 07:02:53 +08:00
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)
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>;
};
};