Re: Simple-card without codec for testing purpose

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



To answer to myself:
- there are some "virtual" codecs available : "bt-sco", "linux,spdif-dit" and "linux,spdif-dir". but none of them is fully generic. - a "snd-soc-dummy-dai" codec is implemented in soc-utils.c. yet, no device-tree bindings are available, except if a patch like the following one is applied

--- a/sound/soc/soc-utils.c
+++ b/sound/soc/soc-utils.c
@@ -19,6 +19,7 @@
 #include <sound/pcm.h>
 #include <sound/pcm_params.h>
 #include <sound/soc.h>
+#include <linux/module.h>

 int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots)
 {
@@ -151,9 +152,18 @@ static int snd_soc_dummy_remove(struct platform_device *pdev)
     return 0;
 }

+#ifdef CONFIG_OF
+static const struct of_device_id soc_dummy_ids[] = {
+    { .compatible = "linux,snd-soc-dummy", },
+    { }
+};
+MODULE_DEVICE_TABLE(of, soc_dummy_ids);
+#endif
+
 static struct platform_driver soc_dummy_driver = {
     .driver = {
         .name = "snd-soc-dummy",
+        .of_match_table = of_match_ptr(soc_dummy_ids),
     },
     .probe = snd_soc_dummy_probe,
     .remove = snd_soc_dummy_remove,



Once done, here is a DTS example for imx6sl:

&audmux {
    ssi3 {
        fsl,audmux-port = <6>;
        fsl,port-config = <
#ifdef SSI_TEST_MASTER
            0x00000000
#else
            (IMX_AUDMUX_V2_PTCR_TFSDIR |
            IMX_AUDMUX_V2_PTCR_TFSEL(4) |
            IMX_AUDMUX_V2_PTCR_TCLKDIR |
            IMX_AUDMUX_V2_PTCR_TCSEL(4))
#endif
            IMX_AUDMUX_V2_PDCR_RXDSEL(4)
        >;
    };

    port5 {
        fsl,audmux-port = <4>;
        fsl,port-config = <
#ifdef SSI_TEST_MASTER
            (IMX_AUDMUX_V2_PTCR_TFSDIR |
            IMX_AUDMUX_V2_PTCR_TFSEL(6) |
            IMX_AUDMUX_V2_PTCR_TCLKDIR |
            IMX_AUDMUX_V2_PTCR_TCSEL(6))
#else
            0x00000000
#endif
            IMX_AUDMUX_V2_PDCR_RXDSEL(6)
        >;
    };
};


&ssi3 {
    status = "okay";

    // select the a clock parent suitable for 48000 Hz sampling rate
    assigned-clocks = <&clks IMX6SL_CLK_SSI3_SEL>, <&clks IMX6SL_CLK_SSI3>;
    assigned-clock-parents = <&clks IMX6SL_CLK_PLL4_AUDIO_DIV>;
    assigned-clock-rates = <0>, <49152000>;
};

/ {
    codec_test: codec_test {
        compatible = "linux,snd-soc-dummy";
        #sound-dai-cells = <0>;
    };


    sound@2 {
        compatible = "simple-audio-card";
        simple-audio-card,name = "test";
        simple-audio-card,format="dsp_a";

#ifdef SSI_TEST_MASTER
        simple-audio-card,frame-master = <&sound2_ssi>;
        simple-audio-card,bitclock-master = <&sound2_ssi>;
#else
        simple-audio-card,frame-master = <&codec_test>;
        simple-audio-card,bitclock-master = <&codec_test>;
#endif
            sound2_ssi: simple-audio-card,cpu {
                sound-dai = <&ssi3>;
                system-clock-frequency = <1536000>;
                dai-tdm-slot-num = <2>;
                dai-tdm-slot-width = <16>;
            };
            sound2codec: simple-audio-card,codec {
                sound-dai = <&codec_test>;
            };
    };

};




Le 20/11/2015 02:24, Caleb Crome a écrit :
I've been wondering about that too. I don't know how to do it easily.

-Caleb


On Thu, Nov 19, 2015 at 9:26 AM, arnaud.mouiche@xxxxxxxxxxx
<arnaud.mouiche@xxxxxxxxxxx> wrote:
Hello,

I'm starting debugging / testing all the fsl_ssi issues (see Caleb's
previous post).

First step I just need to setup a DTS entry for  "simple-card" + fake codec
to generate arbitrary PCM bus output (1 to 16 channels, various TDM, various
sampling rate and format and master/slave role)
I will then plug my logical analyser, or do some loopback, or plug a FPGA to
generate/check some patterns.

Is there such "fake codec" somewhere.  Indeed, something that look like the
bt-sco codec, but without rate/format/channel limitations ?
Or does the "simple-card" even needs one ?

Regards,
Arnaud

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel




[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux