aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Documentation/devicetree/bindings/soc/fsl/cpm_qe/fsl,cpm1-scc-qmc.yaml
blob: e802e25923aa863c775988a00bc10eb7aeb0c1e1 (plain) (blame)
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
# 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-scc-qmc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: PowerQUICC CPM QUICC Multichannel Controller (QMC)

maintainers:
  - Herve Codina <herve.codina@bootlin.com>

description:
  The QMC (QUICC Multichannel Controller) emulates up to 64 channels within one
  serial controller using the same TDM physical interface routed from TSA.

properties:
  compatible:
    items:
      - enum:
          - fsl,mpc885-scc-qmc
          - fsl,mpc866-scc-qmc
      - const: fsl,cpm1-scc-qmc

  reg:
    items:
      - description: SCC (Serial communication controller) register base
      - description: SCC parameter ram base
      - description: Dual port ram base

  reg-names:
    items:
      - const: scc_regs
      - const: scc_pram
      - const: dpram

  interrupts:
    maxItems: 1
    description: SCC interrupt line in the CPM interrupt controller

  fsl,tsa-serial:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      - items:
          - description: phandle to TSA node
          - enum: [1, 2, 3]
            description: |
              TSA serial interface (dt-bindings/soc/cpm1-fsl,tsa.h defines these
              values)
               - 1: SCC2
               - 2: SCC3
               - 3: SCC4
    description:
      Should be a phandle/number pair. The phandle to TSA node and the TSA
      serial interface to use.

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

patternProperties:
  '^channel@([0-9]|[1-5][0-9]|6[0-3])$':
    description:
      A channel managed by this controller
    type: object
    additionalProperties: false

    properties:
      reg:
        minimum: 0
        maximum: 63
        description:
          The channel number

      fsl,operational-mode:
        $ref: /schemas/types.yaml#/definitions/string
        enum: [transparent, hdlc]
        default: transparent
        description: |
          The channel operational mode
            - hdlc: The channel handles HDLC frames
            - transparent: The channel handles raw data without any processing

      fsl,reverse-data:
        $ref: /schemas/types.yaml#/definitions/flag
        description:
          The bit order as seen on the channels is reversed,
          transmitting/receiving the MSB of each octet first.
          This flag is used only in 'transparent' mode.

      fsl,tx-ts-mask:
        $ref: /schemas/types.yaml#/definitions/uint64
        description:
          Channel assigned Tx time-slots within the Tx time-slots routed by the
          TSA to this cell.

      fsl,rx-ts-mask:
        $ref: /schemas/types.yaml#/definitions/uint64
        description:
          Channel assigned Rx time-slots within the Rx time-slots routed by the
          TSA to this cell.

      compatible:
        items:
          - enum:
              - fsl,mpc885-scc-qmc-hdlc
              - fsl,mpc866-scc-qmc-hdlc
          - const: fsl,cpm1-scc-qmc-hdlc
          - const: fsl,qmc-hdlc

      fsl,framer:
        $ref: /schemas/types.yaml#/definitions/phandle
        description:
          phandle to the framer node. The framer is in charge of an E1/T1 line
          interface connected to the TDM bus. It can be used to get the E1/T1 line
          status such as link up/down.

    allOf:
      - if:
          properties:
            compatible:
              not:
                contains:
                  const: fsl,qmc-hdlc
        then:
          properties:
            fsl,framer: false

    required:
      - reg
      - fsl,tx-ts-mask
      - fsl,rx-ts-mask

required:
  - compatible
  - reg
  - reg-names
  - interrupts
  - fsl,tsa-serial
  - '#address-cells'
  - '#size-cells'

additionalProperties: false

examples:
  - |
    #include <dt-bindings/soc/cpm1-fsl,tsa.h>

    qmc@a60 {
        compatible = "fsl,mpc885-scc-qmc", "fsl,cpm1-scc-qmc";
        reg = <0xa60 0x20>,
              <0x3f00 0xc0>,
              <0x2000 0x1000>;
        reg-names = "scc_regs", "scc_pram", "dpram";
        interrupts = <27>;
        interrupt-parent = <&CPM_PIC>;

        #address-cells = <1>;
        #size-cells = <0>;

        fsl,tsa-serial = <&tsa FSL_CPM_TSA_SCC4>;

        channel@16 {
            /* Ch16 : First 4 even TS from all routed from TSA */
            reg = <16>;
            fsl,operational-mode = "transparent";
            fsl,reverse-data;
            fsl,tx-ts-mask = <0x00000000 0x000000aa>;
            fsl,rx-ts-mask = <0x00000000 0x000000aa>;
        };

        channel@17 {
            /* Ch17 : First 4 odd TS from all routed from TSA */
            reg = <17>;
            fsl,operational-mode = "transparent";
            fsl,reverse-data;
            fsl,tx-ts-mask = <0x00000000 0x00000055>;
            fsl,rx-ts-mask = <0x00000000 0x00000055>;
        };

        channel@19 {
            /* Ch19 : 8 TS (TS 8..15) from all routed from TSA */
            compatible = "fsl,mpc885-scc-qmc-hdlc",
                         "fsl,cpm1-scc-qmc-hdlc",
                         "fsl,qmc-hdlc";
            reg = <19>;
            fsl,operational-mode = "hdlc";
            fsl,tx-ts-mask = <0x00000000 0x0000ff00>;
            fsl,rx-ts-mask = <0x00000000 0x0000ff00>;
            fsl,framer = <&framer>;
        };
    };