I2s input slave mode on Imx6q-sabresd (AUD4)

cancel
Showing results for 
Search instead for 
Did you mean: 

I2s input slave mode on Imx6q-sabresd (AUD4)

1,287 Views
Contributor I

Hi there Freescale Community,

I've spent lot of time trying to get an audio i2s input signal into the Sabre Board with no success.

Im using kernel 3.14, but I can change it if that could solve my problem.

The signal is connected to the AUD4 Tx pins ( also tried in Rx) and I could record audio from that signal configuring the external device as an slave.

THe point is that the external device shoulld work as a master, and I can't get the externals clocks (BCLK,FSYNC) into de wm8962 sound card.

here my audmux and ssi2 configurartion:

- imx6qdl-sabresd.dtsi

sound {

                compatible = "fsl,imx6q-sabresd-wm8962",

                           "fsl,imx-audio-wm8962";

                model = "wm8962-audio";

                ssi-controller = <&ssi2>;

                audio-codec = <&codec>;

                audio-routing =

                        "Headphone Jack", "HPOUTL",

                        "Headphone Jack", "HPOUTR",

                        "Ext Spk", "SPKOUTL",

                        "Ext Spk", "SPKOUTR",

                        /*"AMIC", "MICBIAS",*/

                        "MICBIAS", "AMIC",

                        "DMIC", "MICBIAS",

                        "DMICDAT", "DMIC",

                        "IN3R", "MICBIAS";

                mux-int-port = <4>;

                mux-ext-port = <2>;

                hp-det-gpios = <&gpio7 8 1>;

                mic-det-gpios = <&gpio1 9 1 >;

        };

pinctrl_audmux: audmuxgrp {

                        fsl,pins = <

                                MX6QDL_PAD_SD2_DAT0__AUD4_RXD   0x130b0

                                MX6QDL_PAD_SD2_DAT3__AUD4_TXC   0x130b0

                                MX6QDL_PAD_SD2_DAT2__AUD4_TXD   0x110b0

                                MX6QDL_PAD_SD2_DAT1__AUD4_TXFS  0x130b0

                        >;

                };+

........

&ssi2{

        status="okay";

        fsl,mode = "i2s-slave";

};

- imx6qdl.dtsi

ssi2: ssi@0202c000 {

                                        #sound-dai-cells = <0>;

                                        compatible = "fsl,imx6q-ssi",

                                                        "fsl,imx51-ssi";

                                        reg = <0x0202c000 0x4000>;

                                        fsl,mode = "i2s-slave";

                                        fsl,synchronous-mode;

                                        interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>;

                                        clocks = <&clks IMX6QDL_CLK_SSI2_IPG>,

                                                 <&clks IMX6QDL_CLK_SSI2>;

                                        clock-names = "ipg", "baud";

                                        dmas = <&sdma 41 1 0>,

                                               <&sdma 42 1 0>;

                                        dma-names = "rx", "tx";

                                        fsl,fifo-depth = <15>;

                                        status = "okay";

                                };

.....

I also don't undestand very good which is the codec function (wm8962) in all the sabre schema

I would appreciate any suggestion.

Thanks a lot and best regards.

Labels (1)
0 Kudos
1 Reply

27 Views
NXP TechSupport
NXP TechSupport

Hi Jordi

when external codec should work as a master, it should output externals clocks

(BCLK,FSYNC) from wm8962, for that one needs to program wm8962 MSTR register

bit 6 =1 = Master mode (p.139 http://www.cirrus.com/en/pubs/proDatasheet/WM8962_v4.2.pdf )

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos