| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/soc/fsl/cpm_qe/fsl,cpm1-tsa.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: PowerQUICC CPM Time-slot assigner (TSA) controller |
| |
| maintainers: |
| - Herve Codina <herve.codina@bootlin.com> |
| |
| description: |
| The TSA is the time-slot assigner that can be found on some PowerQUICC SoC. |
| Its purpose is to route some TDM time-slots to other internal serial |
| controllers. |
| |
| properties: |
| compatible: |
| items: |
| - enum: |
| - fsl,mpc885-tsa |
| - fsl,mpc866-tsa |
| - const: fsl,cpm1-tsa |
| |
| reg: |
| items: |
| - description: SI (Serial Interface) register base |
| - description: SI RAM base |
| |
| reg-names: |
| items: |
| - const: si_regs |
| - const: si_ram |
| |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| patternProperties: |
| '^tdm@[0-1]$': |
| description: |
| The TDM managed by this controller |
| type: object |
| |
| additionalProperties: false |
| |
| properties: |
| reg: |
| minimum: 0 |
| maximum: 1 |
| description: |
| The TDM number for this TDM, 0 for TDMa and 1 for TDMb |
| |
| fsl,common-rxtx-pins: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| The hardware can use four dedicated pins for Tx clock, Tx sync, Rx |
| clock and Rx sync or use only two pins, Tx/Rx clock and Tx/Rx sync. |
| Without the 'fsl,common-rxtx-pins' property, the four pins are used. |
| With the 'fsl,common-rxtx-pins' property, two pins are used. |
| |
| clocks: |
| minItems: 2 |
| items: |
| - description: External clock connected to L1RSYNC pin |
| - description: External clock connected to L1RCLK pin |
| - description: External clock connected to L1TSYNC pin |
| - description: External clock connected to L1TCLK pin |
| |
| clock-names: |
| minItems: 2 |
| items: |
| - const: l1rsync |
| - const: l1rclk |
| - const: l1tsync |
| - const: l1tclk |
| |
| fsl,rx-frame-sync-delay-bits: |
| enum: [0, 1, 2, 3] |
| default: 0 |
| description: | |
| Receive frame sync delay in number of bits. |
| Indicates the delay between the Rx sync and the first bit of the Rx |
| frame. 0 for no bit delay. 1, 2 or 3 for 1, 2 or 3 bits delay. |
| |
| fsl,tx-frame-sync-delay-bits: |
| enum: [0, 1, 2, 3] |
| default: 0 |
| description: | |
| Transmit frame sync delay in number of bits. |
| Indicates the delay between the Tx sync and the first bit of the Tx |
| frame. 0 for no bit delay. 1, 2 or 3 for 1, 2 or 3 bits delay. |
| |
| fsl,clock-falling-edge: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| Data is sent on falling edge of the clock (and received on the rising |
| edge). If 'clock-falling-edge' is not present, data is sent on the |
| rising edge (and received on the falling edge). |
| |
| fsl,fsync-rising-edge: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| Frame sync pulses are sampled with the rising edge of the channel |
| clock. If 'fsync-rising-edge' is not present, pulses are sampled with |
| the falling edge. |
| |
| fsl,double-speed-clock: |
| $ref: /schemas/types.yaml#/definitions/flag |
| description: |
| The channel clock is twice the data rate. |
| |
| patternProperties: |
| '^fsl,[rt]x-ts-routes$': |
| $ref: /schemas/types.yaml#/definitions/uint32-matrix |
| description: | |
| A list of tuple that indicates the Tx or Rx time-slots routes. |
| items: |
| items: |
| - description: |
| The number of time-slots |
| minimum: 1 |
| maximum: 64 |
| - description: | |
| The source (Tx) or destination (Rx) serial interface |
| (dt-bindings/soc/cpm1-fsl,tsa.h defines these values) |
| - 0: No destination |
| - 1: SCC2 |
| - 2: SCC3 |
| - 3: SCC4 |
| - 4: SMC1 |
| - 5: SMC2 |
| enum: [0, 1, 2, 3, 4, 5] |
| minItems: 1 |
| maxItems: 64 |
| |
| allOf: |
| # If fsl,common-rxtx-pins is present, only 2 clocks are needed. |
| # Else, the 4 clocks must be present. |
| - if: |
| required: |
| - fsl,common-rxtx-pins |
| then: |
| properties: |
| clocks: |
| maxItems: 2 |
| clock-names: |
| maxItems: 2 |
| else: |
| properties: |
| clocks: |
| minItems: 4 |
| clock-names: |
| minItems: 4 |
| |
| required: |
| - reg |
| - clocks |
| - clock-names |
| |
| required: |
| - compatible |
| - reg |
| - reg-names |
| - '#address-cells' |
| - '#size-cells' |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/soc/cpm1-fsl,tsa.h> |
| |
| tsa@ae0 { |
| compatible = "fsl,mpc885-tsa", "fsl,cpm1-tsa"; |
| reg = <0xae0 0x10>, |
| <0xc00 0x200>; |
| reg-names = "si_regs", "si_ram"; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| tdm@0 { |
| /* TDMa */ |
| reg = <0>; |
| |
| clocks = <&clk_l1rsynca>, <&clk_l1rclka>; |
| clock-names = "l1rsync", "l1rclk"; |
| |
| fsl,common-rxtx-pins; |
| fsl,fsync-rising-edge; |
| |
| fsl,tx-ts-routes = <2 0>, /* TS 0..1 */ |
| <24 FSL_CPM_TSA_SCC4>, /* TS 2..25 */ |
| <1 0>, /* TS 26 */ |
| <5 FSL_CPM_TSA_SCC3>; /* TS 27..31 */ |
| |
| fsl,rx-ts-routes = <2 0>, /* TS 0..1 */ |
| <24 FSL_CPM_TSA_SCC4>, /* 2..25 */ |
| <1 0>, /* TS 26 */ |
| <5 FSL_CPM_TSA_SCC3>; /* TS 27..31 */ |
| }; |
| }; |