lkml.org 
[lkml]   [2014]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCHv2 4/4] ASoC: simple-card: binding: update binding to support the new style.
    Date
    This update patch will split the DT node into old style and new style:
    The new style will will be easier to add muti DAI links from old single
    DAI link DTs.

    This patch will maintian compatibility with the old DTs.

    Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com>
    ---
    .../devicetree/bindings/sound/simple-card.txt | 184 ++++++++++++++-------
    1 file changed, 126 insertions(+), 58 deletions(-)

    diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt
    index c2e9841..6fb8966 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,85 @@ 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 cpu
    + or codec subnode.
    + (This is used for single DAI link & old style.)
    +- simple-audio-card,bitclock-master : Indicates DAI link bit clock master. One phandle to a
    + cpu or codec subnode.
    + (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 sub-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 sub-node.
    + (This is used for single DAI link & old style.)
    +- simple-audio-card,codec : CODEC DAI sub-node.
    + (This is used for single DAI link & old style.)
    +
    +=== DAI link node's properties and its subnodes ===
    +
    +*** Required subnodes ***
    +- cpu : CPU DAI sub-node
    +- codec : CODEC DAI sub-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.
    +- frame-master : Indicates DAI link frame master. One phandle to a cpu
    + or codec subnode.
    + (This is One boolean property for old style.)
    +- bitclock-master : Indicates DAI link bit clock master. One phandle to a
    + cpu or codec subnode.
    + (This is one boolean property for old style.)

    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
    +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
    +=== CPU/CODEC DAI node's properties and its subnodes ===

    -Optional CPU/CODEC subnodes properties:
    +*** Required properties ***
    +- sound-dai : One phandle and port of CPU/CODEC

    +*** 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.
    - 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 node'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)

    -Example 1 - single DAI link:
    +=== Examples ===
    +*** CPU & CODEC DAI DT nodes ***
    +&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 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 +117,7 @@ sound {

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

    dailink0_master: simple-audio-card,codec {
    @@ -99,24 +126,64 @@ sound {
    };
    };

    -&i2c0 {
    - ak4648: ak4648@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@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";
    @@ -128,6 +195,7 @@ sound {
    };
    codec {
    sound-dai = <&tda998x 0>;
    + frame-inversion;
    };
    };

    --
    1.8.4


    \
     
     \ /
      Last update: 2014-09-02 12:41    [W:4.274 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site