I2s sound card master clock problem

@radxa Hi!

I’ve got a soundcard based on es8388. Radxa Zero3W (is I2s clock master).
DTS enables clocks like SCLK and LRCK, but there is no MCLK (controlled with oscilloscope).
Card resides on I2S3 pins.
Below is the DTS file used:

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/rockchip.h>


/ {
        metadata {
                title = "ES8388 I2S sound";
                compatible = "radxa,zero3";
                category = "audio";
                description = "ES8388 I2S sound";
                exclusive = "i2s3_2ch";
        };
};

&i2s3_2ch {
        pinctrl-0 = <&i2s3m0_lrck &i2s3m0_mclk &i2s3m0_sclk &i2s3m0_sdi &i2s3m0_sdo>;
        status = "okay";
};


&{/} {
        es8388_mclk: codec-mclk {
                compatible = "fixed-clock";
                #clock-cells = <0>;
                clock-frequency = <12288000>;
        };
};


&i2c4 {
        status = "okay";
        #address-cells = <1>;
        #size-cells = <0>;

        es8388: es8388@11 {
                status = "okay";
                compatible = "everest,es8328", "everest,es8388";
                reg = <0x11>;
                clocks = <&es8388_mclk>;
                clock-names = "mclk";
                #sound-dai-cells = <0>;
        };
};
&{/} {
        sound_es8388_card: sound-es8388-card {
                #address-cells = <1>;
                #size-cells = <0>;
                status = "okay";
                compatible = "simple-audio-card";
                simple-audio-card,format = "i2s";
                simple-audio-card,mclk-fs = <256>;
                simple-audio-card,name = "rockchip,snd-es8388-codec";
                i2s-controller = <&i2s3_2ch>;
                codec = <&es8388>;
                simple-audio-card,dai-link@0 {
                        reg = <0>;
                        format = "i2s";
                        cpu {
                                sound-dai = <&i2s3_2ch>;
                        };
                        codec {
                                sound-dai = <&es8388>;
                        };
                };
        };
};

@ChenJaly can you take a look at this?

Radxa, where is “This”?
I saw all posts about I2s. But have no idea, why there is no MCLK signal. SCLK and LRCK are OK.

Since I have no related hardware, please help me test this dts:

/dts-v1/;
/plugin/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/pinctrl/rockchip.h>
#include <dt-bindings/clock/rk3568-cru.h>

/ {
    metadata {
        title = "ES8388 I2S sound";
        compatible = "radxa,zero3";
        category = "audio";
        description = "ES8388 I2S sound";
        exclusive = "i2s3_2ch";
    };
};

&i2s3_2ch {
    status = "okay";
};

&i2c4 {
    status = "okay";
    #address-cells = <1>;
    #size-cells = <0>;

    es8388: es8388@11 {
        status = "okay";
        #sound-dai-cells = <0>;
        compatible = "everest,es8388", "everest,es8323";
        reg = <0x11>;
        clocks = <&cru I2S3_MCLKOUT>;
        clock-names = "mclk";
        assigned-clocks = <&cru I2S3_MCLKOUT>, <&cru I2S3_MCLK_IOE>;
        assigned-clock-rates = <12288000>;
        assigned-clock-parents = <&cru I2S3_MCLKOUT_TX>, <&cru I2S3_MCLKOUT>;
        pinctrl-names = "default";
        pinctrl-0 = <&i2s3m0_mclk>;
	};
};

&{/} {
        sound_es8388_card: sound-es8388-card {
                #address-cells = <1>;
                #size-cells = <0>;
                status = "okay";
                compatible = "simple-audio-card";
                simple-audio-card,format = "i2s";
                simple-audio-card,mclk-fs = <256>;
                simple-audio-card,name = "rockchip,snd-es8388-codec";
                i2s-controller = <&i2s3_2ch>;
                codec = <&es8388>;
                simple-audio-card,dai-link@0 {
                        reg = <0>;
                        format = "i2s";
                        cpu {
                                sound-dai = <&i2s3_2ch>;
                        };
                        codec {
                                sound-dai = <&es8388>;
                        };
                };
        };
};

Just wait some minutes… Recompiling…

MCLK OK!!!
Thanx!
Digging other things…

Am I correct (for Zero 3):
I2S audio card -> I2S-TDM -> simple audio card -> CPU…
audio card is controlled via I2C.

I’ve get 16 bit/48000/stereo unmodulated noise only without any music.

Please describe the specific pin connection