mirror of
https://github.com/torvalds/linux.git
synced 2024-12-25 12:21:37 +00:00
46c39cae29
The current simple-card driver separates the daimft for cpu_dai and codec_dai. So we might get different values for them (0x4003 and 0x1003 for example): asoc-simple-card sound-cs42888.12: cpu : 2024000.esai / 4003 / 132000000 asoc-simple-card sound-cs42888.12: codec : cs42888 / 1003 / 24576000 asoc-simple-card sound-cs42888.12: cs42888 <-> 2024000.esai mapping ok This is not allowed at all as we need to keep the DAIFMT settings identical for both the ends of the link. Thus this patch fixes it by overwriting the cpu_dai->fmt with codec_dai->fmt since we defined the DAIFMT_MASTER basing on CODEC at the first place while the other bits are same. Signed-off-by: Nicolin Chen <Guangyu.Chen@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
97 lines
2.8 KiB
Plaintext
97 lines
2.8 KiB
Plaintext
Simple-Card:
|
|
|
|
Simple-Card specifies audio DAI connection 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,format : CPU/CODEC common audio format.
|
|
"i2s", "right_j", "left_j" , "dsp_a"
|
|
"dsp_b", "ac97", "pdm", "msb", "lsb"
|
|
- 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.
|
|
- dai-tdm-slot-num : Please refer to tdm-slot.txt.
|
|
- dai-tdm-slot-width : Please refer to tdm-slot.txt.
|
|
|
|
Required subnodes:
|
|
|
|
- simple-audio-card,cpu : CPU sub-node
|
|
- simple-audio-card,codec : CODEC sub-node
|
|
|
|
Required CPU/CODEC subnodes properties:
|
|
|
|
- sound-dai : phandle and port of CPU/CODEC
|
|
|
|
Optional CPU/CODEC subnodes properties:
|
|
|
|
- format : CPU/CODEC specific audio format if needed.
|
|
see simple-audio-card,format
|
|
- frame-master : bool property. add this if subnode is frame master
|
|
- bitclock-master : bool property. add this if subnode is bitclock master
|
|
- bitclock-inversion : bool property. add this if subnode has clock inversion
|
|
- frame-inversion : bool property. add this if subnode has frame inversion
|
|
- 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)
|
|
|
|
Note:
|
|
* For 'format', 'frame-master', 'bitclock-master', 'bitclock-inversion' and
|
|
'frame-inversion', the simple card will use the settings of CODEC for both
|
|
CPU and CODEC sides as we need to keep the settings identical for both ends
|
|
of the link.
|
|
|
|
Example:
|
|
|
|
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";
|
|
|
|
dai-tdm-slot-num = <2>;
|
|
dai-tdm-slot-width = <8>;
|
|
|
|
simple-audio-card,cpu {
|
|
sound-dai = <&sh_fsi2 0>;
|
|
};
|
|
|
|
simple-audio-card,codec {
|
|
sound-dai = <&ak4648>;
|
|
bitclock-master;
|
|
frame-master;
|
|
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>;
|
|
};
|