Kernel-4.18.0-80.el8_simple-car

Simple-Card:

Simple-Card specifies audio DAI connections of SoC <-> codec.

Required properties:

  • compatible : “simple-audio-card”

Optional properties:

  • simple-audio-card,name : User specified audio sound card name, one string
                    property.
    
  • simple-audio-card,widgets : Please refer to widgets.txt.
  • simple-audio-card,routing : 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.
    
  • simple-audio-card,mclk-fs : Multiplication factor between stream rate and codec
                    mclk. When defined, mclk-fs property defined in
                    dai-link sub nodes are ignored.
    
  • simple-audio-card,hp-det-gpio : Reference to GPIO that signals when
                    headphones are attached.
    
  • simple-audio-card,mic-det-gpio : Reference to GPIO that signals when
                    a microphone is attached.
    
  • simple-audio-card,aux-devs : List of phandles pointing to auxiliary devices, such
                    as amplifiers, to be added to the sound card.
    

Optional subnodes:

  • simple-audio-card,dai-link : Container for dai-link level
                    properties and the CPU and CODEC
                    sub-nodes. This container may be
                    omitted when the card has only one
                    DAI link. See the examples and the
                    section below.
    

Dai-link subnode properties and subnodes:

If dai-link subnode is omitted and the subnode properties are directly
under “sound”-node the subnode property and subnode names have to be
prefixed with “simple-audio-card,”-prefix.

Required dai-link subnodes:

  • cpu : CPU sub-node
  • codec : CODEC sub-node

Optional dai-link subnode properties:

  • format : CPU/CODEC common audio format.
                    "i2s", "right_j", "left_j" , "dsp_a"
                    "dsp_b", "ac97", "pdm", "msb", "lsb"
    
  • frame-master : Indicates dai-link frame master.
                    phandle to a cpu or codec subnode.
    
  • bitclock-master : Indicates dai-link bit clock master.
                    phandle to a cpu or codec subnode.
    
  • bitclock-inversion : bool property. Add this if the
                    dai-link uses bit clock inversion.
    
  • frame-inversion : bool property. Add this if the
                    dai-link uses frame clock inversion.
    
  • mclk-fs : Multiplication factor between stream
                    rate and codec mclk, applied only for
                    the dai-link.
    

For backward compatibility the frame-master and bitclock-master
properties can be used as booleans in codec subnode to indicate if the
codec is the dai-link frame or bit clock master. In this case there
should be no dai-link node, the same properties should not be present
at sound-node level, and the bitclock-inversion and frame-inversion
properties should also be placed in the codec node if needed.

Required CPU/CODEC subnodes properties:

  • sound-dai : phandle and port of CPU/CODEC

Optional CPU/CODEC subnodes properties:

  • dai-tdm-slot-num : Please refer to tdm-slot.txt.
  • dai-tdm-slot-width : Please refer to tdm-slot.txt.
  • clocks / system-clock-frequency : specify subnode’s clock if needed.
                    it can be specified via "clocks" if system has
                    clock node (= common clock), or "system-clock-frequency"
                    (if system doens't support common clock)
                    If a clock is specified, it is
                    enabled with clk_prepare_enable()
                    in dai startup() and disabled with
                    clk_disable_unprepare() in dai
                    shutdown().
                    If a clock is specified and a
                    multiplication factor is given with
                    mclk-fs, the clock will be set to the
                    calculated mclk frequency when the
                    stream starts.
    
  • system-clock-direction-out : specifies clock direction as ‘out’ on
                    initialization. It is useful for some aCPUs with
                    fixed clocks.
    

Example 1 - single DAI link:

sound {
compatible = “simple-audio-card”;
simple-audio-card,name = “VF610-Tower-Sound-Card”;
simple-audio-card,format = “left_j”;
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
simple-audio-card,widgets =
“Microphone”, “Microphone Jack”,
“Headphone”, “Headphone Jack”,
“Speaker”, “External Speaker”;
simple-audio-card,routing =
“MIC_IN”, “Microphone Jack”,
“Headphone Jack”, “HP_OUT”,
“External Speaker”, “LINE_OUT”;

simple-audio-card,cpu {
    sound-dai = <&sh_fsi2 0>;
};

dailink0_master: simple-audio-card,codec {
    sound-dai = <&ak4648>;
    clocks = <&osc>;
};

};

&i2c0 {
ak4648: ak4648@12 {
#sound-dai-cells = <0>;
compatible = “asahi-kasei,ak4648”;
reg = <0x12>;
};
};

sh_fsi2: sh_fsi2@ec230000 {
#sound-dai-cells = <1>;
compatible = “renesas,sh_fsi2”;
reg = <0xec230000 0x400>;
interrupt-parent = <&gic>;
interrupts = <0 146 0x4>;
};

Example 2 - many DAI links:

sound {
compatible = “simple-audio-card”;
simple-audio-card,name = “Cubox Audio”;

simple-audio-card,dai-link@0 {        /* I2S - HDMI */
    reg = <0>;
    format = "i2s";
    cpu {
        sound-dai = <&audio1 0>;
    };
    codec {
        sound-dai = <&tda998x 0>;
    };
};

simple-audio-card,dai-link@1 {        /* S/PDIF - HDMI */
    reg = <1>;
    cpu {
        sound-dai = <&audio1 1>;
    };
    codec {
        sound-dai = <&tda998x 1>;
    };
};

simple-audio-card,dai-link@2 {        /* S/PDIF - S/PDIF */
    reg = <2>;
    cpu {
        sound-dai = <&audio1 1>;
    };
    codec {
        sound-dai = <&spdif_codec>;
    };
};

};

Example 3 - route audio from IMX6 SSI2 through TLV320DAC3100 codec
through TPA6130A2 amplifier to headphones:

&i2c0 {
codec: tlv320dac3100@18 {
compatible = “ti,tlv320dac3100”;

}

amp: tpa6130a2@60 {
    compatible = "ti,tpa6130a2";
    ...
}

}

sound {
compatible = “simple-audio-card”;

simple-audio-card,widgets =
“Headphone”, “Headphone Jack”;
simple-audio-card,routing =
“Headphone Jack”, “HPLEFT”,
“Headphone Jack”, “HPRIGHT”,
“LEFTIN”, “HPL”,
“RIGHTIN”, “HPR”;
simple-audio-card,aux-devs = <&amp>;
simple-audio-card,cpu {
sound-dai = <&ssi2>;
};
simple-audio-card,codec {
sound-dai = <&codec>;
clocks = …
};
};