[alsa-devel] [PATCHv4] ASoC: simple-card: binding: update binding to support the new style.
Li.Xiubo at freescale.com
Li.Xiubo at freescale.com
Tue Nov 4 03:52:22 CET 2014
Hi Mark,
I'd like to know the status of this patch, if this won't be applied, I will
abandon this from our local SDK repository too.
Thanks very much,
BRs
Xiubo
> -----Original Message-----
> From: Xiubo Li [mailto:Li.Xiubo at freescale.com]
> Sent: Wednesday, September 10, 2014 12:08 PM
> To: broonie at linaro.org; galak at codeaurora.org; moinejf at free.fr; andrew at lunn.ch;
> kuninori.morimoto.gx at renesas.com; devicetree at vger.kernel.org; alsa-devel at alsa-
> project.org; jsarha at ti.com
> Cc: linux-kernel at vger.kernel.org; robh+dt at kernel.org; pawel.moll at arm.com;
> mark.rutland at arm.com; ijc+devicetree at hellion.org.uk; Xiubo Li-B47053
> Subject: [PATCHv4] ASoC: simple-card: binding: update binding to support the
> new style.
>
> This patch will split the DT binding into old style and new style, the
> new style will be easier to add many DAI links from old single DAI link
> DTs.
>
> This patch will maintian compatibility with the old DTs.
>
> Signed-off-by: Xiubo Li <Li.Xiubo at freescale.com>
> ---
>
>
> Changes in v4:
> - Follow Jyri's advice.
> - Fix some small words or sentences errors.
> - Fix discription of the commit commnet.
> - Apply against the current code.
> - Add Notes.
>
>
> .../devicetree/bindings/sound/simple-card.txt | 215 ++++++++++++++-------
> 1 file changed, 148 insertions(+), 67 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt
> b/Documentation/devicetree/bindings/sound/simple-card.txt
> index c2e9841..5fe0796 100644
> --- a/Documentation/devicetree/bindings/sound/simple-card.txt
> +++ b/Documentation/devicetree/bindings/sound/simple-card.txt
> @@ -1,15 +1,19 @@
> -Simple-Card:
> +Device-Tree bindings for Simple Card
>
> Simple-Card specifies audio DAI connections of SoC <-> codec.
>
> -Required properties:
> +=== Top level's properties and subnodes ===
>
> +*** Required properties ***
> - compatible : "simple-audio-card"
>
> -Optional properties:
> -
> +*** Optional properties ***
> - simple-audio-card,name : User specified audio sound card name, one
> string
> property.
> +- simple-audio-card,format : CPU/CODEC common audio format.
> + "i2s", "right_j", "left_j" , "dsp_a"
> + "dsp_b", "ac97", "pdm", "msb", "lsb"
> + (This is used for single DAI link & old
> style.)
> - 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
> @@ -17,63 +21,99 @@ Optional properties:
> source.
> - simple-audio-card,mclk-fs : Multiplication factor between stream
> rate and codec
> mclk.
> -
> -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 bellow.
> -
> -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:
> -
> +- simple-audio-card,frame-master : Indicates DAI link frame master. One
> phandle to a
> + CODEC DAI node.
> + (This is used for single DAI link & old
> style.)
> +- simple-audio-card,bitclock-master : Indicates DAI link bit clock master.
> One phandle to
> + a CODEC DAI node.
> + (This is used for single DAI link & old
> style.)
> +
> +*** Optional subnodes ***
> +- simple-audio-card,dai-link : Container for DAI link level properties
> and the CPU
> + and CODEC nodes. This container may be
> omitted
> + when the card has only one DAI link and using
> the old
> + style. See the examples and the section
> bellow.
> +- simple-audio-card,cpu : CPU DAI node.
> + (This is used for single DAI link & old
> style.)
> +- simple-audio-card,codec : CODEC DAI node.
> + (This is used for single DAI link & old
> style.)
> +
> +=== DAI link node's properties and its subnodes ===
> +
> +*** Required subnodes ***
> +- cpu : CPU DAI node.
> +- codec : CODEC DAI node.
> +
> +*** Optional 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.
> -
> -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:
> -
> +- frame-master : Indicates DAI link frame master. One
> phandle to a
> + CODEC DAI node.
> + (This is One boolean property for old style.)
> +- bitclock-master : Indicates DAI link bit clock master. One
> phandle to
> + a CODEC DAI node.
> + (This is one boolean property for old style.)
> +
> +For backward compatibility, the frame-master and bitclock-master
> +can be used as boolean properties in CPU/CODEC DAI node indicating
> +that the CODEC DAI is the DAI link frame master and bit clock master.
> +In this case there should be no DAI link level nodes or boolean
> +properties of them.
> +
> +For all the properties in DAI link level will be applied to both
> +CPU and CODEC DAIs.
> +
> +=== CPU/CODEC DAI node's properties and its subnodes ===
> +
> +*** Required properties ***
> +- sound-dai : One phandle and port of CPU/CODEC DAI device
> node.
> +
> +*** Optional properties ***
> +- bitclock-inversion : Boolean property. Add this if the DAI
> device uses bit
> + clock inversion.
> +- frame-inversion : Boolean property. Add this if the DAI device
> uses frame
> + clock inversion.
> +- frame-master : Boolean property. Add this if the CODEC
> DAI device is
> + frame master.
> + (This is used for single DAI link & old
> style.)
> +- bitclock-master : Boolean property. Add this if the CODEC DAI
> device is
> + bit clock master.
> + (This is used for single DAI link & old
> style.)
> - 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)
> +- clocks / system-clock-frequency : Specify CPU/CODEC DAI'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)
> +
> +=== Notes ===
> +*** DAI hardware clock masters ***
> +For [prefix]frame-master and [prefix]bitclock-master, which prefix
> +is "simple-audio-card,", are both wrt the CODEC DAI. If the CODEC DAI
> +is bit clock and frame master then the CPU DAI will be bit clock and
> +frame slave, and vice versa.
> +
> +=== Examples ===
> +*** CPU & CODEC DAI DT nodes ***
> +&i2c0 {
> + ak4648: ak4648 at 12 {
> + #sound-dai-cells = <0>;
> + compatible = "asahi-kasei,ak4648";
> + reg = <0x12>;
> + };
> +};
>
> -Example 1 - single DAI link:
> +sh_fsi2: sh_fsi2 at ec230000 {
> + #sound-dai-cells = <1>;
> + compatible = "renesas,sh_fsi2";
> + reg = <0xec230000 0x400>;
> + interrupt-parent = <&gic>;
> + interrupts = <0 146 0x4>;
> +};
>
> +Example 1 - single DAI link & old style:
> +bitclock-master and frame-master as phandles.
> sound {
> compatible = "simple-audio-card";
> simple-audio-card,name = "VF610-Tower-Sound-Card";
> @@ -91,6 +131,7 @@ sound {
>
> simple-audio-card,cpu {
> sound-dai = <&sh_fsi2 0>;
> + bitclock-inversion;
> };
>
> dailink0_master: simple-audio-card,codec {
> @@ -99,24 +140,64 @@ sound {
> };
> };
>
> -&i2c0 {
> - ak4648: ak4648 at 12 {
> - #sound-dai-cells = <0>;
> - compatible = "asahi-kasei,ak4648";
> - reg = <0x12>;
> +Example 2 - single DAI link & old style:
> +bitclock-master and frame-master as boolean properties.
> +sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "VF610-Tower-Sound-Card";
> + simple-audio-card,format = "left_j";
> + 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>;
> };
> -};
>
> -sh_fsi2: sh_fsi2 at ec230000 {
> - #sound-dai-cells = <1>;
> - compatible = "renesas,sh_fsi2";
> - reg = <0xec230000 0x400>;
> - interrupt-parent = <&gic>;
> - interrupts = <0 146 0x4>;
> + simple-audio-card,codec {
> + sound-dai = <&ak4648>;
> + clocks = <&osc>;
> + bitclock-master;
> + frame-master;
> + bitclock-inversion;
> + };
> };
>
> -Example 2 - many DAI links:
> +Example 3 - single DAI link & new style:
> +sound {
> + compatible = "simple-audio-card";
> + simple-audio-card,name = "VF610-Tower-Sound-Card";
> + 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,dai-link {
> + format = "i2s";
> + bitclock-master = <&dailink0_master>;
> + frame-master = <&dailink0_master>;
> + cpu {
> + sound-dai = <&sh_fsi2 0>;
> + frame-inversion;
> + };
> + dailink0_master: codec {
> + sound-dai = <&ak4648>;
> + clocks = <&osc>;
> + frame-inversion;
> + };
> + };
> +};
>
> +Example 4 - many DAI links:
> sound {
> compatible = "simple-audio-card";
> simple-audio-card,name = "Cubox Audio";
> --
> 2.1.0.27.g96db324
More information about the Alsa-devel
mailing list