On Fri, Oct 14, 2022 at 03:51:48PM +0530, Padmanabhan Rajanbabu wrote: > Add dt-binding reference document to configure the DAI link for Tesla > FSD sound card driver. The simple-card or graph-card bindings don't work for you? > > Signed-off-by: Padmanabhan Rajanbabu <p.rajanbabu@xxxxxxxxxxx> > --- > .../bindings/sound/tesla,fsd-card.yaml | 158 ++++++++++++++++++ > 1 file changed, 158 insertions(+) > create mode 100644 Documentation/devicetree/bindings/sound/tesla,fsd-card.yaml > > diff --git a/Documentation/devicetree/bindings/sound/tesla,fsd-card.yaml b/Documentation/devicetree/bindings/sound/tesla,fsd-card.yaml > new file mode 100644 > index 000000000000..4bd590f4ee27 > --- /dev/null > +++ b/Documentation/devicetree/bindings/sound/tesla,fsd-card.yaml > @@ -0,0 +1,158 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +# Copyright 2022 Samsung Electronics Co. Ltd. > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/sound/tesla,fsd-card.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Tesla FSD ASoC sound card driver > + > +maintainers: > + - Padmanabhan Rajanbabu <p.rajanbabu@xxxxxxxxxxx> > + > +description: | > + This binding describes the node properties and essential DT entries of FSD > + SoC sound card node > + > +select: false Never apply this schema. Why? > + > +properties: > + compatible: > + enum: > + - tesla,fsd-sndcard > + > + model: > + description: Describes the Name of the sound card > + $ref: /schemas/types.yaml#/definitions/string > + > + widgets: > + description: A list of DAPM widgets in the sound card. Each entry is a pair > + of strings, the first being the widget name and the second being the > + widget alias > + $ref: /schemas/types.yaml#/definitions/string-array > + > + audio-routing: > + description: A list of the connections between audio components. Each entry > + is a pair of strings, the first being the connection's sink, the second > + being the connection's source > + $ref: /schemas/types.yaml#/definitions/string-array > + > + dai-tdm-slot-num: > + description: Enables TDM mode and specifies the number of TDM slots to be > + enabled > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [0, 1, 2, 3, 4, 5, 6, 7, 8] maximum: 8 > + default: 2 > + > + dai-tdm-slot-width: > + description: Specifies the slot width of each TDm slot enabled > + $ref: /schemas/types.yaml#/definitions/uint32 > + enum: [8, 16, 24] > + default: 16 All the above have types defined. You should not be redefining the types. > + > + dai-link: > + description: Holds the DAI link data between CPU, Codec and Platform > + type: object additionalProperties: false > + properties: > + link-name: > + description: Specifies the name of the DAI link > + $ref: /schemas/types.yaml#/definitions/string > + > + dai-format: > + description: Specifies the serial data format of CPU DAI > + $ref: /schemas/types.yaml#/definitions/string > + > + tesla,bitclock-master: > + description: Specifies the phandle of bitclock master DAI > + $ref: /schemas/types.yaml#/definitions/phandle > + > + tesla,frame-master: > + description: Specifies the phandle of frameclock master DAI > + $ref: /schemas/types.yaml#/definitions/phandle These are common properties. Drop 'tesla'. > + > + cpu: > + description: Holds the CPU DAI node and instance > + type: object additionalProperties: false > + properties: > + sound-dai: > + description: Specifies the phandle of CPU DAI node > + $ref: /schemas/types.yaml#/definitions/phandle-array > + > + required: > + - sound-dai > + > + codec: > + description: Holds the Codec DAI node and instance > + type: object additionalProperties: false > + properties: > + sound-dai: > + description: Specifies the phandle of Codec DAI node > + $ref: /schemas/types.yaml#/definitions/phandle-array Already has a type. Need to define how many entries (maxItems: 1 ?). > + > + required: > + - sound-dai > + > + required: > + - link-name > + - dai-format > + - tesla,bitclock-master > + - tesla,frame-master > + - cpu > + > +dependencies: > + dai-tdm-slot-width: [ 'dai-tdm-slot-num' ] This should be captured with tdm-slot.txt converted to schema. > + > +required: > + - compatible > + - model > + - dai-link > + > +additionalProperties: false > + > +examples: > + - | > + sound { > + compatible = "tesla,fsd-sndcard"; > + status = "disabled"; Why have a disabled example? Other than your example won't pass your schema. > + model = "fsd-i2s"; > + > + primary-dai-link-0 { > + link-name = "fsd-primary-0"; > + dai-format = "i2s"; > + tesla,bitclock-master = <&tdm_0>; > + tesla,frame-master = <&tdm_0>; > + cpu { > + sound-dai = <&tdm_0 0>; > + }; > + }; > + > + secondary-dai-link-0 { > + link-name = "fsd-secondary-0"; > + dai-format = "i2s"; > + tesla,bitclock-master = <&tdm_0>; > + tesla,frame-master = <&tdm_0>; > + cpu { > + sound-dai = <&tdm_0 1>; > + }; > + }; > + > + primary-dai-link-1 { > + link-name = "fsd-primary-1"; > + dai-format = "i2s"; > + tesla,bitclock-master = <&tdm_1>; > + tesla,frame-master = <&tdm_1>; > + cpu { > + sound-dai = <&tdm_1 0>; > + }; > + }; > + > + secondary-dai-link-1 { > + link-name = "fsd-secondary-1"; > + dai-format = "i2s"; > + tesla,bitclock-master = <&tdm_1>; > + tesla,frame-master = <&tdm_1>; > + cpu { > + sound-dai = <&tdm_1 1>; > + }; > + }; > + }; > -- > 2.17.1 > >