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 | # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/ptp/fsl,ptp.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Freescale QorIQ 1588 timer based PTP clock maintainers: - Frank Li <Frank.Li@nxp.com> properties: compatible: enum: - fsl,etsec-ptp - fsl,fman-ptp-timer - fsl,dpaa2-ptp - fsl,enetc-ptp reg: maxItems: 1 interrupts: maxItems: 1 clocks: maxItems: 1 fsl,cksel: $ref: /schemas/types.yaml#/definitions/uint32 description: | Timer reference clock source. Reference clock source is determined by the value, which is holded in CKSEL bits in TMR_CTRL register. "fsl,cksel" property keeps the value, which will be directly written in those bits, that is why, according to reference manual, the next clock sources can be used: For eTSEC, <0> - external high precision timer reference clock (TSEC_TMR_CLK input is used for this purpose); <1> - eTSEC system clock; <2> - eTSEC1 transmit clock; <3> - RTC clock input. For DPAA FMan, <0> - external high precision timer reference clock (TMR_1588_CLK) <1> - MAC system clock (1/2 FMan clock) <2> - reserved <3> - RTC clock oscillator fsl,tclk-period: $ref: /schemas/types.yaml#/definitions/uint32 description: Timer reference clock period in nanoseconds. fsl,tmr-prsc: $ref: /schemas/types.yaml#/definitions/uint32 description: Prescaler, divides the output clock. fsl,tmr-add: $ref: /schemas/types.yaml#/definitions/uint32 description: Frequency compensation value. fsl,tmr-fiper1: $ref: /schemas/types.yaml#/definitions/uint32 description: Fixed interval period pulse generator. fsl,tmr-fiper2: $ref: /schemas/types.yaml#/definitions/uint32 description: Fixed interval period pulse generator. fsl,tmr-fiper3: $ref: /schemas/types.yaml#/definitions/uint32 description: Fixed interval period pulse generator. Supported only on DPAA2 and ENETC hardware. fsl,max-adj: $ref: /schemas/types.yaml#/definitions/uint32 description: | Maximum frequency adjustment in parts per billion. These properties set the operational parameters for the PTP clock. You must choose these carefully for the clock to work right. Here is how to figure good values: TimerOsc = selected reference clock MHz tclk_period = desired clock period nanoseconds NominalFreq = 1000 / tclk_period MHz FreqDivRatio = TimerOsc / NominalFreq (must be greater that 1.0) tmr_add = ceil(2^32 / FreqDivRatio) OutputClock = NominalFreq / tmr_prsc MHz PulseWidth = 1 / OutputClock microseconds FiperFreq1 = desired frequency in Hz FiperDiv1 = 1000000 * OutputClock / FiperFreq1 tmr_fiper1 = tmr_prsc * tclk_period * FiperDiv1 - tclk_period max_adj = 1000000000 * (FreqDivRatio - 1.0) - 1 The calculation for tmr_fiper2 is the same as for tmr_fiper1. The driver expects that tmr_fiper1 will be correctly set to produce a 1 Pulse Per Second (PPS) signal, since this will be offered to the PPS subsystem to synchronize the Linux clock. When this attribute is not used, the IEEE 1588 timer reference clock will use the eTSEC system clock (for Gianfar) or the MAC system clock (for DPAA). fsl,extts-fifo: $ref: /schemas/types.yaml#/definitions/flag description: The presence of this property indicates hardware support for the external trigger stamp FIFO little-endian: $ref: /schemas/types.yaml#/definitions/flag description: The presence of this property indicates the 1588 timer support for the external trigger stamp FIFO. IP block is little-endian mode. The default endian mode is big-endian. required: - compatible - reg additionalProperties: false examples: - | #include <dt-bindings/interrupt-controller/irq.h> phc@24e00 { compatible = "fsl,etsec-ptp"; reg = <0x24e00 0xb0>; interrupts = <12 IRQ_TYPE_LEVEL_LOW>; interrupt-parent = <&ipic>; fsl,cksel = <1>; fsl,tclk-period = <10>; fsl,tmr-prsc = <100>; fsl,tmr-add = <0x999999a4>; fsl,tmr-fiper1 = <0x3b9ac9f6>; fsl,tmr-fiper2 = <0x00018696>; fsl,max-adj = <659999998>; }; |