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