[v3,4/6] dt-bindings: sound: Add support for the Lantiq PEF2256 codec

Message ID 20230322134654.219957-5-herve.codina@bootlin.com
State New
Headers
Series Add the Lantiq PEF2256 audio support |

Commit Message

Herve Codina March 22, 2023, 1:46 p.m. UTC
  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.

The codec support allows to use some of the PCM system highway
time-slots as audio channels to transport audio data over the E1/T1/J1
lines.

Signed-off-by: Herve Codina <herve.codina@bootlin.com>
---
 .../bindings/sound/lantiq,pef2256-codec.yaml  | 54 +++++++++++++++++++
 1 file changed, 54 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
  

Comments

Krzysztof Kozlowski March 22, 2023, 9:59 p.m. UTC | #1
On 22/03/2023 14:46, Herve Codina wrote:
> 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.
> 
> The codec support allows to use some of the PCM system highway
> time-slots as audio channels to transport audio data over the E1/T1/J1
> lines.
> 
> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> ---
>  .../bindings/sound/lantiq,pef2256-codec.yaml  | 54 +++++++++++++++++++
>  1 file changed, 54 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> 
> diff --git a/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> new file mode 100644
> index 000000000000..da35b70cda99
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> @@ -0,0 +1,54 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/sound/lantiq,pef2256-codec.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Lantiq PEF2256 codec
> +
> +maintainers:
> +  - Herve Codina <herve.codina@bootlin.com>
> +
> +description: |
> +  Codec support for PEF2256.
> +
> +  The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, 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.
> +
> +  The codec support allows to use some of the PCM system highway time-slots as
> +  audio channels to transport audio data over the E1/T1/J1 lines.
> +
> +  The time-slots used by the codec must be set and so, the properties
> +  'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and
> +  'dai-tdm-slot-rx-mask' must be present in the ALSA sound card node for
> +  sub-nodes that involve the codec. The codec uses 8bit time-slots.
> +  'dai-tdm-tdm-slot-with' must be set to 8.
> +  The tx and rx masks define the PEF2256 time-slots assigned to the codec.
> +
> +  The PEF2256 codec node should be a child of a PEF2256 node.
> +  Refer to the bindings described in
> +  Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
> +
> +allOf:
> +  - $ref: dai-common.yaml#
> +
> +properties:
> +  compatible:
> +    const: lantiq,pef2256-codec
> +
> +  '#sound-dai-cells':
> +    const: 0

You do not have here any resources, so the entire binding can be dropped
and merged into the parent.

Best regards,
Krzysztof
  
Herve Codina March 23, 2023, 7:27 a.m. UTC | #2
Hi Krzysztof

On Wed, 22 Mar 2023 22:59:37 +0100
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:

> On 22/03/2023 14:46, Herve Codina wrote:
> > 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.
> > 
> > The codec support allows to use some of the PCM system highway
> > time-slots as audio channels to transport audio data over the E1/T1/J1
> > lines.
> > 
> > Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> > ---
> >  .../bindings/sound/lantiq,pef2256-codec.yaml  | 54 +++++++++++++++++++
> >  1 file changed, 54 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> > new file mode 100644
> > index 000000000000..da35b70cda99
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> > @@ -0,0 +1,54 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/sound/lantiq,pef2256-codec.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Lantiq PEF2256 codec
> > +
> > +maintainers:
> > +  - Herve Codina <herve.codina@bootlin.com>
> > +
> > +description: |
> > +  Codec support for PEF2256.
> > +
> > +  The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, 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.
> > +
> > +  The codec support allows to use some of the PCM system highway time-slots as
> > +  audio channels to transport audio data over the E1/T1/J1 lines.
> > +
> > +  The time-slots used by the codec must be set and so, the properties
> > +  'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and
> > +  'dai-tdm-slot-rx-mask' must be present in the ALSA sound card node for
> > +  sub-nodes that involve the codec. The codec uses 8bit time-slots.
> > +  'dai-tdm-tdm-slot-with' must be set to 8.
> > +  The tx and rx masks define the PEF2256 time-slots assigned to the codec.
> > +
> > +  The PEF2256 codec node should be a child of a PEF2256 node.
> > +  Refer to the bindings described in
> > +  Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
> > +
> > +allOf:
> > +  - $ref: dai-common.yaml#
> > +
> > +properties:
> > +  compatible:
> > +    const: lantiq,pef2256-codec
> > +
> > +  '#sound-dai-cells':
> > +    const: 0  
> 
> You do not have here any resources, so the entire binding can be dropped
> and merged into the parent.
> 
> Best regards,
> Krzysztof
> 

Ok,
Do you expect all these properties (except compatible) merged at the parent
level or may I keep a child node with these properties including the
compatible property (ie. yaml file merge).

Regards,
Hervé
  
Krzysztof Kozlowski March 23, 2023, 7:31 a.m. UTC | #3
On 23/03/2023 08:27, Herve Codina wrote:
> Hi Krzysztof
> 
> On Wed, 22 Mar 2023 22:59:37 +0100
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
> 
>> On 22/03/2023 14:46, Herve Codina wrote:
>>> 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.
>>>
>>> The codec support allows to use some of the PCM system highway
>>> time-slots as audio channels to transport audio data over the E1/T1/J1
>>> lines.
>>>
>>> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
>>> ---
>>>  .../bindings/sound/lantiq,pef2256-codec.yaml  | 54 +++++++++++++++++++
>>>  1 file changed, 54 insertions(+)
>>>  create mode 100644 Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
>>> new file mode 100644
>>> index 000000000000..da35b70cda99
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
>>> @@ -0,0 +1,54 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/sound/lantiq,pef2256-codec.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: Lantiq PEF2256 codec
>>> +
>>> +maintainers:
>>> +  - Herve Codina <herve.codina@bootlin.com>
>>> +
>>> +description: |
>>> +  Codec support for PEF2256.
>>> +
>>> +  The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, 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.
>>> +
>>> +  The codec support allows to use some of the PCM system highway time-slots as
>>> +  audio channels to transport audio data over the E1/T1/J1 lines.
>>> +
>>> +  The time-slots used by the codec must be set and so, the properties
>>> +  'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and
>>> +  'dai-tdm-slot-rx-mask' must be present in the ALSA sound card node for
>>> +  sub-nodes that involve the codec. The codec uses 8bit time-slots.
>>> +  'dai-tdm-tdm-slot-with' must be set to 8.
>>> +  The tx and rx masks define the PEF2256 time-slots assigned to the codec.
>>> +
>>> +  The PEF2256 codec node should be a child of a PEF2256 node.
>>> +  Refer to the bindings described in
>>> +  Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
>>> +
>>> +allOf:
>>> +  - $ref: dai-common.yaml#
>>> +
>>> +properties:
>>> +  compatible:
>>> +    const: lantiq,pef2256-codec
>>> +
>>> +  '#sound-dai-cells':
>>> +    const: 0  
>>
>> You do not have here any resources, so the entire binding can be dropped
>> and merged into the parent.
>>
>> Best regards,
>> Krzysztof
>>
> 
> Ok,
> Do you expect all these properties (except compatible) merged at the parent

You have only two properties here - dai cells and name-prefix...

> level or may I keep a child node with these properties including the
> compatible property (ie. yaml file merge).

I was thinking that these should be merged into parent because usually
you do not need child node for this. However now I started to think how
the codec driver would look like. Essentially the parent MFD driver
would need to register dais...

Best regards,
Krzysztof
  
Herve Codina March 23, 2023, 8:10 a.m. UTC | #4
On Thu, 23 Mar 2023 08:31:28 +0100
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:

> On 23/03/2023 08:27, Herve Codina wrote:
> > Hi Krzysztof
> > 
> > On Wed, 22 Mar 2023 22:59:37 +0100
> > Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
> >   
> >> On 22/03/2023 14:46, Herve Codina wrote:  
> >>> 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.
> >>>
> >>> The codec support allows to use some of the PCM system highway
> >>> time-slots as audio channels to transport audio data over the E1/T1/J1
> >>> lines.
> >>>
> >>> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
> >>> ---
> >>>  .../bindings/sound/lantiq,pef2256-codec.yaml  | 54 +++++++++++++++++++
> >>>  1 file changed, 54 insertions(+)
> >>>  create mode 100644 Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> >>> new file mode 100644
> >>> index 000000000000..da35b70cda99
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
> >>> @@ -0,0 +1,54 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> >>> +%YAML 1.2
> >>> +---
> >>> +$id: http://devicetree.org/schemas/sound/lantiq,pef2256-codec.yaml#
> >>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>> +
> >>> +title: Lantiq PEF2256 codec
> >>> +
> >>> +maintainers:
> >>> +  - Herve Codina <herve.codina@bootlin.com>
> >>> +
> >>> +description: |
> >>> +  Codec support for PEF2256.
> >>> +
> >>> +  The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, 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.
> >>> +
> >>> +  The codec support allows to use some of the PCM system highway time-slots as
> >>> +  audio channels to transport audio data over the E1/T1/J1 lines.
> >>> +
> >>> +  The time-slots used by the codec must be set and so, the properties
> >>> +  'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and
> >>> +  'dai-tdm-slot-rx-mask' must be present in the ALSA sound card node for
> >>> +  sub-nodes that involve the codec. The codec uses 8bit time-slots.
> >>> +  'dai-tdm-tdm-slot-with' must be set to 8.
> >>> +  The tx and rx masks define the PEF2256 time-slots assigned to the codec.
> >>> +
> >>> +  The PEF2256 codec node should be a child of a PEF2256 node.
> >>> +  Refer to the bindings described in
> >>> +  Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
> >>> +
> >>> +allOf:
> >>> +  - $ref: dai-common.yaml#
> >>> +
> >>> +properties:
> >>> +  compatible:
> >>> +    const: lantiq,pef2256-codec
> >>> +
> >>> +  '#sound-dai-cells':
> >>> +    const: 0    
> >>
> >> You do not have here any resources, so the entire binding can be dropped
> >> and merged into the parent.
> >>
> >> Best regards,
> >> Krzysztof
> >>  
> > 
> > Ok,
> > Do you expect all these properties (except compatible) merged at the parent  
> 
> You have only two properties here - dai cells and name-prefix...
> 
> > level or may I keep a child node with these properties including the
> > compatible property (ie. yaml file merge).  
> 
> I was thinking that these should be merged into parent because usually
> you do not need child node for this. However now I started to think how
> the codec driver would look like. Essentially the parent MFD driver
> would need to register dais...
> 

There is also something specific to audio, the slots definition
'dai-tdm-slot-tx-mask' and 'dai-tdm-slot-rx-mask'. These slots definitions
are set at the ALSA sound card sub-nodes.
So, I can have multiple codec in the PEF2256.

For instance:
  framer {
    compatible = "lantiq,pef2256", "simple-mfd";
    ...
    pef2256_codec0: codec0 {
      compatible = "lantiq,pef2256-codec";
      #sound-dai-cells = <0>;
    };
    pef2256_codec1: codec1 {
      compatible = "lantiq,pef2256-codec";
      #sound-dai-cells = <0>;
    };
  };

  sound {
    compatible = "simple-audio-card";
    #address-cells = <1>;
    #size-cells = <0>;
    simple-audio-card,dai-link@0 { /* CPU DAI1 - pef2256 codec 1 */
      reg = <0>;
      cpu {
        sound-dai = <&cpu_dai1>;
      };
      codec {
        sound-dai = <&pef2256_codec0>;
	dai-tdm-slot-num = <4>;
	dai-tdm-slot-width = <8>;
	/* TS 2, 3, 4, 5 */
	dai-tdm-slot-tx-mask = <0 1 1 1 1>;
	dai-tdm-slot-rx-mask = <0 1 1 1 1>;
      };
    simple-audio-card,dai-link@1 { /* CPU DAI2 - pef2256 codec 2 */
      reg = <1>;
      cpu {
        sound-dai = <&cpu_dai2>;
      };
      codec {
	sound-dai = <&pef2256_codec1>;
	dai-tdm-slot-num = <4>;
	dai-tdm-slot-width = <8>;
	/* TS 6, 7, 8, 9 */
	dai-tdm-slot-tx-mask = <0 0 0 0 0 1 1 1 1>;
	dai-tdm-slot-rx-mask = <0 0 0 0 0 1 1 1 1>;
      };
    };
  };

To solve this, I can use #sound-dai-cells = <1>; but this will complicate
the driver itself and is it really needed ?
Having "simple-mfd" dans sub-nodes keep all things simple.

Regards,
Hervé
  
Krzysztof Kozlowski March 26, 2023, 12:21 p.m. UTC | #5
On 23/03/2023 09:10, Herve Codina wrote:
> On Thu, 23 Mar 2023 08:31:28 +0100
> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
> 
>> On 23/03/2023 08:27, Herve Codina wrote:
>>> Hi Krzysztof
>>>
>>> On Wed, 22 Mar 2023 22:59:37 +0100
>>> Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> wrote:
>>>   
>>>> On 22/03/2023 14:46, Herve Codina wrote:  
>>>>> 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.
>>>>>
>>>>> The codec support allows to use some of the PCM system highway
>>>>> time-slots as audio channels to transport audio data over the E1/T1/J1
>>>>> lines.
>>>>>
>>>>> Signed-off-by: Herve Codina <herve.codina@bootlin.com>
>>>>> ---
>>>>>  .../bindings/sound/lantiq,pef2256-codec.yaml  | 54 +++++++++++++++++++
>>>>>  1 file changed, 54 insertions(+)
>>>>>  create mode 100644 Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
>>>>> new file mode 100644
>>>>> index 000000000000..da35b70cda99
>>>>> --- /dev/null
>>>>> +++ b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
>>>>> @@ -0,0 +1,54 @@
>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>>> +%YAML 1.2
>>>>> +---
>>>>> +$id: http://devicetree.org/schemas/sound/lantiq,pef2256-codec.yaml#
>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>> +
>>>>> +title: Lantiq PEF2256 codec
>>>>> +
>>>>> +maintainers:
>>>>> +  - Herve Codina <herve.codina@bootlin.com>
>>>>> +
>>>>> +description: |
>>>>> +  Codec support for PEF2256.
>>>>> +
>>>>> +  The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, 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.
>>>>> +
>>>>> +  The codec support allows to use some of the PCM system highway time-slots as
>>>>> +  audio channels to transport audio data over the E1/T1/J1 lines.
>>>>> +
>>>>> +  The time-slots used by the codec must be set and so, the properties
>>>>> +  'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and
>>>>> +  'dai-tdm-slot-rx-mask' must be present in the ALSA sound card node for
>>>>> +  sub-nodes that involve the codec. The codec uses 8bit time-slots.
>>>>> +  'dai-tdm-tdm-slot-with' must be set to 8.
>>>>> +  The tx and rx masks define the PEF2256 time-slots assigned to the codec.
>>>>> +
>>>>> +  The PEF2256 codec node should be a child of a PEF2256 node.
>>>>> +  Refer to the bindings described in
>>>>> +  Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
>>>>> +
>>>>> +allOf:
>>>>> +  - $ref: dai-common.yaml#
>>>>> +
>>>>> +properties:
>>>>> +  compatible:
>>>>> +    const: lantiq,pef2256-codec
>>>>> +
>>>>> +  '#sound-dai-cells':
>>>>> +    const: 0    
>>>>
>>>> You do not have here any resources, so the entire binding can be dropped
>>>> and merged into the parent.
>>>>
>>>> Best regards,
>>>> Krzysztof
>>>>  
>>>
>>> Ok,
>>> Do you expect all these properties (except compatible) merged at the parent  
>>
>> You have only two properties here - dai cells and name-prefix...
>>
>>> level or may I keep a child node with these properties including the
>>> compatible property (ie. yaml file merge).  
>>
>> I was thinking that these should be merged into parent because usually
>> you do not need child node for this. However now I started to think how
>> the codec driver would look like. Essentially the parent MFD driver
>> would need to register dais...
>>
> 
> There is also something specific to audio, the slots definition
> 'dai-tdm-slot-tx-mask' and 'dai-tdm-slot-rx-mask'. These slots definitions
> are set at the ALSA sound card sub-nodes.
> So, I can have multiple codec in the PEF2256.
> 
> For instance:
>   framer {
>     compatible = "lantiq,pef2256", "simple-mfd";
>     ...
>     pef2256_codec0: codec0 {
>       compatible = "lantiq,pef2256-codec";
>       #sound-dai-cells = <0>;
>     };
>     pef2256_codec1: codec1 {
>       compatible = "lantiq,pef2256-codec";
>       #sound-dai-cells = <0>;
>     };
>   };

Then include it in the example. It would cut short this discussion.


Best regards,
Krzysztof
  

Patch

diff --git a/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
new file mode 100644
index 000000000000..da35b70cda99
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/lantiq,pef2256-codec.yaml
@@ -0,0 +1,54 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/lantiq,pef2256-codec.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Lantiq PEF2256 codec
+
+maintainers:
+  - Herve Codina <herve.codina@bootlin.com>
+
+description: |
+  Codec support for PEF2256.
+
+  The Lantiq PEF2256, also known as Infineon PEF2256 or FALC56, 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.
+
+  The codec support allows to use some of the PCM system highway time-slots as
+  audio channels to transport audio data over the E1/T1/J1 lines.
+
+  The time-slots used by the codec must be set and so, the properties
+  'dai-tdm-slot-num', 'dai-tdm-slot-width', 'dai-tdm-slot-tx-mask' and
+  'dai-tdm-slot-rx-mask' must be present in the ALSA sound card node for
+  sub-nodes that involve the codec. The codec uses 8bit time-slots.
+  'dai-tdm-tdm-slot-with' must be set to 8.
+  The tx and rx masks define the PEF2256 time-slots assigned to the codec.
+
+  The PEF2256 codec node should be a child of a PEF2256 node.
+  Refer to the bindings described in
+  Documentation/devicetree/bindings/mfd/lantiq,pef2256.yaml
+
+allOf:
+  - $ref: dai-common.yaml#
+
+properties:
+  compatible:
+    const: lantiq,pef2256-codec
+
+  '#sound-dai-cells':
+    const: 0
+
+required:
+  - compatible
+  - '#sound-dai-cells'
+
+unevaluatedProperties: false
+
+examples:
+  - |
+    codec {
+        compatible = "lantiq,pef2256-codec";
+        #sound-dai-cells = <0>;
+    };