AnsweredAssumed Answered

Linux iMX6Q ESAI bus multi-channel

Question asked by Claudio Mocci on Aug 3, 2018
Latest reply on Aug 6, 2018 by igorpadykov

Hi,

 

we have a custom board with iMX6q on it, and with three DAC and one ADC connected to the ESAI bus of the MX6. I managed to load the drivers for the four of them, but I still have problems on getting data from the I2S channel in two of them.

 

I checked with the oscilloscope the DATA0_OUT pin and it seems the only one working. How I can configure the esai driver to send data also on the other ports?

I am using the linux kernel for imx6 4.1.15

this is what i did in the devicetree file:

 

&esai {
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_esai>;
    #sound-dai-cells = <0>;
    assigned-clocks = <&clks IMX6QDL_CLK_ESAI_SEL>,
              <&clks IMX6QDL_CLK_ESAI_EXTAL>;
    assigned-clock-parents = <&clks IMX6QDL_CLK_PLL4_AUDIO_DIV>;
    assigned-clock-rates = <0>, <24576000>;
    fsl,mode = "i2s-master";
    status = "okay";
};

 

 

    soundcard1 {
        compatible = "fsl,imx6-sabreauto-cs42888",
                "fsl,imx-audio-cs42888";
        model = "imx-cs42888";
        esai-controller = <&esai 0>;
        audio-codec = <&codec1>;
        audio-routing = "LINEOUT", "DAC";
    };

 

soundcard2 {
        compatible = "fsl,imx6-sabreauto-cs42888",
                "fsl,imx-audio-cs42888";
        model = "imx-cs42888";
        esai-controller = <&esai 1>;
        audio-codec = <&codec1>;
        audio-routing = "LINEOUT1", "DAC1";
    };

 

soundcard3 {
        compatible = "fsl,imx6-sabreauto-cs42888",
                "fsl,imx-audio-cs42888";
        model = "imx-cs42888";
        esai-controller = <&esai 2>;
        audio-codec = <&codec3>;
        audio-routing = "LINEOUT2", "DAC2";
    };

Outcomes