Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: net: Add the Lantiq PEF2256 E1/T1/J1 framer

The Lantiq PEF2256 is a framer and line interface component designed to
fulfill all required interfacing between an analog E1/T1/J1 line and the
digital PCM system highway/H.100 bus.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20231128132534.258459-3-herve.codina@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Herve Codina and committed by
Linus Walleij
766f5f90 82c944d0

+213
+213
Documentation/devicetree/bindings/net/lantiq,pef2256.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/net/lantiq,pef2256.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Lantiq PEF2256 8 + 9 + maintainers: 10 + - Herve Codina <herve.codina@bootlin.com> 11 + 12 + description: 13 + The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, is a framer and 14 + line interface component designed to fulfill all required interfacing between 15 + an analog E1/T1/J1 line and the digital PCM system highway/H.100 bus. 16 + 17 + properties: 18 + compatible: 19 + items: 20 + - const: lantiq,pef2256 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + items: 27 + - description: Master Clock 28 + - description: System Clock Receive 29 + - description: System Clock Transmit 30 + 31 + clock-names: 32 + items: 33 + - const: mclk 34 + - const: sclkr 35 + - const: sclkx 36 + 37 + interrupts: 38 + maxItems: 1 39 + 40 + reset-gpios: 41 + description: 42 + GPIO used to reset the device. 43 + maxItems: 1 44 + 45 + pinctrl: 46 + $ref: /schemas/pinctrl/pinctrl.yaml# 47 + additionalProperties: false 48 + 49 + patternProperties: 50 + '-pins$': 51 + type: object 52 + $ref: /schemas/pinctrl/pinmux-node.yaml# 53 + additionalProperties: false 54 + 55 + properties: 56 + pins: 57 + enum: [ RPA, RPB, RPC, RPD, XPA, XPB, XPC, XPD ] 58 + 59 + function: 60 + enum: [ SYPR, RFM, RFMB, RSIGM, RSIG, DLR, FREEZE, RFSP, LOS, 61 + SYPX, XFMS, XSIG, TCLK, XMFB, XSIGM, DLX, XCLK, XLT, 62 + GPI, GPOH, GPOL ] 63 + 64 + required: 65 + - pins 66 + - function 67 + 68 + lantiq,data-rate-bps: 69 + enum: [2048000, 4096000, 8192000, 16384000] 70 + default: 2048000 71 + description: 72 + Data rate (bit per seconds) on the system highway. 73 + 74 + lantiq,clock-falling-edge: 75 + $ref: /schemas/types.yaml#/definitions/flag 76 + description: 77 + Data is sent on falling edge of the clock (and received on the rising 78 + edge). If 'clock-falling-edge' is not present, data is sent on the 79 + rising edge (and received on the falling edge). 80 + 81 + lantiq,channel-phase: 82 + $ref: /schemas/types.yaml#/definitions/uint32 83 + enum: [0, 1, 2, 3, 4, 5, 6, 7] 84 + default: 0 85 + description: | 86 + The pef2256 delivers a full frame (32 8-bit time-slots in E1 and 24 8-bit 87 + time-slots 8 8-bit signaling in E1/J1) every 125us. This lead to a data 88 + rate of 2048000 bit/s. When lantiq,data-rate-bps is more than 2048000 89 + bit/s, the data (all 32 8-bit) present in the frame are interleave with 90 + unused time-slots. The lantiq,channel-phase property allows to set the 91 + correct alignment of the interleave mechanism. 92 + For instance, suppose lantiq,data-rate-bps = 8192000 (ie 4*2048000), and 93 + lantiq,channel-phase = 2, the interleave schema with unused time-slots 94 + (nu) and used time-slots (XX) for TSi is 95 + nu nu XX nu nu nu XX nu nu nu XX nu 96 + <-- TSi --> <- TSi+1 -> <- TSi+2 -> 97 + With lantiq,data-rate-bps = 8192000, and lantiq,channel-phase = 1, the 98 + interleave schema is 99 + nu XX nu nu nu XX nu nu nu XX nu nu 100 + <-- TSi --> <- TSi+1 -> <- TSi+2 -> 101 + With lantiq,data-rate-bps = 4096000 (ie 2*2048000), and 102 + lantiq,channel-phase = 1, the interleave schema is 103 + nu XX nu XX nu XX 104 + <-- TSi --> <- TSi+1 -> <- TSi+2 -> 105 + 106 + patternProperties: 107 + '^codec(-([0-9]|[1-2][0-9]|3[0-1]))?$': 108 + type: object 109 + $ref: /schemas/sound/dai-common.yaml 110 + unevaluatedProperties: false 111 + description: 112 + Codec provided by the pef2256. This codec allows to use some of the PCM 113 + system highway time-slots as audio channels to transport audio data over 114 + the E1/T1/J1 lines. 115 + The time-slots used by the codec must be set and so, the properties 116 + 'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and 117 + 'dai-tdm-slot-rx-mask' must be present in the sound card node for 118 + sub-nodes that involve the codec. The codec uses 8-bit time-slots. 119 + 'dai-tdm-tdm-slot-with' must be set to 8. 120 + The tx and rx masks define the pef2256 time-slots assigned to the codec. 121 + 122 + properties: 123 + compatible: 124 + const: lantiq,pef2256-codec 125 + 126 + '#sound-dai-cells': 127 + const: 0 128 + 129 + required: 130 + - compatible 131 + - '#sound-dai-cells' 132 + 133 + required: 134 + - compatible 135 + - reg 136 + - clocks 137 + - clock-names 138 + - interrupts 139 + 140 + additionalProperties: false 141 + 142 + examples: 143 + - | 144 + #include <dt-bindings/gpio/gpio.h> 145 + #include <dt-bindings/interrupt-controller/irq.h> 146 + 147 + pef2256: framer@2000000 { 148 + compatible = "lantiq,pef2256"; 149 + reg = <0x2000000 0x100>; 150 + interrupts = <8 IRQ_TYPE_LEVEL_LOW>; 151 + interrupt-parent = <&intc>; 152 + clocks = <&clk_mclk>, <&clk_sclkr>, <&clk_sclkx>; 153 + clock-names = "mclk", "sclkr", "sclkx"; 154 + reset-gpios = <&gpio 11 GPIO_ACTIVE_LOW>; 155 + lantiq,data-rate-bps = <4096000>; 156 + 157 + pinctrl { 158 + pef2256_rpa_sypr: rpa-pins { 159 + pins = "RPA"; 160 + function = "SYPR"; 161 + }; 162 + pef2256_xpa_sypx: xpa-pins { 163 + pins = "XPA"; 164 + function = "SYPX"; 165 + }; 166 + }; 167 + 168 + pef2256_codec0: codec-0 { 169 + compatible = "lantiq,pef2256-codec"; 170 + #sound-dai-cells = <0>; 171 + sound-name-prefix = "PEF2256_0"; 172 + }; 173 + 174 + pef2256_codec1: codec-1 { 175 + compatible = "lantiq,pef2256-codec"; 176 + #sound-dai-cells = <0>; 177 + sound-name-prefix = "PEF2256_1"; 178 + }; 179 + }; 180 + 181 + sound { 182 + compatible = "simple-audio-card"; 183 + #address-cells = <1>; 184 + #size-cells = <0>; 185 + simple-audio-card,dai-link@0 { /* CPU DAI1 - pef2256 codec 1 */ 186 + reg = <0>; 187 + cpu { 188 + sound-dai = <&cpu_dai1>; 189 + }; 190 + codec { 191 + sound-dai = <&pef2256_codec0>; 192 + dai-tdm-slot-num = <4>; 193 + dai-tdm-slot-width = <8>; 194 + /* TS 1, 2, 3, 4 */ 195 + dai-tdm-slot-tx-mask = <0 1 1 1 1>; 196 + dai-tdm-slot-rx-mask = <0 1 1 1 1>; 197 + }; 198 + }; 199 + simple-audio-card,dai-link@1 { /* CPU DAI2 - pef2256 codec 2 */ 200 + reg = <1>; 201 + cpu { 202 + sound-dai = <&cpu_dai2>; 203 + }; 204 + codec { 205 + sound-dai = <&pef2256_codec1>; 206 + dai-tdm-slot-num = <4>; 207 + dai-tdm-slot-width = <8>; 208 + /* TS 5, 6, 7, 8 */ 209 + dai-tdm-slot-tx-mask = <0 0 0 0 0 1 1 1 1>; 210 + dai-tdm-slot-rx-mask = <0 0 0 0 0 1 1 1 1>; 211 + }; 212 + }; 213 + };