xref: /freebsd/sys/contrib/device-tree/Bindings/soc/fsl/cpm_qe/fsl,qe-tsa.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
1*b2d2a78aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*b2d2a78aSEmmanuel Vadot%YAML 1.2
3*b2d2a78aSEmmanuel Vadot---
4*b2d2a78aSEmmanuel Vadot$id: http://devicetree.org/schemas/soc/fsl/cpm_qe/fsl,qe-tsa.yaml#
5*b2d2a78aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*b2d2a78aSEmmanuel Vadot
7*b2d2a78aSEmmanuel Vadottitle: PowerQUICC QE Time-slot assigner (TSA) controller
8*b2d2a78aSEmmanuel Vadot
9*b2d2a78aSEmmanuel Vadotmaintainers:
10*b2d2a78aSEmmanuel Vadot  - Herve Codina <herve.codina@bootlin.com>
11*b2d2a78aSEmmanuel Vadot
12*b2d2a78aSEmmanuel Vadotdescription:
13*b2d2a78aSEmmanuel Vadot  The TSA is the time-slot assigner that can be found on some PowerQUICC SoC.
14*b2d2a78aSEmmanuel Vadot  Its purpose is to route some TDM time-slots to other internal serial
15*b2d2a78aSEmmanuel Vadot  controllers.
16*b2d2a78aSEmmanuel Vadot
17*b2d2a78aSEmmanuel Vadotproperties:
18*b2d2a78aSEmmanuel Vadot  compatible:
19*b2d2a78aSEmmanuel Vadot    items:
20*b2d2a78aSEmmanuel Vadot      - enum:
21*b2d2a78aSEmmanuel Vadot          - fsl,mpc8321-tsa
22*b2d2a78aSEmmanuel Vadot      - const: fsl,qe-tsa
23*b2d2a78aSEmmanuel Vadot
24*b2d2a78aSEmmanuel Vadot  reg:
25*b2d2a78aSEmmanuel Vadot    items:
26*b2d2a78aSEmmanuel Vadot      - description: SI (Serial Interface) register base
27*b2d2a78aSEmmanuel Vadot      - description: SI RAM base
28*b2d2a78aSEmmanuel Vadot
29*b2d2a78aSEmmanuel Vadot  reg-names:
30*b2d2a78aSEmmanuel Vadot    items:
31*b2d2a78aSEmmanuel Vadot      - const: si_regs
32*b2d2a78aSEmmanuel Vadot      - const: si_ram
33*b2d2a78aSEmmanuel Vadot
34*b2d2a78aSEmmanuel Vadot  '#address-cells':
35*b2d2a78aSEmmanuel Vadot    const: 1
36*b2d2a78aSEmmanuel Vadot
37*b2d2a78aSEmmanuel Vadot  '#size-cells':
38*b2d2a78aSEmmanuel Vadot    const: 0
39*b2d2a78aSEmmanuel Vadot
40*b2d2a78aSEmmanuel VadotpatternProperties:
41*b2d2a78aSEmmanuel Vadot  '^tdm@[0-3]$':
42*b2d2a78aSEmmanuel Vadot    description:
43*b2d2a78aSEmmanuel Vadot      The TDM managed by this controller
44*b2d2a78aSEmmanuel Vadot    type: object
45*b2d2a78aSEmmanuel Vadot
46*b2d2a78aSEmmanuel Vadot    additionalProperties: false
47*b2d2a78aSEmmanuel Vadot
48*b2d2a78aSEmmanuel Vadot    properties:
49*b2d2a78aSEmmanuel Vadot      reg:
50*b2d2a78aSEmmanuel Vadot        minimum: 0
51*b2d2a78aSEmmanuel Vadot        maximum: 3
52*b2d2a78aSEmmanuel Vadot        description:
53*b2d2a78aSEmmanuel Vadot          The TDM number for this TDM, 0 for TDMa, 1 for TDMb, 2 for TDMc and 3
54*b2d2a78aSEmmanuel Vadot          for TDMd.
55*b2d2a78aSEmmanuel Vadot
56*b2d2a78aSEmmanuel Vadot      fsl,common-rxtx-pins:
57*b2d2a78aSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/flag
58*b2d2a78aSEmmanuel Vadot        description:
59*b2d2a78aSEmmanuel Vadot          The hardware can use four dedicated pins for Tx clock, Tx sync, Rx
60*b2d2a78aSEmmanuel Vadot          clock and Rx sync or use only two pins, Tx/Rx clock and Tx/Rx sync.
61*b2d2a78aSEmmanuel Vadot          Without the 'fsl,common-rxtx-pins' property, the four pins are used.
62*b2d2a78aSEmmanuel Vadot          With the 'fsl,common-rxtx-pins' property, two pins are used.
63*b2d2a78aSEmmanuel Vadot
64*b2d2a78aSEmmanuel Vadot      clocks:
65*b2d2a78aSEmmanuel Vadot        minItems: 2
66*b2d2a78aSEmmanuel Vadot        items:
67*b2d2a78aSEmmanuel Vadot          - description: Receive sync clock
68*b2d2a78aSEmmanuel Vadot          - description: Receive data clock
69*b2d2a78aSEmmanuel Vadot          - description: Transmit sync clock
70*b2d2a78aSEmmanuel Vadot          - description: Transmit data clock
71*b2d2a78aSEmmanuel Vadot
72*b2d2a78aSEmmanuel Vadot      clock-names:
73*b2d2a78aSEmmanuel Vadot        minItems: 2
74*b2d2a78aSEmmanuel Vadot        items:
75*b2d2a78aSEmmanuel Vadot          - const: rsync
76*b2d2a78aSEmmanuel Vadot          - const: rclk
77*b2d2a78aSEmmanuel Vadot          - const: tsync
78*b2d2a78aSEmmanuel Vadot          - const: tclk
79*b2d2a78aSEmmanuel Vadot
80*b2d2a78aSEmmanuel Vadot      fsl,rx-frame-sync-delay-bits:
81*b2d2a78aSEmmanuel Vadot        enum: [0, 1, 2, 3]
82*b2d2a78aSEmmanuel Vadot        default: 0
83*b2d2a78aSEmmanuel Vadot        description: |
84*b2d2a78aSEmmanuel Vadot          Receive frame sync delay in number of bits.
85*b2d2a78aSEmmanuel Vadot          Indicates the delay between the Rx sync and the first bit of the Rx
86*b2d2a78aSEmmanuel Vadot          frame.
87*b2d2a78aSEmmanuel Vadot
88*b2d2a78aSEmmanuel Vadot      fsl,tx-frame-sync-delay-bits:
89*b2d2a78aSEmmanuel Vadot        enum: [0, 1, 2, 3]
90*b2d2a78aSEmmanuel Vadot        default: 0
91*b2d2a78aSEmmanuel Vadot        description: |
92*b2d2a78aSEmmanuel Vadot          Transmit frame sync delay in number of bits.
93*b2d2a78aSEmmanuel Vadot          Indicates the delay between the Tx sync and the first bit of the Tx
94*b2d2a78aSEmmanuel Vadot          frame.
95*b2d2a78aSEmmanuel Vadot
96*b2d2a78aSEmmanuel Vadot      fsl,clock-falling-edge:
97*b2d2a78aSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/flag
98*b2d2a78aSEmmanuel Vadot        description:
99*b2d2a78aSEmmanuel Vadot          Data is sent on falling edge of the clock (and received on the rising
100*b2d2a78aSEmmanuel Vadot          edge). If not present, data is sent on the rising edge (and received
101*b2d2a78aSEmmanuel Vadot          on the falling edge).
102*b2d2a78aSEmmanuel Vadot
103*b2d2a78aSEmmanuel Vadot      fsl,fsync-rising-edge:
104*b2d2a78aSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/flag
105*b2d2a78aSEmmanuel Vadot        description:
106*b2d2a78aSEmmanuel Vadot          Frame sync pulses are sampled with the rising edge of the channel
107*b2d2a78aSEmmanuel Vadot          clock. If not present, pulses are sampled with the falling edge.
108*b2d2a78aSEmmanuel Vadot
109*b2d2a78aSEmmanuel Vadot      fsl,fsync-active-low:
110*b2d2a78aSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/flag
111*b2d2a78aSEmmanuel Vadot        description:
112*b2d2a78aSEmmanuel Vadot          Frame sync signals are active on low logic level.
113*b2d2a78aSEmmanuel Vadot          If not present, sync signals are active on high level.
114*b2d2a78aSEmmanuel Vadot
115*b2d2a78aSEmmanuel Vadot      fsl,double-speed-clock:
116*b2d2a78aSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/flag
117*b2d2a78aSEmmanuel Vadot        description:
118*b2d2a78aSEmmanuel Vadot          The channel clock is twice the data rate.
119*b2d2a78aSEmmanuel Vadot
120*b2d2a78aSEmmanuel Vadot    patternProperties:
121*b2d2a78aSEmmanuel Vadot      '^fsl,[rt]x-ts-routes$':
122*b2d2a78aSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/uint32-matrix
123*b2d2a78aSEmmanuel Vadot        description: |
124*b2d2a78aSEmmanuel Vadot          A list of tuple that indicates the Tx or Rx time-slots routes.
125*b2d2a78aSEmmanuel Vadot        items:
126*b2d2a78aSEmmanuel Vadot          items:
127*b2d2a78aSEmmanuel Vadot            - description:
128*b2d2a78aSEmmanuel Vadot                The number of time-slots
129*b2d2a78aSEmmanuel Vadot              minimum: 1
130*b2d2a78aSEmmanuel Vadot              maximum: 64
131*b2d2a78aSEmmanuel Vadot            - description: |
132*b2d2a78aSEmmanuel Vadot                The source (Tx) or destination (Rx) serial interface
133*b2d2a78aSEmmanuel Vadot                (dt-bindings/soc/qe-fsl,tsa.h defines these values)
134*b2d2a78aSEmmanuel Vadot                 - 0: No destination
135*b2d2a78aSEmmanuel Vadot                 - 1: UCC1
136*b2d2a78aSEmmanuel Vadot                 - 2: UCC2
137*b2d2a78aSEmmanuel Vadot                 - 3: UCC3
138*b2d2a78aSEmmanuel Vadot                 - 4: UCC4
139*b2d2a78aSEmmanuel Vadot                 - 5: UCC5
140*b2d2a78aSEmmanuel Vadot              enum: [0, 1, 2, 3, 4, 5]
141*b2d2a78aSEmmanuel Vadot        minItems: 1
142*b2d2a78aSEmmanuel Vadot        maxItems: 64
143*b2d2a78aSEmmanuel Vadot
144*b2d2a78aSEmmanuel Vadot    allOf:
145*b2d2a78aSEmmanuel Vadot      # If fsl,common-rxtx-pins is present, only 2 clocks are needed.
146*b2d2a78aSEmmanuel Vadot      # Else, the 4 clocks must be present.
147*b2d2a78aSEmmanuel Vadot      - if:
148*b2d2a78aSEmmanuel Vadot          required:
149*b2d2a78aSEmmanuel Vadot            - fsl,common-rxtx-pins
150*b2d2a78aSEmmanuel Vadot        then:
151*b2d2a78aSEmmanuel Vadot          properties:
152*b2d2a78aSEmmanuel Vadot            clocks:
153*b2d2a78aSEmmanuel Vadot              maxItems: 2
154*b2d2a78aSEmmanuel Vadot            clock-names:
155*b2d2a78aSEmmanuel Vadot              maxItems: 2
156*b2d2a78aSEmmanuel Vadot        else:
157*b2d2a78aSEmmanuel Vadot          properties:
158*b2d2a78aSEmmanuel Vadot            clocks:
159*b2d2a78aSEmmanuel Vadot              minItems: 4
160*b2d2a78aSEmmanuel Vadot            clock-names:
161*b2d2a78aSEmmanuel Vadot              minItems: 4
162*b2d2a78aSEmmanuel Vadot
163*b2d2a78aSEmmanuel Vadot    required:
164*b2d2a78aSEmmanuel Vadot      - reg
165*b2d2a78aSEmmanuel Vadot      - clocks
166*b2d2a78aSEmmanuel Vadot      - clock-names
167*b2d2a78aSEmmanuel Vadot
168*b2d2a78aSEmmanuel Vadotrequired:
169*b2d2a78aSEmmanuel Vadot  - compatible
170*b2d2a78aSEmmanuel Vadot  - reg
171*b2d2a78aSEmmanuel Vadot  - reg-names
172*b2d2a78aSEmmanuel Vadot  - '#address-cells'
173*b2d2a78aSEmmanuel Vadot  - '#size-cells'
174*b2d2a78aSEmmanuel Vadot
175*b2d2a78aSEmmanuel VadotadditionalProperties: false
176*b2d2a78aSEmmanuel Vadot
177*b2d2a78aSEmmanuel Vadotexamples:
178*b2d2a78aSEmmanuel Vadot  - |
179*b2d2a78aSEmmanuel Vadot    #include <dt-bindings/soc/qe-fsl,tsa.h>
180*b2d2a78aSEmmanuel Vadot
181*b2d2a78aSEmmanuel Vadot    tsa@ae0 {
182*b2d2a78aSEmmanuel Vadot        compatible = "fsl,mpc8321-tsa", "fsl,qe-tsa";
183*b2d2a78aSEmmanuel Vadot        reg = <0xae0 0x10>,
184*b2d2a78aSEmmanuel Vadot              <0xc00 0x200>;
185*b2d2a78aSEmmanuel Vadot        reg-names = "si_regs", "si_ram";
186*b2d2a78aSEmmanuel Vadot
187*b2d2a78aSEmmanuel Vadot        #address-cells = <1>;
188*b2d2a78aSEmmanuel Vadot        #size-cells = <0>;
189*b2d2a78aSEmmanuel Vadot
190*b2d2a78aSEmmanuel Vadot        tdm@0 {
191*b2d2a78aSEmmanuel Vadot            /* TDMa */
192*b2d2a78aSEmmanuel Vadot            reg = <0>;
193*b2d2a78aSEmmanuel Vadot
194*b2d2a78aSEmmanuel Vadot            clocks = <&clk_l1rsynca>, <&clk_l1rclka>;
195*b2d2a78aSEmmanuel Vadot            clock-names = "rsync", "rclk";
196*b2d2a78aSEmmanuel Vadot
197*b2d2a78aSEmmanuel Vadot            fsl,common-rxtx-pins;
198*b2d2a78aSEmmanuel Vadot            fsl,fsync-rising-edge;
199*b2d2a78aSEmmanuel Vadot
200*b2d2a78aSEmmanuel Vadot            fsl,tx-ts-routes = <2 0>,             /* TS 0..1 */
201*b2d2a78aSEmmanuel Vadot                           <24 FSL_QE_TSA_UCC4>, /* TS 2..25 */
202*b2d2a78aSEmmanuel Vadot                           <1 0>,                 /* TS 26 */
203*b2d2a78aSEmmanuel Vadot                           <5 FSL_QE_TSA_UCC3>;  /* TS 27..31 */
204*b2d2a78aSEmmanuel Vadot
205*b2d2a78aSEmmanuel Vadot            fsl,rx-ts-routes = <2 0>,             /* TS 0..1 */
206*b2d2a78aSEmmanuel Vadot                           <24 FSL_QE_TSA_UCC4>, /* 2..25 */
207*b2d2a78aSEmmanuel Vadot                           <1 0>,                 /* TS 26 */
208*b2d2a78aSEmmanuel Vadot                           <5 FSL_QE_TSA_UCC3>;  /* TS 27..31 */
209*b2d2a78aSEmmanuel Vadot        };
210*b2d2a78aSEmmanuel Vadot    };
211