Documentation / devicetree / bindings / soc / fsl / cpm_qe / fsl,cpm1-scc-qmc.yaml


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 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>;
        };
    };